{"version":3,"sources":["webpack://web-frontend/./core.css","webpack://web-frontend/./bulma.sass","webpack://web-frontend/./core.css?756d","webpack://web-frontend/./bulma.sass?8a13","webpack://web-frontend/./app.tsx","webpack://web-frontend/./components/banner.tsx","webpack://web-frontend/./components/bannerBackgroundImage.tsx","webpack://web-frontend/./components/branchLoginForm.tsx","webpack://web-frontend/./components/disclosureModal.tsx","webpack://web-frontend/./components/footer.tsx","webpack://web-frontend/./components/headerPane.tsx","webpack://web-frontend/./components/header/accountLink.tsx","webpack://web-frontend/./components/header/index.tsx","webpack://web-frontend/./components/header/option1.tsx","webpack://web-frontend/./components/header/option2.tsx","webpack://web-frontend/./components/header/option3.tsx","webpack://web-frontend/./components/header/unknownLink.tsx","webpack://web-frontend/./components/logo.tsx","webpack://web-frontend/./components/pdf.tsx","webpack://web-frontend/./components/searchField.tsx","webpack://web-frontend/./components/table.tsx","webpack://web-frontend/./index.tsx","webpack://web-frontend/./lib/config.ts","webpack://web-frontend/./lib/googleAnalytics.ts","webpack://web-frontend/./pages/account/create.tsx","webpack://web-frontend/./pages/account/loginOrRegister.tsx","webpack://web-frontend/./pages/landing/components/faqItem.tsx","webpack://web-frontend/./pages/landing/components/faqPane.tsx","webpack://web-frontend/./pages/landing/components/getStartedPane.tsx","webpack://web-frontend/./pages/landing/components/product.tsx","webpack://web-frontend/./pages/landing/components/productsPane.tsx","webpack://web-frontend/./pages/landing/components/testimonyItem.tsx","webpack://web-frontend/./pages/landing/components/testimonyPane.tsx","webpack://web-frontend/./pages/landing/landing.tsx","webpack://web-frontend/../web-shared/components/button.tsx","webpack://web-frontend/../web-shared/components/externalLink.tsx","webpack://web-frontend/../web-shared/components/highlightText.tsx","webpack://web-frontend/../web-shared/components/htmlString.tsx","webpack://web-frontend/../web-shared/components/icon.tsx","webpack://web-frontend/../web-shared/components/input.tsx","webpack://web-frontend/../web-shared/components/loadingBar.tsx","webpack://web-frontend/../web-shared/components/loadingMessage.tsx","webpack://web-frontend/../web-shared/components/masonry.tsx","webpack://web-frontend/../web-shared/components/modal.tsx","webpack://web-frontend/../web-shared/components/nonIdealState.tsx","webpack://web-frontend/../web-shared/components/pager.tsx","webpack://web-frontend/../web-shared/components/relativeTime.tsx","webpack://web-frontend/../web-shared/components/routing/link.tsx","webpack://web-frontend/../web-shared/components/routing/privateRoute.tsx","webpack://web-frontend/../web-shared/components/routing/publicRoute.tsx","webpack://web-frontend/../web-shared/components/scrollIntoView.tsx","webpack://web-frontend/../web-shared/components/section.tsx","webpack://web-frontend/../web-shared/components/sectionHeader.tsx","webpack://web-frontend/../web-shared/components/spinners/BarLoader.tsx","webpack://web-frontend/../web-shared/components/spinners/ClipLoader.tsx","webpack://web-frontend/../web-shared/components/spinners/Spinner.tsx","webpack://web-frontend/../web-shared/components/steps.tsx","webpack://web-frontend/../web-shared/components/tabs/index.tsx","webpack://web-frontend/../web-shared/components/tabs/managedTabs.tsx","webpack://web-frontend/../web-shared/components/tabs/tab.tsx","webpack://web-frontend/../web-shared/components/templateString.tsx","webpack://web-frontend/../web-shared/components/timeline.tsx","webpack://web-frontend/../web-shared/components/toggle.tsx","webpack://web-frontend/../web-shared/components/tooltip.tsx","webpack://web-frontend/../web-shared/components/uploadModal.tsx","webpack://web-frontend/../web-shared/components/withAddon.tsx","webpack://web-frontend/../web-shared/lib/ajax.ts","webpack://web-frontend/../web-shared/lib/auth.ts","webpack://web-frontend/../web-shared/lib/base64ToBlob.ts","webpack://web-frontend/../web-shared/lib/chunk.ts","webpack://web-frontend/../web-shared/lib/clamp.ts","webpack://web-frontend/../web-shared/lib/classNames.ts","webpack://web-frontend/../web-shared/lib/convert/hexToCssVars.ts","webpack://web-frontend/../web-shared/lib/convert/hexToRgb.ts","webpack://web-frontend/../web-shared/lib/dbg.ts","webpack://web-frontend/../web-shared/lib/deepCompare.ts","webpack://web-frontend/../web-shared/lib/format/index.ts","webpack://web-frontend/../web-shared/lib/googleAnalytics.ts","webpack://web-frontend/../web-shared/lib/guid.ts","webpack://web-frontend/../web-shared/lib/initialize.ts","webpack://web-frontend/../web-shared/lib/isDevelopment.ts","webpack://web-frontend/../web-shared/lib/isPoBox.ts","webpack://web-frontend/../web-shared/lib/isTin.ts","webpack://web-frontend/../web-shared/lib/objectKeysToLowerCase.ts","webpack://web-frontend/../web-shared/lib/renderComponent.ts","webpack://web-frontend/../web-shared/lib/rxStore.ts","webpack://web-frontend/../web-shared/lib/serializeFormData.ts","webpack://web-frontend/../web-shared/lib/shadeColor.ts","webpack://web-frontend/../web-shared/lib/signalr.ts","webpack://web-frontend/../web-shared/lib/sort.ts","webpack://web-frontend/../web-shared/lib/throttle.ts","webpack://web-frontend/../web-shared/lib/usStatesAndTerritories.ts","webpack://web-frontend/../web-shared/lib/useApi.ts","webpack://web-frontend/../web-shared/lib/useEffectDeep.ts","webpack://web-frontend/../web-shared/lib/useHeaderLinks.ts","webpack://web-frontend/../web-shared/lib/useInterval.ts","webpack://web-frontend/../web-shared/lib/useMedia.ts","webpack://web-frontend/../web-shared/lib/useWindowScroll.ts","webpack://web-frontend/../web-shared/lib/useWindowSize.ts","webpack://web-frontend/../web-shared/lib/validatePasswordComplexity.ts","webpack://web-frontend/../web-shared/pages/instructions.ts","webpack://web-frontend/../web-shared/pages/login.tsx","webpack://web-frontend/../web-shared/pages/logoff.tsx","webpack://web-frontend/../web-shared/pages/notFound.tsx","webpack://web-frontend/../web-shared/store/auth.ts","webpack://web-frontend/../web-shared/store/ui.ts","webpack://web-frontend/webpack/bootstrap","webpack://web-frontend/webpack/runtime/chunk loaded","webpack://web-frontend/webpack/runtime/create fake namespace object","webpack://web-frontend/webpack/runtime/load script","webpack://web-frontend/webpack/runtime/amd define","webpack://web-frontend/webpack/runtime/amd options","webpack://web-frontend/webpack/runtime/compat get default export","webpack://web-frontend/webpack/runtime/define property getters","webpack://web-frontend/webpack/runtime/ensure chunk","webpack://web-frontend/webpack/runtime/get javascript chunk filename","webpack://web-frontend/webpack/runtime/global","webpack://web-frontend/webpack/runtime/harmony module decorator","webpack://web-frontend/webpack/runtime/hasOwnProperty shorthand","webpack://web-frontend/webpack/runtime/make namespace object","webpack://web-frontend/webpack/runtime/node module decorator","webpack://web-frontend/webpack/runtime/publicPath","webpack://web-frontend/webpack/runtime/jsonp chunk loading","webpack://web-frontend/webpack/startup"],"names":["exports","___CSS_LOADER_API_IMPORT___","push","module","id","api","content","__esModule","default","options","exported","locals","ForgotPage","React","ResetPage","VerifyPage","AccountSetupPage","MainLandingPage","QuestionsPage","AboutPage","UserPage","ApplicationDetailPage","RenewalDetailPage","ActionPage","SignupPage","ApplicationRenderer","AdminPage","AdminAppsPage","AdminAppDetailPage","PPPAdminPage","PPPAdminDetailPage","PppApplicationPage","ForgivenessApplicationPage","ForgivenessAdminPage","ForgivenessAdminDetailPage","AdminRoute","children","title","token","component","rest","render","props","authState","auth","admin","globalAdmin","NotFoundPage","initializeGoogleAnalytics","bugsnagClient","initializeBugsnag","ui","config","App","s","expires","location","useLocation","gaPageView","setState","Date","getTime","expireMs","timeout","setTimeout","clearTimeout","isPpp","securedSites","hasSecured","length","hasExpressLender","includes","hexToCssVars","okText","fullHeight","skipRedirect","option","fallback","spinner","exact","path","LogoffPage","LoginRegisterPage","applicationType","map","key","l","url","componentProps","faqConfig","LandingPage","HotApp","hot","Styles","styled","useLink","substr","Banner","showButton","banner","productNameOnly","highlightColor","backgroundColor","boxOpacity","buttons","b","color","linkUrl","toLowerCase","text","details","textColor","buttonText","imageUrl","className","style","position","overflow","boxShading","src","indexOf","bannerText","fontWeight","filter","i","contrastRatio","Color","type","borderColor","shadeColor","margin","dangerouslySetInnerHTML","__html","href","to","getHeight","w","window","innerWidth","BannerBackgroundImage","width","Math","ceil","imageSrc","BranchLoginForm","onClose","busy","error","userNameRef","passwordRef","e","preventDefault","current","value","response","errorMessage","maxWidth","padding","onSubmit","marginTop","size","htmlFor","ref","disabled","fullWidth","DisclosureModal","name","onOk","renewal","ppl","ppf","parameters","ready","failed","results","setResults","tokenSource","undefined","postJson","isError","payload","cancelSource","Axios","getDisclosureData","cancel","loadingMessage","fullPage","cancelText","isReady","bodyStyle","textAlign","icon","subTitle","colorSubTitle","pdfContent","downloadLink","documentMd5","scale","onDocumentComplete","gaEvent","onDocumentFailed","loading","versionString","Footer","branchLoginModalOpen","branchUser","footerImages","img","alt","target","onClick","HeaderPane","banners","small","useWindowSize","headerHeight","document","getElementsByClassName","clientHeight","bannerDivs","settings","dots","arrows","infinite","speed","slidesToShow","slidesToScroll","autoplay","autoplaySpeed","fade","swipe","draggable","_buildBanner","classNames","height","StyledListItem","AccountLink","email","expireDate","utcTime","Header","p","StyledDiv","NavbarEnd","NavItem","startsWith","userName","headerLinks","hideLoginLinks","siteLogo","clientLogo","v","isHidden","Logo","Menu","pageLinks","authLinks","open","setOpen","useOnClickOutside","link","role","userId","scrolled","useWindowScrolledTo","y","useWindowScrollPosition","opacity","max","min","fontSize","UnknownLink","urlString","h2","h3","h4","pdfjs","PdfjsWorker","PdfPage","page","canvasRef","renderPdf","canvas","context","getContext","viewport","getViewport","clearRect","renderTask","canvasContext","promise","getPdfFromByteArray","bytes","atob","byteLength","byteArray","Uint8Array","index","charCodeAt","Pdf","file","loadingScreen","pages","state","fetchPdf","loadingTask","data","isEvalSupported","pdf","numPages","getPage","ex","marginBottom","download","StyledColumn","SearchField","label","labelInfo","labelSize","tooltip","labelInfoFull","controlPaddingTopEm","inputAddonLeft","inputAddonRight","buttonRight","stack","textOnly","Container","errors","c","mappedChildren","saveSort","sortRule","localStorage","setItem","JSON","stringify","loadSort","parse","getItem","desc","Table","columns","search","narrow","sticky","additionalState","useTable","autoResetSortBy","autoResetGlobalFilter","initialState","sortBy","useGlobalFilter","useSortBy","getTableProps","getTableBodyProps","headerGroups","rows","prepareRow","setGlobalFilter","headerGroup","getHeaderGroupProps","headers","column","getHeaderProps","getSortByToggleProps","isSorted","isSortedDesc","row","getRowProps","cells","cell","getCellProps","isDevelopment","metaData","client","ErrorBoundary","getPlugin","ReactDOM","getElementById","getConfigFromElement","initializeGa","Create","history","useHistory","loggingIn","useFormState","withIds","onBlur","classList","add","form","select","date","password","postData","Name","values","Email","newEmail","Password","newPassword","ReferralSource","referral","BirthDate","birthDate","BranchUser","loginResponse","clear","IsError","ErrorMessage","from","replace","fluid","tag","tabIndex","required","placeholder","hasLoggedInBefore","showOnlineBankingNote","FaqItem","question","answer","FaqPane","landing","faqs","items","fontStyle","marginLeft","f","pathname","GetStartedPane","heading","Product","feature","split","d","trim","summaryIcon","ProductsPane","features","featureSummaryText","highlightStyle","productHtml","summary","TestimonyItem","TestimonyPane","testimonies","t","customerName","formatUtcDate","testimonyDate","useHeaderLinks","getStarted","favorite","pageConfig","body","Button","colorClass","flex","noBtnClass","btnStyle","ExternalLink","onProceed","hostname","HighlightText","query","queryStr","regex","RegExp","styleText","Object","keys","join","html","a","getParagraphs","processMarkup","markupText","substring","HtmlString","Icon","widthEm","sizeEm","marginRight","Input","isValid","showValidation","iconClass","addon","LoadingBar","left","interval","this","setInterval","animate","bind","clearInterval","active","LoadingMessage","headerIcon","Masonry","elementType","iOS","navigator","test","userAgent","MSStream","StyledBackdrop","StyledModal","StyledHeader","StyledFooter","Modal","subtitle","footerText","fullScreen","_handleClose","stopPropagation","rootElemRef","createElement","appendChild","remove","onClickOutside","onEscapeKey","shards","NonIdealState","marginEm","pre","heightEm","Pager","totalResults","pageSize","hideResults","maxPages","isNaN","onPageChange","numeral","format","getNextTimeout","ageInSeconds","RelativeTime","dateOnly","count","setCount","valueOf","next","timer","relativeTime","formatRelativeDateTime","formatUtcDateTime","whitelistKeys","Link","innerRef","toWithQuery","URLSearchParams","keepKeys","Array","k","newSearch","forEach","append","get","toString","PrivateRoute","pageBaseName","PublicRoute","ScrollIntoView","nodeRef","behavior","scrollMode","block","scrollIntoView","Section","css","_colors","none","white","primary","secondary","inverse","isSticky","stickyPos","container","StyledRoot","SectionHeader","center","direction","headerStyle","justifyContent","BarLoader","ClipLoader","HorizontalSpinner","CircleSpinner","Spinner","Component","inlineText","StyledSteps","Steps","vertical","currentStatus","horizontal","mapCloneElement","item","itemStyles","flexBasis","itemProps","stepNumber","status","StyledStep","Step","itemWidth","description","iconNode","STEP_STATUS_ICON","styles","finish","wait","process","func","child","handle","call","Tabs","tabPaneRenderer","tabChildren","defaultTab","findIndex","selectedTab","align","tabsRef","onTabChange","tab","tabFluid","tabs","hidden","cls","rendered","st","paddingTop","mt","paddingBottom","mb","top","preTabContent","TabNav","allTabErrors","adminState","reduce","all","tabErrors","validator","indexOverride","subTabErrors","scrollToTop","el","offsetTop","scrollTo","ManagedTabs","selectedTabId","setSelectedTabId","navigation","hashUpdate","submitting","setSubmitting","showErrors","setShowErrors","useMeasure","refMain","tabId","setTabId","changeTab","baseUrl","setFromHash","hash","onhashchange","visibleTabs","mainTab","find","mainTabIndex","visibleSubTabs","hasSubTabs","subTab","subTabIndex","visibleErrors","Set","msg","hide","allErrors","isLast","submitStatus","submit","submitText","hideNav","tabsHeader","onDoubleClick","field","Tab","regexReplace","TemplateString","template","variables","asHtml","vars","objectKeysToLowerCase","parts","prop","isVar","hasOwnProperty","variableValue","isObjectVar","highlight","getFormattedData","activities","logTimeUtc","userIp","dateStr","list","time","Timeline","users","dates","hoverUserId","setHoverUserId","hoverIp","setHoverIp","onHoverUser","hovering","onHoverIp","ip","user","u","TimlineItem","fullName","hover","onMouseOver","onMouseOut","Toggle","trueText","falseText","showText","Tooltip","UploadModal","onComplete","uploadUrl","uploadFields","accept","uploading","setUploading","setHighlight","files","setFiles","fileInputRef","cancelTokenRef","addFiles","fileList","newFiles","pct","fs","errorMsg","formData","FormData","String","postForm","round","loaded","total","reason","message","hasBegun","some","isComplete","every","nodrop","onDragOver","dataTransfer","dropEffect","onDragLeave","onDrop","click","multiple","onChange","_f","formatNumber","beginUpload","WithAddon","addonLeft","cancelToken","onUploadProgress","ajax","method","init","json","getToken","isFormData","Authorization","skipAuthorization","currentClientId","Number","axios","serializeFormData","statusText","payloadError","error_message","loginDataKey","branchLoginDataKey","getBranchLoginData","getTokenStorage","setBranchLoginData","storage","sessionStorage","err","getFakeStorage","clearBranchLoginData","removeItem","getBranchUserToken","branchLoginData","tokenExpirationString","tokenExpiration","access_token","getLoginData","setLoginData","remember","cookie","clearLoginData","loginData","ignoreExpires","fakeStorage","_index","getLocalStorage","global","base64ToBlob","base64","mimetype","slicesize","bytechars","bytearrays","offset","slice","bytenums","bytearray","Blob","chunk","arr","len","chunks","n","clamp","hasOwn","classes","arg","isArray","inner","apply","h","hexToRgb","r","g","dbg","console","groupCollapsed","groupEnd","deepCompare","o1","o2","leftChain","rightChain","compare2Objects","x","pop","asLocalDate","dateString","toDate","getUTCHours","getUTCFullYear","getUTCMonth","getUTCDate","parseISO","formatBase","fmt","parser","formatLocalDate","addSuffix","d1","d2","formatDistance","isDateValid","formatYesNo","daysElapsedInYear","moize","differenceInDays","startOfYear","repeatString","repeatCount","TypeError","str","RangeError","Infinity","floor","maxCount","log","formatMoney","decimals","hideZeroDecimal","formatNumberSuffix","num","getDecimalFormat","decimalFormat","googleAnalyticsCodes","enabled","clientId","gaCode","gaConfig","gtag","linker","domains","user_id","send_page_view","page_path","page_search","page_hash","category","action","properties","gaUserCreate","gaLogin","s4","random","guid","envConfig","bugsnag","apiKey","releaseStage","env","use","bugsnagReact","elementId","element","textContent","innerText","innerHTML","poBoxRegex","isPoBox","address","match","isTin","tinString","tin","input","newObj","renderComponent","sheet","ServerStyleSheet","ReactDOMServer","collectStyles","styleTags","getStyleTags","getElementsByTagName","outerHTML","printHtml","iframe","doc","contentDocument","contentWindow","write","close","focus","print","removeChild","printComponent","withDevTools","__REDUX_DEVTOOLS_EXTENSION__","RxStore","computed","patchFilter","stateSubject","devTools","patches","BehaviorSubject","connect","subscribe","m","pipe","distinctUntilChanged","getValue","fn","nextState","produce","getStateSnapshot","_patches","send","actionName","actions","working","update","actionState","partialState","currentState","assign","selector","Error","stackLine","exec","val","setVal","getCurrentState","selectSubscription","equals","unsubscribe","formOptions","bindField","formState","updating","focused","subscriptions","submitAttempted","formStateRef","fields","updateFn","addField","fieldProps","updateRxState","bindText","bindTextMultiple","defaultValue","bindNumeric","formatted","currency","percentage","comma","bindBoolean","bindDate","mask","index2","isSelectorFn","parseFn","isFocused","maskRegex","nv","getSelector","updateSelector","updateLocalState","updateRx","externalChange","maskValue","maskedValue","inputType","j","numericOptions","valueKey","valueOverride","checked","selectedOptions","o","updateOnBlur","activeElement","disableOnBlur","nodeName","positive","whole","dec","fnString","result","params","executeSelector","i2","normalizedParts","getSelectorPaths","replaceIndexParts","flatMap","shift","obj","encodeURIComponent","percent","p2","sbcRip","RGB","inputParts","parseInt","parseFloat","colorStr","colorHex","keepAliveWarnAt","pingInterval","stringifySend","SignalR","version","negotiateCancelSource","startCancelSource","beatHandle","transportTimeoutHandle","transportConnectTimeout","totalTransportConnectTimeout","reconnectTimeout","pingIntervalId","beatInterval","keepAliveData","disconnectTimeout","reconnectWindow","lastMessageAt","lastActiveAt","configuredStopReconnectingTimeout","socket","appRelativeUrl","startRequested","startCompleted","connectionStopped","redirectQs","qs","messageId","webSocketServerUrl","buffer","onStartEvent","SimpleEventDispatcher","onStartingEvent","onReceivedEvent","onErrorEvent","onConnectionSlowEvent","onReconnectingEvent","onReconnectEvent","onStateChangedEvent","onDisconnectEvent","dispatch","asEvent","expectedState","newState","oldState","pingServer","addQs","pingResponse","Response","reconnecting","negotiate","res","ConnectionId","ConnectionToken","KeepAliveTimeout","activated","timeoutWarning","Url","DisconnectTimeout","TransportConnectTimeout","failCalled","onFailed","transportFailed","opened","WebSocket","wsProtocol","protocol","host","getUrl","onopen","clearReconnectTimeout","changeState","that","onclose","event","wasClean","reconnect","onmessage","processMessages","initReceived","ajaxPost","prepareQueryString","getAjaxUrl","startResponse","stop","monitorKeepAlive","startHeartbeat","configurePingInterval","drainBuffer","addEventListener","tryBuffer","minData","onInitialized","markLastMessage","maximizePersistentResponse","MessageId","Messages","triggerReceived","tryInitialize","persistentResponse","Initialized","wrappedError","preparedUrl","now","appender","firstChar","charAt","notifyServer","abort","stopMonitoringKeepAlive","clearBuffer","monitoring","reconnectKeepAliveUpdate","sub","verifyLastActive","ensureReconnectingState","start","beat","checkIfAlive","markActive","timeElapsed","userNotified","stopReconnectingTimeout","onReconnecting","onStateChanged","LOGGING","logging","toTimeString","debug","minPersistentResponse","C","M","S","ShouldReconnect","T","GroupsToken","G","E","wsClient","sort","array","compareFn","throttle","last","deferTimer","threshhold","scope","args","arguments","states","territories","useApi","requestPayload","setRequestPayload","__execute","debouncedPayload","useDebounce","debounce","setResultState","useEffectDeep","valid","then","catch","executeNow","deps","isFirst","prevDeps","isSame","links","hideLogin","useInterval","callback","delay","savedCallback","breakpoints","xxs","xs","sm","md","lg","getMediaQueries","bps","bpArray","bp","q","mediaQueries","useMedia","useState","useEffect","mediaQueryLists","mediaQueryList","matchMedia","getState","matches","listener","addListener","removeListener","throttleMs","pageXOffset","pageYOffset","scroll","setScroll","removeEventListener","yOffset","isScrolled","events","onResize","innerHeight","setSize","delete","validatePasswordComplexity","StyledInstructions","LoginForm","remember_default","checkbox","expiredUrl","autoFocus","back","AuthService","onAuthChangeCallback","onAuthChange","ClientId","Admin","GlobalAdmin","viewDemographics","ViewDemographics","lenderAssisted","LenderAssisted","grant_type","username","error_description","error_uri","visible","tokenStorage","emailVerified","UIService","appName","pageTitle","__webpack_module_cache__","deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdD","amdO","O","chunkIds","priority","notFulfilled","fulfilled","splice","getter","getPrototypeOf","mode","ns","create","def","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","Promise","promises","globalThis","Function","hmd","set","prototype","done","script","needAttach","scripts","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","onerror","onload","doneFns","parentNode","head","Symbol","toStringTag","nmd","paths","installedChunks","installedChunkData","resolve","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"mappings":"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","file":"app.9d174b2fddac3e26f0f7.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"html, body { width: 100%; height: 100%; margin: 0; padding: 0; background-color: #efefef; font-size: 16px; }\\r\\nhtml { overflow-x: visible; overflow-y: visible; }\\r\\nbody.noscroll { overflow: hidden; }\\r\\n.row { margin-right: inherit; margin-left: inherit; }\\r\\n.center { text-align: center; }\\r\\n.apr { font-size: 16pt; }\\r\\n.select.select select { border: 1px solid #dbdbdb; height: auto; }\\r\\n.select.select select:hover { border-color: #b5b5b5; }\\r\\n.select.select select:disabled { border-color: #dbdbdb; }\\r\\n\\r\\ntextarea.input,\\r\\n.select select,\\r\\na.button.is-static,\\r\\ninput.input {\\r\\n\\tborder-radius: 2px;\\r\\n\\tfont-size: 0.75rem;\\r\\n}\\r\\n\\r\\n/* Bulma tweaks */\\r\\np { margin: 0 0 10px; }\\r\\n.heading { text-transform: none; letter-spacing: normal; margin-bottom: 0.5em; }\\r\\n\\r\\n.list-group-item { display: flex; align-items: baseline; border: 1px solid #ddd; padding: 10px 5px; margin-bottom: -1px; background-color: #fff; }\\r\\n.list-group-item > input { position: relative; top: 2px; margin: 0 0.5em; }\\r\\n.list-group-item:first-child {\\r\\n border-top-right-radius: 4px;\\r\\n border-top-left-radius: 4px;\\r\\n}\\r\\n.list-group-item:last-child {\\r\\n margin-bottom: 0;\\r\\n border-bottom-right-radius: 4px;\\r\\n border-bottom-left-radius: 4px;\\r\\n}\\r\\nlabel.list-group-item { cursor: pointer; }\\r\\nlabel.list-group-item.selected {\\r\\n background-color: #244062;\\r\\n background-color: var(--color-secondary);\\r\\n color: #fff;\\r\\n}\\r\\nlabel.list-group-item:hover {\\r\\n background-color: #c8cfd8;\\r\\n background-color: var(--color-secondary-light-75);\\r\\n}\\r\\nlabel.list-group-item.selected:hover {\\r\\n background-color: #92a0b1;\\r\\n background-color: var(--color-secondary-light-50);\\r\\n}\\r\\n\\r\\n.message.is-danger .message-header { background-color: #c0504d; }\\r\\n.message.is-danger .message-body { border-color: #c0504d; color: #c0504d; }\\r\\n@media(max-width: 768px) {\\r\\n .container.is-fluid { padding: 0; }\\r\\n label.columns, label.columns:last-child,\\r\\n div.columns, div.columns:last-child { display: block; margin: 1em 0; }\\r\\n .column { padding: .75rem 0; }\\r\\n}\\r\\n.input[disabled] { border-color: #dbdbdb; opacity: 0.7; }\\r\\n\\r\\n.input[disabled], .textarea[disabled], .select select[disabled], fieldset[disabled] .input, fieldset[disabled] .textarea, fieldset[disabled] .select select, .select fieldset[disabled] select {\\r\\n border-color: #dbdbdb;\\r\\n}\\r\\n/* End Bulma tweaks */\\r\\n\\r\\ninput[type=checkbox], input[type=radio] {\\r\\n min-width: 1rem;\\r\\n}\\r\\n\\r\\ninput[data-error],\\r\\ntextarea[data-error],\\r\\nselect[data-error],\\r\\n.data-error {\\r\\n border-left: 2px solid #C0504D !important;\\r\\n}\\r\\n\\r\\na {\\r\\n color: #244062;\\r\\n color: var(--color-secondary);\\r\\n}\\r\\na.underline {\\r\\n text-decoration: underline;\\r\\n text-underline-position: under;\\r\\n}\\r\\n\\r\\n_:-ms-fullscreen, .column {}\\r\\n\\r\\n/* NavBar dropdown hover */\\r\\na.navbar-brand { padding-left: 6px; }\\r\\n\\r\\n.inline-link {\\r\\n font-weight: bold;\\r\\n text-decoration: underline;\\r\\n cursor: pointer;\\r\\n color: #F79646;\\r\\n}\\r\\n.inline-link:hover {\\r\\n color: #E26B0A;\\r\\n}\\r\\n\\r\\n.faqitem a { text-decoration: underline; font-weight: bold; }\\r\\n\\r\\n.faqExpand-enter { transition: max-height .25s; max-height: 0; }\\r\\n.faqExpand-enter.faqExpand-enter-active { max-height: 500px; }\\r\\n.faqExpand-leave { transition: max-height .25s; max-height: 500px; }\\r\\n.faqExpand-leave.faqExpand-leave-active { max-height: 0; }\\r\\n\\r\\n.slick-dots { bottom: -50px; z-index: 9; }\\r\\n.slick-next { right: 25px; }\\r\\n.slick-prev { left: 25px; }\\r\\n.slick-prev, .slick-next { top: 90%; z-index: 1; }\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"/*! bulma.io v0.9.3 | MIT License | github.com/jgthms/bulma */.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,.is-active.button{outline:none}[disabled].pagination-previous,[disabled].pagination-next,[disabled].pagination-link,[disabled].pagination-ellipsis,[disabled].file-cta,[disabled].file-name,.select select[disabled],[disabled].textarea,[disabled].input,[disabled].button,fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] .button{cursor:not-allowed}.is-unselectable,.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:\\\" \\\";display:block;height:.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.tabs:not(:last-child),.pagination:not(:last-child),.message:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:\\\"\\\";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,.4)}.is-small.modal-close,.is-small.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:\\\"\\\";display:block;height:1em;position:relative;width:1em}.hero-video,.is-overlay,.modal-background,.modal,.image.is-square img,.image.is-square .has-ratio,.image.is-1by1 img,.image.is-1by1 .has-ratio,.image.is-5by4 img,.image.is-5by4 .has-ratio,.image.is-4by3 img,.image.is-4by3 .has-ratio,.image.is-3by2 img,.image.is-3by2 .has-ratio,.image.is-5by3 img,.image.is-5by3 .has-ratio,.image.is-16by9 img,.image.is-16by9 .has-ratio,.image.is-2by1 img,.image.is-2by1 .has-ratio,.image.is-3by1 img,.image.is-3by1 .has-ratio,.image.is-4by5 img,.image.is-4by5 .has-ratio,.image.is-3by4 img,.image.is-3by4 .has-ratio,.image.is-2by3 img,.image.is-2by3 .has-ratio,.image.is-3by5 img,.image.is-3by5 .has-ratio,.image.is-9by16 img,.image.is-9by16 .has-ratio,.image.is-1by2 img,.image.is-1by2 .has-ratio,.image.is-1by3 img,.image.is-1by3 .has-ratio{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:14px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:Tahoma,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.42857143}a{color:#485fc7;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#da1039;font-size:.875em;font-weight:normal;padding:.25em .5em .25em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0 0 1px #485fc7}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #485fc7}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#485fc7;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#363636}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:transparent;color:#485fc7;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#485fc7;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.button.is-dark.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.button.is-dark.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.button.is-dark.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.button.is-dark:active,.button.is-dark.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.button.is-dark.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover,.button.is-primary.is-hovered{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary:focus,.button.is-primary.is-focused{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.button.is-primary.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary:active,.button.is-primary.is-active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted:hover,.button.is-primary.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined:hover,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined.is-focused{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-outlined.is-loading:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-outlined.is-loading:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined.is-focused{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light:hover,.button.is-primary.is-light.is-hovered{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light:active,.button.is-primary.is-light.is-active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#485fc7;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#3e56c4;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button.is-link:active,.button.is-link.is-active{background-color:#3a51bb;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#485fc7;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#485fc7}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#485fc7}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;color:#485fc7}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#485fc7;border-color:#485fc7;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #485fc7 #485fc7 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;box-shadow:none;color:#485fc7}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#485fc7}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #485fc7 #485fc7 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff1fa;color:#3850b7}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e6e9f7;border-color:transparent;color:#3850b7}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dce0f4;border-color:transparent;color:#3850b7}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#3488ce;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.button.is-info:active,.button.is-info.is-active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3e8ed0;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3e8ed0}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;color:#3e8ed0}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3e8ed0 #3e8ed0 !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;box-shadow:none;color:#3e8ed0}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #3e8ed0 #3e8ed0 !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#3ec487;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.button.is-success:active,.button.is-success.is-active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c78e;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c78e}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c78e}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;color:#48c78e}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#48c78e;border-color:#48c78e;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #48c78e #48c78e !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;box-shadow:none;color:#48c78e}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#48c78e}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #48c78e #48c78e !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffe08a;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);color:#ffe08a}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#ffe08a}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;color:#ffe08a}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffe08a #ffe08a !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;box-shadow:none;color:#ffe08a}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,.7);color:#ffe08a}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ffe08a #ffe08a !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f14668 #f14668 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f14668 #f14668 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1024px){.container{max-width:960px}}@media screen and (max-width: 1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:9999px}.image.is-fullwidth{width:100%}.image.is-square img,.image.is-square .has-ratio,.image.is-1by1 img,.image.is-1by1 .has-ratio,.image.is-5by4 img,.image.is-5by4 .has-ratio,.image.is-4by3 img,.image.is-4by3 .has-ratio,.image.is-3by2 img,.image.is-3by2 .has-ratio,.image.is-5by3 img,.image.is-5by3 .has-ratio,.image.is-16by9 img,.image.is-16by9 .has-ratio,.image.is-2by1 img,.image.is-2by1 .has-ratio,.image.is-3by1 img,.image.is-3by1 .has-ratio,.image.is-4by5 img,.image.is-4by5 .has-ratio,.image.is-3by4 img,.image.is-3by4 .has-ratio,.image.is-2by3 img,.image.is-2by3 .has-ratio,.image.is-3by5 img,.image.is-3by5 .has-ratio,.image.is-9by16 img,.image.is-9by16 .has-ratio,.image.is-1by2 img,.image.is-1by2 .has-ratio,.image.is-1by3 img,.image.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,.image.is-1by1{padding-top:100%}.image.is-5by4{padding-top:80%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-5by3{padding-top:60%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-3by1{padding-top:33.3333%}.image.is-4by5{padding-top:125%}.image.is-3by4{padding-top:133.3333%}.image.is-2by3{padding-top:150%}.image.is-3by5{padding-top:166.6666%}.image.is-9by16{padding-top:177.7777%}.image.is-1by2{padding-top:200%}.image.is-1by3{padding-top:300%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#485fc7;color:#fff}.notification.is-link.is-light{background-color:#eff1fa;color:#3850b7}.notification.is-info{background-color:#3e8ed0;color:#fff}.notification.is-info.is-light{background-color:#eff5fb;color:#296fa8}.notification.is-success{background-color:#48c78e;color:#fff}.notification.is-success.is-light{background-color:#effaf5;color:#257953}.notification.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffaeb;color:#946c00}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, white 30%, #ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, whitesmoke 30%, #ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right, #363636 30%, #ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right, #00d1b2 30%, #ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#485fc7}.progress.is-link::-moz-progress-bar{background-color:#485fc7}.progress.is-link::-ms-fill{background-color:#485fc7}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #485fc7 30%, #ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3e8ed0}.progress.is-info::-moz-progress-bar{background-color:#3e8ed0}.progress.is-info::-ms-fill{background-color:#3e8ed0}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #3e8ed0 30%, #ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c78e}.progress.is-success::-moz-progress-bar{background-color:#48c78e}.progress.is-success::-ms-fill{background-color:#48c78e}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #48c78e 30%, #ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffe08a}.progress.is-warning::-moz-progress-bar{background-color:#ffe08a}.progress.is-warning::-ms-fill{background-color:#ffe08a}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ffe08a 30%, #ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #f14668 30%, #ededed 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right, #4a4a4a 30%, #ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#485fc7;border-color:#485fc7;color:#fff}.table td.is-info,.table th.is-info{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c78e;border-color:#48c78e;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:inherit}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-0.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#485fc7;color:#fff}.tag:not(body).is-link.is-light{background-color:#eff1fa;color:#3850b7}.tag:not(body).is-info{background-color:#3e8ed0;color:#fff}.tag:not(body).is-info.is-light{background-color:#eff5fb;color:#296fa8}.tag:not(body).is-success{background-color:#48c78e;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf5;color:#257953}.tag:not(body).is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffaeb;color:#946c00}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-0.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-0.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::before,.tag:not(body).is-delete::after{background-color:currentColor;content:\\\"\\\";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:hover,.tag:not(body).is-delete:focus{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:9999px}a.tag:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.subtitle .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.select select,.textarea,.input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder{color:rgba(54,54,54,.3)}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder{color:rgba(54,54,54,.3)}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder{color:rgba(54,54,54,.3)}.select select:hover,.textarea:hover,.input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,.select select:active,.textarea:active,.input:active,.select select.is-active,.is-active.textarea,.is-active.input{border-color:#485fc7;box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select select[disabled],[disabled].textarea,[disabled].input,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.select select[disabled]::-moz-placeholder,[disabled].textarea::-moz-placeholder,[disabled].input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]::-webkit-input-placeholder,[disabled].textarea::-webkit-input-placeholder,[disabled].input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]:-moz-placeholder,[disabled].textarea:-moz-placeholder,[disabled].input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder{color:rgba(122,122,122,.3)}.select select[disabled]:-ms-input-placeholder,[disabled].textarea:-ms-input-placeholder,[disabled].input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder{color:rgba(122,122,122,.3)}.textarea,.input{box-shadow:inset 0 .0625em .125em rgba(10,10,10,.05);max-width:100%;width:100%}[readonly].textarea,[readonly].input{box-shadow:none}.is-white.textarea,.is-white.input{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,.is-white.textarea:active,.is-white.input:active,.is-white.is-active.textarea,.is-white.is-active.input{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.is-black.textarea,.is-black.input{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,.is-black.textarea:active,.is-black.input:active,.is-black.is-active.textarea,.is-black.is-active.input{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.is-light.textarea,.is-light.input{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,.is-light.textarea:active,.is-light.input:active,.is-light.is-active.textarea,.is-light.is-active.input{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.is-dark.textarea,.is-dark.input{border-color:#363636}.is-dark.textarea:focus,.is-dark.input:focus,.is-dark.is-focused.textarea,.is-dark.is-focused.input,.is-dark.textarea:active,.is-dark.input:active,.is-dark.is-active.textarea,.is-dark.is-active.input{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.textarea,.is-primary.input{border-color:#00d1b2}.is-primary.textarea:focus,.is-primary.input:focus,.is-primary.is-focused.textarea,.is-primary.is-focused.input,.is-primary.textarea:active,.is-primary.input:active,.is-primary.is-active.textarea,.is-primary.is-active.input{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.textarea,.is-link.input{border-color:#485fc7}.is-link.textarea:focus,.is-link.input:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,.is-link.textarea:active,.is-link.input:active,.is-link.is-active.textarea,.is-link.is-active.input{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.is-info.textarea,.is-info.input{border-color:#3e8ed0}.is-info.textarea:focus,.is-info.input:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,.is-info.textarea:active,.is-info.input:active,.is-info.is-active.textarea,.is-info.is-active.input{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.is-success.textarea,.is-success.input{border-color:#48c78e}.is-success.textarea:focus,.is-success.input:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,.is-success.textarea:active,.is-success.input:active,.is-success.is-active.textarea,.is-success.is-active.input{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.is-warning.textarea,.is-warning.input{border-color:#ffe08a}.is-warning.textarea:focus,.is-warning.input:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,.is-warning.textarea:active,.is-warning.input:active,.is-warning.is-active.textarea,.is-warning.is-active.input{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.is-danger.textarea,.is-danger.input{border-color:#f14668}.is-danger.textarea:focus,.is-danger.input:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,.is-danger.textarea:active,.is-danger.input:active,.is-danger.is-active.textarea,.is-danger.is-active.input{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.textarea,.is-small.input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input{font-size:1.25rem}.is-large.textarea,.is-large.input{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input{display:block;width:100%}.is-inline.textarea,.is-inline.input{display:inline;width:auto}.input.is-rounded{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#363636}[disabled].radio,[disabled].checkbox,fieldset[disabled] .radio,fieldset[disabled] .checkbox,.radio input[disabled],.checkbox input[disabled]{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#485fc7;right:1.125em;z-index:4}.select.is-rounded select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select:hover,.select.is-dark select.is-hovered{border-color:#292929}.select.is-dark select:focus,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select.is-active{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select:hover,.select.is-primary select.is-hovered{border-color:#00b89c}.select.is-primary select:focus,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select.is-active{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover)::after{border-color:#485fc7}.select.is-link select{border-color:#485fc7}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#3a51bb}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select.is-info:not(:hover)::after{border-color:#3e8ed0}.select.is-info select{border-color:#3e8ed0}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#3082c5}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.select.is-success:not(:hover)::after{border-color:#48c78e}.select.is-success select{border-color:#48c78e}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#3abb81}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.select.is-warning:not(:hover)::after{border-color:#ffe08a}.select.is-warning select{border-color:#ffe08a}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#ffd970}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#ef2e55}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:rgba(0,0,0,.7)}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark:hover .file-cta,.file.is-dark.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark:focus .file-cta,.file.is-dark.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark:active .file-cta,.file.is-dark.is-active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.file.is-primary.is-hovered .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.file.is-primary.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary:active .file-cta,.file.is-primary.is-active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#485fc7;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#3e56c4;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,95,199,.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#3a51bb;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3e8ed0;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#3488ce;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(62,142,208,.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#3082c5;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c78e;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#3ec487;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,199,142,.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#3abb81;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,224,138,.25);color:rgba(0,0,0,.7)}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,70,104,.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#485fc7}.help.is-info{color:#3e8ed0}.help.is-success{color:#48c78e}.help.is-warning{color:#ffe08a}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered{z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]).is-active{z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#485fc7;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:\\\"/\\\"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:\\\"→\\\"}.breadcrumb.has-bullet-separator li+li::before{content:\\\"•\\\"}.breadcrumb.has-dot-separator li+li::before{content:\\\"·\\\"}.breadcrumb.has-succeeds-separator li+li::before{content:\\\"≻\\\"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);color:#4a4a4a;max-width:100%;position:relative}.card-footer:first-child,.card-content:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-footer:last-child,.card-content:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 .125em .25em rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#485fc7;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#485fc7;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eff1fa}.message.is-link .message-header{background-color:#485fc7;color:#fff}.message.is-link .message-body{border-color:#485fc7;color:#3850b7}.message.is-info{background-color:#eff5fb}.message.is-info .message-header{background-color:#3e8ed0;color:#fff}.message.is-info .message-body{border-color:#3e8ed0;color:#296fa8}.message.is-success{background-color:#effaf5}.message.is-success .message-header{background-color:#48c78e;color:#fff}.message.is-success .message-body{border-color:#48c78e;color:#257953}.message.is-warning{background-color:#fffaeb}.message.is-warning .message-header{background-color:#ffe08a;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffe08a;color:#946c00}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 550px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width: 550px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-dark .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-primary .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#485fc7;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#485fc7;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width: 550px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 550px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#485fc7}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#485fc7}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#485fc7;border-bottom-style:solid;border-bottom-width:3px;color:#485fc7;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#485fc7;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width: 549px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 550px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-0.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-0.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-0.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,.pagination.is-rounded .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#485fc7}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#485fc7;border-color:#485fc7;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 .5em 1em -0.125em rgba(10,10,10,.1),0 0px 0 1px rgba(10,10,10,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#485fc7;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#485fc7}.panel.is-link .panel-block.is-active .panel-icon{color:#485fc7}.panel.is-info .panel-heading{background-color:#3e8ed0;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3e8ed0}.panel.is-info .panel-block.is-active .panel-icon{color:#3e8ed0}.panel.is-success .panel-heading{background-color:#48c78e;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c78e}.panel.is-success .panel-block.is-active .panel-icon{color:#48c78e}.panel.is-warning .panel-heading{background-color:#ffe08a;color:rgba(0,0,0,.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffe08a}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffe08a}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-tabs:not(:last-child),.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#485fc7}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#485fc7;color:#363636}.panel-block.is-active .panel-icon{color:#485fc7}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:2px;color:var(--color-secondary);display:flex;justify-content:center;margin-bottom:-2px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:var(--color-secondary);color:var(--color-secondary)}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:var(--color-primary);color:var(--color-primary)}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:2px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#485fc7;border-color:#485fc7;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>.column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>.column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>.column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>.column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.33333337%}.column.is-offset-1-mobile{margin-left:8.33333337%}.column.is-2-mobile{flex:none;width:16.66666674%}.column.is-offset-2-mobile{margin-left:16.66666674%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333337%}.column.is-offset-4-mobile{margin-left:33.33333337%}.column.is-5-mobile{flex:none;width:41.66666674%}.column.is-offset-5-mobile{margin-left:41.66666674%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333337%}.column.is-offset-7-mobile{margin-left:58.33333337%}.column.is-8-mobile{flex:none;width:66.66666674%}.column.is-offset-8-mobile{margin-left:66.66666674%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333337%}.column.is-offset-10-mobile{margin-left:83.33333337%}.column.is-11-mobile{flex:none;width:91.66666674%}.column.is-offset-11-mobile{margin-left:91.66666674%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333337%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333337%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66666674%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66666674%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333337%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333337%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66666674%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66666674%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333337%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333337%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66666674%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66666674%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333337%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333337%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66666674%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66666674%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.33333337%}.column.is-offset-1-touch{margin-left:8.33333337%}.column.is-2-touch{flex:none;width:16.66666674%}.column.is-offset-2-touch{margin-left:16.66666674%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333337%}.column.is-offset-4-touch{margin-left:33.33333337%}.column.is-5-touch{flex:none;width:41.66666674%}.column.is-offset-5-touch{margin-left:41.66666674%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333337%}.column.is-offset-7-touch{margin-left:58.33333337%}.column.is-8-touch{flex:none;width:66.66666674%}.column.is-offset-8-touch{margin-left:66.66666674%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333337%}.column.is-offset-10-touch{margin-left:83.33333337%}.column.is-11-touch{flex:none;width:91.66666674%}.column.is-offset-11-touch{margin-left:91.66666674%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.33333337%}.column.is-offset-1-desktop{margin-left:8.33333337%}.column.is-2-desktop{flex:none;width:16.66666674%}.column.is-offset-2-desktop{margin-left:16.66666674%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333337%}.column.is-offset-4-desktop{margin-left:33.33333337%}.column.is-5-desktop{flex:none;width:41.66666674%}.column.is-offset-5-desktop{margin-left:41.66666674%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333337%}.column.is-offset-7-desktop{margin-left:58.33333337%}.column.is-8-desktop{flex:none;width:66.66666674%}.column.is-offset-8-desktop{margin-left:66.66666674%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333337%}.column.is-offset-10-desktop{margin-left:83.33333337%}.column.is-11-desktop{flex:none;width:91.66666674%}.column.is-offset-11-desktop{margin-left:91.66666674%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.33333337%}.column.is-offset-1-widescreen{margin-left:8.33333337%}.column.is-2-widescreen{flex:none;width:16.66666674%}.column.is-offset-2-widescreen{margin-left:16.66666674%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333337%}.column.is-offset-4-widescreen{margin-left:33.33333337%}.column.is-5-widescreen{flex:none;width:41.66666674%}.column.is-offset-5-widescreen{margin-left:41.66666674%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333337%}.column.is-offset-7-widescreen{margin-left:58.33333337%}.column.is-8-widescreen{flex:none;width:66.66666674%}.column.is-offset-8-widescreen{margin-left:66.66666674%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333337%}.column.is-offset-10-widescreen{margin-left:83.33333337%}.column.is-11-widescreen{flex:none;width:91.66666674%}.column.is-offset-11-widescreen{margin-left:91.66666674%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.33333337%}.column.is-offset-1-fullhd{margin-left:8.33333337%}.column.is-2-fullhd{flex:none;width:16.66666674%}.column.is-offset-2-fullhd{margin-left:16.66666674%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333337%}.column.is-offset-4-fullhd{margin-left:33.33333337%}.column.is-5-fullhd{flex:none;width:41.66666674%}.column.is-offset-5-fullhd{margin-left:41.66666674%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333337%}.column.is-offset-7-fullhd{margin-left:58.33333337%}.column.is-8-fullhd{flex:none;width:66.66666674%}.column.is-offset-8-fullhd{margin-left:66.66666674%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333337%}.column.is-offset-10-fullhd{margin-left:83.33333337%}.column.is-11-fullhd{flex:none;width:91.66666674%}.column.is-offset-11-fullhd{margin-left:91.66666674%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.columns:last-child{margin-bottom:-0.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - 0.75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1*var(--columnGap));margin-right:calc(-1*var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: 0.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: 0.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: 0.25rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-1-tablet-only{--columnGap: 0.25rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-1-touch{--columnGap: 0.25rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-1-desktop{--columnGap: 0.25rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: 0.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: 0.25rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: 0.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: 0.25rem}}.columns.is-variable.is-2{--columnGap: 0.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: 0.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: 0.5rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-2-tablet-only{--columnGap: 0.5rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-2-touch{--columnGap: 0.5rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-2-desktop{--columnGap: 0.5rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: 0.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: 0.5rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: 0.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: 0.5rem}}.columns.is-variable.is-3{--columnGap: 0.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: 0.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: 0.75rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-3-tablet-only{--columnGap: 0.75rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-3-touch{--columnGap: 0.75rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-3-desktop{--columnGap: 0.75rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: 0.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: 0.75rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: 0.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: 0.75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px)and (max-width: 1023px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1023px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1024px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1024px)and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px)and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-0.75rem;margin-right:-0.75rem;margin-top:-0.75rem}.tile.is-ancestor:last-child{margin-bottom:-0.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333337%}.tile.is-2{flex:none;width:16.66666674%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333337%}.tile.is-5{flex:none;width:41.66666674%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333337%}.tile.is-8{flex:none;width:66.66666674%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333337%}.tile.is-11{flex:none;width:91.66666674%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#00d1b2 !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#009e86 !important}.has-background-primary{background-color:#00d1b2 !important}.has-text-primary-light{color:#ebfffc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#b8fff4 !important}.has-background-primary-light{background-color:#ebfffc !important}.has-text-primary-dark{color:#00947e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#00c7a9 !important}.has-background-primary-dark{background-color:#00947e !important}.has-text-link{color:#485fc7 !important}a.has-text-link:hover,a.has-text-link:focus{color:#3449a8 !important}.has-background-link{background-color:#485fc7 !important}.has-text-link-light{color:#eff1fa !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c8cfee !important}.has-background-link-light{background-color:#eff1fa !important}.has-text-link-dark{color:#3850b7 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#576dcb !important}.has-background-link-dark{background-color:#3850b7 !important}.has-text-info{color:#3e8ed0 !important}a.has-text-info:hover,a.has-text-info:focus{color:#2b74b1 !important}.has-background-info{background-color:#3e8ed0 !important}.has-text-info-light{color:#eff5fb !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#c6ddf1 !important}.has-background-info-light{background-color:#eff5fb !important}.has-text-info-dark{color:#296fa8 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#368ace !important}.has-background-info-dark{background-color:#296fa8 !important}.has-text-success{color:#48c78e !important}a.has-text-success:hover,a.has-text-success:focus{color:#34a873 !important}.has-background-success{background-color:#48c78e !important}.has-text-success-light{color:#effaf5 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c8eedd !important}.has-background-success-light{background-color:#effaf5 !important}.has-text-success-dark{color:#257953 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#31a06e !important}.has-background-success-dark{background-color:#257953 !important}.has-text-warning{color:#ffe08a !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#ffd257 !important}.has-background-warning{background-color:#ffe08a !important}.has-text-warning-light{color:#fffaeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#ffecb8 !important}.has-background-warning-light{background-color:#fffaeb !important}.has-text-warning-dark{color:#946c00 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#c79200 !important}.has-background-warning-dark{background-color:#946c00 !important}.has-text-danger{color:#f14668 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#ee1742 !important}.has-background-danger{background-color:#f14668 !important}.has-text-danger-light{color:#feecf0 !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#fabdc9 !important}.has-background-danger-light{background-color:#feecf0 !important}.has-text-danger-dark{color:#cc0f35 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#ee2049 !important}.has-background-danger-dark{background-color:#cc0f35 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#7a7a7a !important}.has-background-grey{background-color:#7a7a7a !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:\\\" \\\";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1023px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1024px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1023px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1024px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1023px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1024px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1023px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1024px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1023px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1024px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:Tahoma,sans-serif !important}.is-family-secondary{font-family:Tahoma,sans-serif !important}.is-family-sans-serif{font-family:Tahoma,sans-serif !important}.is-family-monospace{font-family:monospace !important}.is-family-code{font-family:monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1023px){.is-block-touch{display:block !important}}@media screen and (min-width: 1024px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1023px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1024px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1023px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1024px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1023px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1024px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1023px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1024px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1023px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1024px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px)and (max-width: 1023px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1023px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1024px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1024px)and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px)and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, white 71%, white 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width: 1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,.7)}.hero.is-dark a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark .navbar-link.is-active{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{color:#363636 !important;opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary .navbar-link.is-active{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{color:#00d1b2 !important;opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%)}}.hero.is-link{background-color:#485fc7;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-link .navbar-menu{background-color:#485fc7}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#3a51bb;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#485fc7 !important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#485fc7}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #2959b3 0%, #485fc7 71%, #5658d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #2959b3 0%, #485fc7 71%, #5658d2 100%)}}.hero.is-info{background-color:#3e8ed0;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-info .navbar-menu{background-color:#3e8ed0}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#3082c5;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#3e8ed0 !important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3e8ed0}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #208fbc 0%, #3e8ed0 71%, #4d83db 100%)}}.hero.is-success{background-color:#48c78e;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-success .navbar-menu{background-color:#48c78e}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#3abb81;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#48c78e !important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c78e}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #29b35e 0%, #48c78e 71%, #56d2af 100%)}}.hero.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width: 1023px){.hero.is-warning .navbar-menu{background-color:#ffe08a}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#ffd970;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#ffe08a !important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffe08a}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffb657 0%, #ffe08a 71%, #fff6a3 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#f14668 !important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #fa0a62 0%, #f14668 71%, #f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:1.5rem}@media screen and (min-width: 1024px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./core.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\n\nmodule.exports = exported;","var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./bulma.sass\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\n\nmodule.exports = exported;","import * as React from 'react';\r\nimport { hot } from 'react-hot-loader/root';\r\nimport { Switch, useLocation } from 'react-router-dom';\r\nimport { Route, RouteProps } from 'react-router-dom';\r\n\r\nimport { Modal, PublicRoute, PrivateRoute, NonIdealState } from 'web-shared/components';\r\nimport { Header, Footer } from 'web-frontend/components';\r\nimport { gaPageView, hexToCssVars } from 'web-shared/lib';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { initializeBugsnag } from 'web-shared/lib/initialize';\r\n\r\nimport { LoginForm } from 'web-shared/pages/login';\r\nimport LoginRegisterPage from './pages/account/loginOrRegister';\r\nimport LogoffPage from 'web-shared/pages/logoff';\r\nimport NotFoundPage from 'web-shared/pages/notFound';\r\nimport { LandingPage } from './pages/landing/landing';\r\n\r\nconst ForgotPage = React.lazy(() => import('web-shared/pages/forgot'));\r\nconst ResetPage = React.lazy(() => import('web-shared/pages/reset'));\r\nconst VerifyPage = React.lazy(() => import('web-shared/pages/verify'));\r\nconst AccountSetupPage = React.lazy(() => import('./pages/account/account-setup'));\r\n\r\nconst MainLandingPage = React.lazy(() => import('./pages/landing'));\r\nconst QuestionsPage = React.lazy(() => import('./pages/questions/questions'));\r\nconst AboutPage = React.lazy(() => import('./pages/about'));\r\nconst UserPage = React.lazy(() => import('./pages/user'));\r\nconst ApplicationDetailPage = React.lazy(() => import('./pages/user/application[id]'));\r\nconst RenewalDetailPage = React.lazy(() => import('./pages/user/renewal[id]'));\r\nconst ActionPage = React.lazy(() => import('./pages/user/action[id]'));\r\nconst SignupPage = React.lazy(() => import(`./pages/signup`));\r\nconst ApplicationRenderer = React.lazy(() => import('./pages/secured/apply/index'));\r\n\r\nconst AdminPage = React.lazy(() => import('./pages/secured/admin'));\r\nconst AdminAppsPage = React.lazy(() => import('./pages/secured/admin/apps/applications'));\r\nconst AdminAppDetailPage = React.lazy(() => import('./pages/secured/admin/apps/detail'));\r\n\r\nconst PPPAdminPage = React.lazy(() => import(`./pages/ppp/loan/admin`));\r\nconst PPPAdminDetailPage = React.lazy(() => import(`./pages/ppp/loan/admin/ppl-detail`));\r\n\r\nconst PppApplicationPage = React.lazy(() => import('./pages/ppp/loan/application/apply'));\r\nconst ForgivenessApplicationPage = React.lazy(() => import('./pages/ppp/forgiveness/application/apply'));\r\nconst ForgivenessAdminPage = React.lazy(() => import(`./pages/ppp/forgiveness/admin/ppf-applications`));\r\nconst ForgivenessAdminDetailPage = React.lazy(() => import(`./pages/ppp/forgiveness/admin/ppf-detail`));\r\n\r\nconst AdminRoute: React.FC = ({ children, title, token, component, ...rest }) => {\r\n return {\r\n const authState = auth.getStateSnapshot();\r\n const isAdmin = authState.admin || authState.globalAdmin;\r\n if(!isAdmin) {\r\n return ;\r\n }\r\n return ;\r\n }\r\n } />;\r\n};\r\n\r\nimport { initializeGoogleAnalytics } from './lib/googleAnalytics';\r\ninitializeGoogleAnalytics();\r\n\r\nconst bugsnagClient = initializeBugsnag();\r\nauth.initialize(bugsnagClient);\r\nui.initialize(config.client.name);\r\n\r\nconst App: React.FC = function() {\r\n const { expires, token } = auth.useState(s => ({\r\n expires: s.expires,\r\n token: s.token,\r\n }));\r\n\r\n const location = useLocation();\r\n React.useEffect(() => {\r\n gaPageView(location);\r\n }, [location]);\r\n\r\n // Set a timer to refresh the page when login expires\r\n const [, setState] = React.useState(new Date().getTime());\r\n React.useEffect(() => {\r\n if(!expires) {\r\n return;\r\n }\r\n const expireMs = new Date(expires).getTime() - new Date().getTime() + 500;\r\n const timeout = setTimeout(() => {\r\n setState(new Date().getTime());\r\n }, expireMs);\r\n\r\n return () => { clearTimeout(timeout); };\r\n }, [expires]);\r\n\r\n const isPpp = config.site.type === 'paycheck';\r\n const hasMl = true;\r\n\r\n const { securedSites = [] } = config.site;\r\n const hasSecured = securedSites.length > 0;\r\n const hasExpressLender = securedSites.includes('express-lender');\r\n\r\n return <>\r\n {/* */}\r\n\r\n \r\n\r\n \r\n\r\n
\r\n {expires && new Date(expires) < new Date()\r\n ? \r\n \r\n : null}\r\n
\r\n
\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {/* Hard-coded SBA route for express lender and CCM */}\r\n\t\t\t\t\t\t{hasExpressLender ? : null}\r\n\t\t\t\t\t\t{hasExpressLender ? : null}\r\n\r\n {/* Map all sites to a sub-path */}\r\n {securedSites.map(s => )}\r\n\r\n {/* Any secured app detail page */}\r\n {hasSecured ? : null}\r\n\r\n {/* Allow default routes */}\r\n {securedSites.length === 1 ? : null}\r\n\r\n {/* Render secured admin routes */}\r\n {hasSecured ? : null}\r\n {hasSecured ? : null}\r\n {hasSecured ? : null}\r\n\r\n {hasMl ? : null}\r\n {hasMl ? : null}\r\n {hasMl ? : null}\r\n\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n {isPpp ? : null}\r\n\r\n \r\n \r\n\r\n {config.landingPages.map(l => )}\r\n {config.landingPages.map(l => )}\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n ;\r\n};\r\n\r\nexport const HotApp = hot(App);\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\n\r\nimport { HtmlString } from 'web-shared/components';\r\nimport { BannerBackgroundImage } from 'web-frontend/components';\r\nimport { shadeColor } from 'web-shared/lib';\r\nimport Color from 'ac-colors';\r\nimport { config } from 'web-frontend/lib';\r\n\r\nconst Styles = styled.div`\r\n .pre { white-space: pre-line; }\r\n .button {\r\n margin: 20px 1em; height: auto;\r\n }\r\n .button-title { font-weight: bold; font-size: 1.3em; text-decoration: underline; }\r\n`;\r\n\r\nfunction useLink(url: string | undefined) {\r\n return url && (url === '#' || url.substr(0, 4) === 'http');\r\n}\r\n\r\ninterface Props {\r\n showButton?: boolean;\r\n banner: api.LandingPageBanner;\r\n productNameOnly?: boolean;\r\n}\r\nexport const Banner: React.FC = function ({ showButton = false, banner, productNameOnly }) {\r\n // Get the requested banner\r\n const highlightColor = banner.highlightColor || '#76933C';\r\n const boxOpacity = banner.boxOpacity === null ? 0.7 : banner.boxOpacity;\r\n const backgroundColor = 'rgba(0, 0, 0, ' + boxOpacity + ')';\r\n\r\n // Get button configuration\r\n const buttons: api.SiteConfigBannerButton[] = banner.buttons?.length\r\n ? banner.buttons.map(b => ({\r\n color: b.color || banner.highlightColor,\r\n linkUrl: (b.linkUrl || '').toLowerCase(),\r\n text: b.text,\r\n details: b.details,\r\n textColor: b.textColor,\r\n }))\r\n : [{\r\n color: banner.highlightColor,\r\n linkUrl: (banner.linkUrl || '').toLowerCase(),\r\n text: banner.buttonText,\r\n }];\r\n const imageUrl = banner.imageUrl || '';\r\n\r\n return \r\n \r\n\r\n \r\n
\r\n ${config.site.name}` : banner.bannerText} style={{ color: highlightColor, fontWeight: 'bold' }} />\r\n {\r\n !showButton ? null : buttons.filter(b => b.linkUrl).map((b, i) => {\r\n const color = b.color || highlightColor;\r\n const contrastRatio = Color.contrastRatio(new Color({ color, type: 'hex' }), new Color({ color: [255, 255, 255] }));\r\n const style = {\r\n color: b.textColor || (contrastRatio < 3 ? '#000' : '#fff'),\r\n backgroundColor: color,\r\n borderColor: shadeColor(-12, color),\r\n margin: '1em',\r\n };\r\n const content =
\r\n
{b.text}
\r\n
\r\n
;\r\n\r\n return useLink(b.linkUrl)\r\n ? {content}\r\n : {content};\r\n })\r\n }\r\n
\r\n ;\r\n};\r\n","import * as React from 'react';\r\n\r\nfunction getHeight() {\r\n const w = window.innerWidth;\r\n if(w <= 767) return 550;\r\n if(w <= 991) return 600;\r\n if(w <= 1199) return 800;\r\n return 1000;\r\n}\r\n\r\nexport const BannerBackgroundImage: React.FC<{ src: string }> = function ({ src }) {\r\n const width = Math.ceil(window.innerWidth / 50) * 50;\r\n const imageSrc = `https://res.cloudinary.com/rcgiltner/image/fetch/w_${width || 1200},h_${getHeight()},f_auto,c_fill,g_face/${src}`;\r\n\r\n return
\r\n \r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport { Modal, Section, SectionHeader, Spinner, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\ninterface Props {\r\n onClose: () => void;\r\n}\r\n\r\nexport const BranchLoginForm: React.FC = function ({ onClose }) {\r\n const [{ busy, error }, setState] = React.useState({\r\n busy: false,\r\n error: '',\r\n });\r\n const userNameRef = React.useRef(null);\r\n const passwordRef = React.useRef(null);\r\n\r\n function _modalClose() {\r\n onClose && onClose();\r\n }\r\n\r\n async function _login(e: React.FormEvent) {\r\n e.preventDefault();\r\n\r\n setState({ busy: true, error: '' });\r\n\r\n try {\r\n const response = await auth.branchLogin(userNameRef.current?.value || '', passwordRef.current?.value || '');\r\n\r\n setState({ busy: false, error: response.errorMessage || '' });\r\n if(!response.errorMessage) {\r\n onClose && onClose();\r\n }\r\n } catch(e) {\r\n setState({ busy: false, error: 'Unable to contact the login server.' });\r\n }\r\n }\r\n\r\n return \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n Branch employee login!\r\n
\r\n Please enter your employee email address and password below.\r\n
\r\n
\r\n {error ?
\r\n
{error}
\r\n
: null}\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Modal, NonIdealState } from 'web-shared/components';\r\nimport { postJson } from 'web-shared/lib';\r\nimport Axios, { CancelTokenSource } from 'axios';\r\nimport { gaEvent } from 'web-shared/lib';\r\nimport { Pdf } from './pdf';\r\n\r\ninterface DisclosureResponse {\r\n pdfContent: string;\r\n documentMd5: string;\r\n}\r\ninterface Props {\r\n name: string;\r\n id: string | number;\r\n renewal?: boolean;\r\n ppl?: boolean;\r\n ppf?: boolean;\r\n parameters?: object;\r\n onOk: (id: string | number) => void;\r\n onClose?: () => void;\r\n}\r\nexport const DisclosureModal: React.FC = ({ name, id, onOk, onClose, renewal, ppl, ppf, parameters = {} }) => {\r\n const [{ ready, failed, error }, setState] = React.useState({\r\n ready: false,\r\n failed: false,\r\n error: '',\r\n });\r\n const [results, setResults] = React.useState();\r\n\r\n async function getDisclosureData(tokenSource: CancelTokenSource) {\r\n setState({ ready: false, failed: false, error: '' });\r\n setResults(undefined);\r\n\r\n // URL is different for renewals\r\n const type = typeof (id) === 'string' ? 'template' : 'version';\r\n const url = renewal ? `/api/user/renewal/disclosure/${id}/base64`\r\n : ppl ? `/api/ppl/disclosure/${type}/${id}`\r\n : ppf ? `/api/forgiveness/disclosure/version/${id}`\r\n : `/api/signup/disclosure/${type}/${id}`;\r\n\r\n const response = await postJson(url, parameters, tokenSource.token);\r\n if(response.isError) {\r\n setState({ ready: false, failed: false, error: response.error });\r\n }\r\n\r\n setResults(response.payload);\r\n }\r\n\r\n React.useEffect(() => {\r\n const cancelSource = Axios.CancelToken.source();\r\n getDisclosureData(cancelSource);\r\n\r\n return () => {\r\n cancelSource && cancelSource.cancel();\r\n };\r\n }, [name, id]);\r\n\r\n function _documentLoaded() {\r\n gaEvent('signup', 'ViewDisclosure');\r\n setState({ ready: true, failed: false, error: '' });\r\n }\r\n function _documentFailed() {\r\n setState({ ready: false, failed: true, error: '' });\r\n }\r\n\r\n const loadingMessage = ;\r\n const isError = error || failed;\r\n\r\n return onOk && onOk(id)}\r\n onClose={() => onClose && onClose()}\r\n isReady={ready}\r\n bodyStyle={{ backgroundColor: '#555' }}\r\n >\r\n
\r\n {isError ? : null}\r\n {!isError && !results?.pdfContent ? loadingMessage : null}\r\n {!isError && results?.pdfContent ?\r\n : null}\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { BranchLoginForm } from 'web-frontend/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\nconst versionString = 'v3.1.21';\r\n\r\ninterface Props { }\r\n\r\nexport const Footer: React.FC = function () {\r\n const branchLoginModalOpen = auth.useState(s => s.branchLoginModalOpen);\r\n const branchUser = auth.useState(s => s.branchUser);\r\n\r\n function _branchClick() {\r\n // Log the user out\r\n if(branchUser) {\r\n auth.branchLogoff();\r\n } else {\r\n auth.toggleBranchLoginModal(true);\r\n }\r\n }\r\n function _closeBranchLogin() {\r\n auth.toggleBranchLoginModal(false);\r\n }\r\n\r\n const footerImages = config.footerImages || [];\r\n\r\n return
\r\n \r\n {branchLoginModalOpen ? : null}\r\n
\r\n
\r\n
\r\n {footerImages.map((img, i) => \"Equal)}\r\n
\r\n
\r\n
\r\n
\r\n {config.aboutUsUrl ? About Us :\r\n About Us}\r\n {config.contactUrl ? Contact Us : null}\r\n {config.privacyPolicyUrl ? Privacy Policy : null}\r\n
\r\n \r\n {branchUser ? 'Branch Logout' : 'Branch Login'}\r\n \r\n {config.institutionNumber ? Institution ID #{config.institutionNumber} : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{versionString}
\r\n
{branchUser}
\r\n
\r\n
\r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\nimport Slider from 'react-slick';\r\nimport styled from 'styled-components';\r\n\r\nimport { Banner } from 'web-frontend/components';\r\nimport { classNames, useWindowSize } from 'web-shared/lib';\r\n\r\nconst Styles = styled.div`\r\n color: #fff; background: #fff; position: relative; top: 0;\r\n\r\n .banner { height: calc(100vh - 50px); margin-bottom: 2em; padding-top: 0; }\r\n .banner.small, .banner.small .banner-img { height: 450px; }\r\n .slick-slide { visibility: hidden; }\r\n .slick-active { visibility: visible; }\r\n\r\n .slick-slider, .slick-list, .slick-track, .slick-slide, .slick-slide > div, .slick-slide > div > div, .banner-img { height: 100%; }\r\n\r\n .text-center { margin: 0; padding: 0; }\r\n .hint { position: absolute; bottom: 0; width: 100%; height: 0.5em; }\r\n .hintLine {\r\n width: 100%; height: 100%;\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n }\r\n .hintCircle { left: 50%; width: 5em; height: 5em; position: absolute; top: 0; }\r\n .hintCircle2 {\r\n width: 5em; height: 5em; border-radius: 5em; position: absolute; top: -2.3em; left: -50%;\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n }\r\n .hintCircle3 {\r\n width: 4em; height: 4em; border-radius: 4em; margin-left: .5em; margin-top: .5em;\r\n background-color: #92a0b1;\r\n background-color: var(--color-secondary-light-50);\r\n }\r\n .hintIcon { font-size: 3em; margin-left: 0.17em; margin-top: 0.15em; display: inline-block; }\r\n`;\r\ninterface Props {\r\n banners: api.LandingPageBanner[];\r\n small?: boolean;\r\n}\r\nexport const HeaderPane: React.FC = ({ banners, small = false }) => {\r\n useWindowSize(); // Just needed to recalc when window size changes\r\n const headerEl = document.getElementsByClassName('navbar');\r\n const headerHeight = headerEl[0]?.clientHeight || 50;\r\n\r\n function _buildBanner() {\r\n // No banners defined. Do something default\r\n if(!banners || banners.length === 0)\r\n return null;\r\n\r\n const bannerDivs = banners.map((b, i) => );\r\n const settings = {\r\n dots: banners.length > 1,\r\n arrows: banners.length > 1,\r\n infinite: true,\r\n speed: 500,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n autoplay: true,\r\n autoplaySpeed: 9000,\r\n fade: true,\r\n swipe: false,\r\n draggable: false,\r\n };\r\n return {bannerDivs};\r\n }\r\n\r\n const banner = _buildBanner();\r\n return \r\n
\r\n {banner}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { UnknownLink } from './unknownLink';\r\nimport styled from 'styled-components';\r\nimport { RelativeTime } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\n\r\nconst StyledListItem = styled.li`\r\n & a { display: flex; }\r\n & .user-info { text-align: right; font-size: 0.9em; line-height: 1.2em; }\r\n & .fa-user { display: inline-block; margin-left: 10px; font-size: 2.5em; }\r\n & .expires { font-size: 0.8em; }\r\n @media(max-width: 768px) {\r\n & a { flex-direction: row-reverse; justify-content: flex-end; }\r\n & .user-info { text-align: left; }\r\n & .fa-user { display: inline-block; margin-left: 0; margin-right: 10px; font-size: 2.5em; }\r\n }\r\n`;\r\n\r\nexport const AccountLink: React.FC<{ name: string, email: string }> = function ({ name, email }) {\r\n const expireDate = auth.useState(s => s.expires);\r\n return \r\n \r\n
\r\n
{name}
\r\n
{email}
\r\n {expireDate ?
(session expires )
: null}\r\n
\r\n \r\n
\r\n
;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Header as Header1 } from './option1';\r\nimport { Header as Header2 } from './option2';\r\nimport { Header as Header3 } from './option3';\r\nimport { HeaderLink } from 'web-shared/store';\r\n\r\nexport interface HeaderProps {\r\n links?: HeaderLink[];\r\n}\r\n\r\ninterface Props {\r\n option: 1 | 2 | 3;\r\n}\r\n\r\nexport const Header: React.FC = ({ option, ...p }) => {\r\n switch(option) {\r\n default:\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n case 3:\r\n return ;\r\n }\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { config } from 'web-frontend/lib';\r\nimport { UnknownLink } from './unknownLink';\r\nimport { AccountLink } from './accountLink';\r\nimport styled from 'styled-components';\r\n\r\nconst StyledDiv = styled.div`\r\n svg .color-primary { fill: ${config.colors.logo1}; }\r\n svg .color-secondary { fill: ${config.colors.logo2}; }\r\n`;\r\nconst NavbarEnd = styled.ul`\r\n & .navbar-item { padding: 0; }\r\n & .navbar-item a { padding: 0 0.75rem; color: #333; height: 100%; display: flex; align-items: center; }\r\n & .navbar-item:hover a {\r\n background-color: #244062;\r\n background-color: var(--color-secondary);\r\n color: #fff;\r\n }\r\n & .sign-out-text { display: none; }\r\n & .fa-sign-out { font-size: 1.3em; }\r\n @media(max-width: 768px) {\r\n & .sign-out { display: flex; align-items: center; }\r\n & .sign-out-text { display: inline; padding-left: 10px; }\r\n & .fa-sign-out { font-size: 2.5em; }\r\n }\r\n`;\r\n\r\ninterface NavItemProps {\r\n name: string | React.ReactElement;\r\n href: string;\r\n title?: string;\r\n}\r\nconst NavItem: React.FC = function ({ name, href, title }) {\r\n return
  • \r\n {name}\r\n
  • ;\r\n};\r\n\r\nfunction img(src: string = '', alt: string) {\r\n if(src.startsWith('\r\n }\r\n return {alt};\r\n}\r\n\r\n// Main application navbar\r\nexport const Header: React.FC<{}> = () => {\r\n const { userName, name } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n }));\r\n const { headerLinks, hideLoginLinks } = ui.useState(s => ({\r\n headerLinks: s.headerLinks,\r\n hideLoginLinks: s.hideLoginLinks,\r\n }));\r\n\r\n const siteLogo = \r\n {img(config.site.logo, config.site.name)}\r\n ;\r\n const clientLogo = \r\n {img(config.client.logo, config.client.name)}\r\n ;\r\n\r\n return
    \r\n \r\n \r\n {config.hideClientLogo ? siteLogo :\r\n config.clientLogoFirst ? <>{clientLogo}{siteLogo} :\r\n <>{siteLogo}{clientLogo}}\r\n \r\n
    \r\n \r\n {headerLinks.map(v => v.isHidden ? null : )}\r\n {userName ? : null}\r\n {userName ? Sign Out} href=\"/logoff\" title=\"Log off\" /> : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport useOnClickOutside from 'use-onclickoutside';\r\n\r\nimport { config } from 'web-frontend/lib';\r\nimport { useWindowScrolledTo, classNames } from 'web-shared/lib';\r\nimport { HeaderProps } from '..';\r\nimport { auth, ui } from 'web-shared/store';\r\n\r\nimport { AccountLink } from './accountLink';\r\nimport { UnknownLink } from './unknownLink';\r\n\r\nconst Logo: React.FC<{ name: string, src: string }> = ({ name, src }) => {\r\n return \r\n \r\n\r\n {name}\r\n ;\r\n};\r\n\r\nconst Menu: React.FC<{ pageLinks: JSX.Element[], authLinks: JSX.Element[] }> = ({ pageLinks, authLinks }) => {\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const ref: React.MutableRefObject = React.useRef(null);\r\n useOnClickOutside(ref, () => setOpen(false));\r\n\r\n return
    \r\n \r\n\r\n
  • setOpen(s => !s)}>\r\n Menu \r\n
  • \r\n {open ?
      setOpen(false)}>\r\n {pageLinks.map((link, i) =>
    • {link}
    • )}\r\n
    • \r\n {authLinks.map((link, i) =>
    • {link}
    • )}\r\n
    : null}\r\n
    ;\r\n};\r\n\r\nexport const Header: React.FC = () => {\r\n const { userName, name, userId } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n userId: s.userId,\r\n }));\r\n const headerLinks = ui.useState(s => s.headerLinks);\r\n\r\n const scrolled = useWindowScrolledTo(200);\r\n\r\n // Page Links\r\n const pageLinks = headerLinks.map(l => {l.name});\r\n const authLinks = [\r\n userId ? :\r\n Register,\r\n userId ? Log off :\r\n Login,\r\n ];\r\n\r\n return <>\r\n \r\n\r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n \r\n
    • \r\n\r\n {pageLinks.map((link, i) =>
    • {link}
    • )}\r\n {authLinks.map((link, i) =>
    • {link}
    • )}\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { auth, ui } from 'web-shared/store';\r\nimport { config } from 'web-frontend/lib';\r\nimport { UnknownLink } from './unknownLink';\r\nimport { AccountLink } from './accountLink';\r\nimport { useWindowScrollPosition } from 'web-shared/lib';\r\n\r\ninterface NavItemProps {\r\n name: string | React.ReactElement;\r\n href: string;\r\n title?: string;\r\n}\r\nconst NavItem: React.FC = function ({ name, href, title }) {\r\n return
  • \r\n {name}\r\n
  • ;\r\n};\r\n\r\nconst headerScrollHeight = 200;\r\n\r\n// Main application navbar\r\nexport const Header: React.FC<{}> = function () {\r\n const { userName, name } = auth.useState(s => ({\r\n userName: s.userName,\r\n name: s.name,\r\n }));\r\n const { headerLinks, hideLoginLinks } = ui.useState(s => ({\r\n headerLinks: s.headerLinks,\r\n hideLoginLinks: s.hideLoginLinks,\r\n }));\r\n\r\n const { y } = useWindowScrollPosition(50);\r\n\r\n const siteLogo = \r\n {config.site.name}\r\n ;\r\n const clientLogo = \r\n {config.client.name}\r\n ;\r\n\r\n const opacity = Math.max(0.4, Math.min(y / headerScrollHeight, 1));\r\n return
    \r\n \r\n
    \r\n {\r\n config.hideClientLogo ? siteLogo :\r\n config.clientLogoFirst\r\n ? <>{clientLogo}{siteLogo}\r\n : <>{siteLogo}
    by
    {clientLogo}\r\n }\r\n \r\n \r\n \r\n
    \r\n
    \r\n
      \r\n {headerLinks.map(v => v.isHidden ? null : )}\r\n {userName ? : null}\r\n {userName ? } href=\"/logoff\" title=\"Log off\" /> : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n {!userName && !hideLoginLinks ? : null}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport const UnknownLink: React.FC<{ url: string, title?: string }> = function ({ url, children, ...p }) {\r\n const urlString = (url || '').toLowerCase();\r\n if(!urlString)\r\n return null;\r\n\r\n const link = urlString.substr(0, 4) === 'http' || url.substr(0, 1) === '#'\r\n ? {children}\r\n : {children};\r\n\r\n return link;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { config } from 'web-frontend/lib';\r\n\r\ninterface Props {\r\n size: 'h2' | 'h3' | 'h4';\r\n}\r\nexport const Logo: React.FC = function ({ size = 'h4' }) {\r\n const styles = {\r\n h2: { height: 40 },\r\n h3: { height: 22 },\r\n h4: { height: 18 },\r\n };\r\n\r\n return {config.site.name}\r\n;\r\n};\r\n","import * as React from 'react';\r\nimport * as pdfjs from 'pdfjs-dist/legacy/build/pdf';\r\nimport PdfjsWorker from 'pdfjs-dist/legacy/build/pdf.worker';\r\n\r\nif(typeof window !== 'undefined' && 'Worker' in window) {\r\n pdfjs.GlobalWorkerOptions.workerPort = new PdfjsWorker();\r\n}\r\n\r\nexport const PdfPage: React.FC<{ scale: number; page: pdfjs.PDFPageProxy }> = function ({ page, scale }) {\r\n const canvasRef = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n const renderPdf = async () => {\r\n const canvas = canvasRef.current;\r\n const context = canvas?.getContext('2d');\r\n if(!canvas || !context)\r\n return;\r\n\r\n const viewport = page.getViewport({ scale });\r\n canvas.height = viewport.height;\r\n canvas.width = viewport.width;\r\n context.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n // Render PDF page into canvas context\r\n const renderTask = page.render({\r\n canvasContext: context!,\r\n viewport: viewport,\r\n });\r\n\r\n await renderTask.promise;\r\n };\r\n\r\n renderPdf();\r\n }, [page, scale]);\r\n\r\n return ;\r\n};\r\n\r\nfunction getPdfFromByteArray(content: string = '') {\r\n const bytes = window.atob(content);\r\n const byteLength = bytes.length;\r\n const byteArray = new Uint8Array(byteLength);\r\n for(let index = 0; index < byteLength; index++) {\r\n byteArray[index] = bytes.charCodeAt(index);\r\n }\r\n return byteArray;\r\n}\r\n\r\ninterface Props {\r\n file?: string;\r\n content?: string;\r\n scale: number;\r\n loading: React.ReactElement;\r\n downloadLink: string;\r\n onDocumentComplete: () => void;\r\n onDocumentFailed: () => void;\r\n}\r\nexport const Pdf: React.FC = ({ file, content, scale = 1.0, loading: loadingScreen, downloadLink, onDocumentComplete, onDocumentFailed }) => {\r\n const [state, setState] = React.useState({\r\n pages: [] as pdfjs.PDFPageProxy[],\r\n ready: false,\r\n });\r\n\r\n React.useEffect(() => {\r\n const fetchPdf = async () => {\r\n setState({ ready: false, pages: [] });\r\n\r\n // Load the PDF\r\n const loadingTask = pdfjs.getDocument({\r\n data: file ? file : getPdfFromByteArray(content),\r\n isEvalSupported: false,\r\n });\r\n const pdf = await loadingTask.promise;\r\n\r\n // Fetch all pages\r\n const pages = [];\r\n for(let i = 1; i <= pdf.numPages; i++) {\r\n const page = await pdf.getPage(i);\r\n\r\n // tslint:disable-next-line: no-array-mutation\r\n pages.push(page);\r\n }\r\n\r\n setState({ ready: true, pages });\r\n onDocumentComplete && onDocumentComplete();\r\n };\r\n\r\n try {\r\n fetchPdf();\r\n } catch(ex) {\r\n onDocumentFailed && onDocumentFailed();\r\n }\r\n }, [file, content]);\r\n\r\n if(!state.ready)\r\n return loadingScreen ||
    Loading PDF...
    ;\r\n\r\n return
    \r\n
    \r\n Save / Print\r\n
    \r\n {state.pages.map((page, i) => )}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from 'web-shared/lib';\r\nimport styled from 'styled-components';\r\nimport { IconNames } from 'web-shared/components';\r\n\r\nconst StyledColumn = styled.div`\r\n @media(max-width: 768px) { padding: 0; }\r\n`;\r\n\r\ninterface Props {\r\n children: any;\r\n label: string;\r\n labelInfo?: string | JSX.Element;\r\n labelSize?: 'is-three-quarters' | 'is-two-thirds' | 'is-half' | 'is-one-third' | 'is-one-quarter' | 'is-full' | 'is-four-fifths' | 'is-three-fifths' | 'is-two-fifths' | 'is-one-fifth';\r\n tooltip?: string;\r\n labelInfoFull?: boolean;\r\n controlPaddingTopEm?: number;\r\n icon?: IconNames;\r\n inputAddonLeft?: string | JSX.Element;\r\n inputAddonRight?: string | JSX.Element;\r\n buttonRight?: string | JSX.Element;\r\n error?: string | null;\r\n\tclassName?: string;\r\n\tstack?: boolean;\r\n\ttextOnly?: boolean;\r\n}\r\nexport const SearchField: React.FC = ({\r\n\tlabel, labelInfo, labelSize = '', tooltip, labelInfoFull, controlPaddingTopEm = 0, className, children, icon, inputAddonLeft, inputAddonRight,\r\n\terror, buttonRight, stack = false, textOnly = false\r\n}) => {\r\n let Container: keyof JSX.IntrinsicElements = 'div';\r\n const errors = React.Children.map(children, (c: React.ReactElement<{ 'data-error'?: string }>) => {\r\n if(!c)\r\n return '';\r\n if(c.type === 'input' || c.type === 'select')\r\n Container = 'label';\r\n return (c.props && c.props['data-error']) || '';\r\n })\r\n .filter(e => e);\r\n\r\n const mappedChildren = React.Children.map(children, (c: React.ReactElement) => {\r\n if(c?.type === 'select')\r\n\t\t\treturn
    {c}
    \r\n return c;\r\n });\r\n\r\n return
    \r\n \r\n\r\n \r\n\t\t\t\r\n {icon ? : null}\r\n {label} {tooltip ? : null}\r\n {labelInfo && !labelInfoFull ?
    {labelInfo}
    : null}\r\n
    \r\n\t\t\t\r\n
    0 })}>\r\n {inputAddonLeft ?\r\n
    \r\n
    \r\n \r\n\t\t\t\t\t\t\t\t\t\r\n {inputAddonLeft}\r\n \r\n \r\n \r\n {mappedChildren}\r\n \r\n
    \r\n
    \r\n : inputAddonRight ?
    \r\n
    \r\n \r\n {mappedChildren}\r\n \r\n \r\n \r\n {inputAddonRight}\r\n \r\n \r\n
    \r\n
    : buttonRight ?
    \r\n
    \r\n \r\n {mappedChildren}\r\n \r\n \r\n {buttonRight}\r\n \r\n
    \r\n
    : mappedChildren}\r\n
    \r\n
    {errors.map(e =>
    {e}
    )}
    \r\n {error ?
    {error}
    : null}\r\n
    \r\n
    \r\n {labelInfo && labelInfoFull ?
    {labelInfo}
    : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { useTable, useSortBy, useGlobalFilter, Column, SortingRule } from 'react-table';\r\nimport { classNames } from 'web-shared/lib';\r\n\r\nconst Styles = styled.div`\r\n .table.sticky th {\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0;\r\n z-index: 2;\r\n background-color: #fff;\r\n vertical-align: bottom;\r\n }\r\n th.indicator { text-align: center; }\r\n td.indicator { border-left: 1px solid #dbdbdb; text-align: center; }\r\n .fa-sort-desc, .fa-sort-asc { padding-left: 0.5em; font-size: 1.25em; }\r\n`;\r\n\r\nfunction saveSort(id: string, sortRule: SortingRule) {\r\n\tif('localStorage' in window)\r\n\t\tlocalStorage.setItem(`table-sort-${id}`, JSON.stringify(sortRule));\r\n}\r\nfunction loadSort(id: string): SortingRule {\r\n\ttry {\r\n\t\tif('localStorage' in window)\r\n\t\t\treturn JSON.parse(localStorage.getItem(`table-sort-${id}`) || '');\r\n\t} catch { }\r\n\treturn { id: '', desc: false };\r\n}\r\n\r\ninterface Props {\r\n\tid: string;\r\n\tcolumns: Column[];\r\n\tdata: D[];\r\n\tsearch?: string;\r\n\tnarrow?: boolean;\r\n\tsticky?: boolean;\r\n\tadditionalState?: object;\r\n}\r\nexport function Table({ id, columns, data, search, narrow, sticky, additionalState }: Props) {\r\n\tconst {\r\n\t\tgetTableProps,\r\n\t\tgetTableBodyProps,\r\n\t\theaderGroups,\r\n\t\trows,\r\n\t\tprepareRow,\r\n\t\tsetGlobalFilter,\r\n\t\tstate,\r\n\t} = useTable({\r\n\t\tcolumns,\r\n\t\tdata,\r\n\t\tautoResetSortBy: false,\r\n\t\tautoResetGlobalFilter: false,\r\n\t\tinitialState: {\r\n\t\t\tsortBy: [loadSort(id)],\r\n\t\t\t...(additionalState || {}),\r\n\t\t},\r\n\t}, useGlobalFilter, useSortBy);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tsetGlobalFilter(search);\r\n\t}, [search]);\r\n\r\n\t// Save sort changes\r\n\tReact.useEffect(() => {\r\n\t\tsaveSort(id, state.sortBy[0]);\r\n\t}, [state.sortBy]);\r\n\r\n\treturn \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{headerGroups.map(headerGroup => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{headerGroup.headers.map(column => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{rows.map(row => {\r\n\t\t\t\t\tprepareRow(row)\r\n\t\t\t\t\treturn \r\n\t\t\t\t\t\t{row.cells.map(cell => {\r\n\t\t\t\t\t\t\treturn \r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t\r\n\t\t\t\t})}\r\n\t\t\t\r\n\t\t
    \r\n\t\t\t\t\t\t\t\t{column.render('Header')}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{column.isSorted ? column.isSortedDesc\r\n\t\t\t\t\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\t\t\t: : ''}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t{cell.render('Cell')}\r\n\t\t\t\t\t\t\t
    \r\n\t
    ;\r\n};\r\n","import * as React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter as Router } from 'react-router-dom';\r\n\r\nimport 'core-js/stable';\r\nimport 'regenerator-runtime/runtime';\r\n\r\nimport './bulma.sass';\r\nimport './core.css';\r\n\r\nimport { config } from './lib/config';\r\nimport { HotApp } from './app';\r\nimport { isDevelopment } from 'web-shared/lib/isDevelopment';\r\nimport { initializeBugsnag } from 'web-shared/lib/initialize';\r\n\r\nif(isDevelopment) {\r\n // const axe = require('react-axe');\r\n // axe(React, ReactDOM, 1000);\r\n}\r\n\r\nconst bugsnagClient = initializeBugsnag();\r\nbugsnagClient.metaData = {\r\n client: {\r\n id: config.client.id,\r\n name: config.client.name,\r\n },\r\n};\r\nconst ErrorBoundary = bugsnagClient.getPlugin('react');\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('app_root'),\r\n);\r\n","import { getConfigFromElement } from \"web-shared/lib\";\r\n\r\nexport const config = getConfigFromElement('app_config') as api.SiteConfig;\r\n","import { initializeGa } from 'web-shared/lib';\r\nimport { config } from './config';\r\n\r\nexport const initializeGoogleAnalytics = () =>\r\n\tinitializeGa(config.client.id, config.googleAnalyticsCode);\r\n","import * as React from 'react';\r\nimport { useFormState } from 'react-use-form-state';\r\n\r\nimport { Section, SectionHeader, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\nimport { useHistory } from 'react-router';\r\nimport { postJson } from 'web-shared/lib';\r\nimport { StyledInstructions } from 'web-shared/pages/instructions';\r\n\r\ninterface FormFields {\r\n name: string;\r\n newEmail: string;\r\n newPassword: string;\r\n birthDate: Date;\r\n referral: string;\r\n}\r\n\r\nexport const Create: React.FC<{}> = () => {\r\n const history = useHistory();\r\n const [state, setState] = React.useState({\r\n busy: false,\r\n loggingIn: false,\r\n error: '',\r\n });\r\n const [form, { select, date, text, email, password, label }] = useFormState({}, {\r\n withIds: true,\r\n onBlur: e => e.target.classList.add('modified'),\r\n });\r\n const branchUser = auth.useState(s => s.branchUser);\r\n\r\n async function _submit(e: React.FormEvent) {\r\n e.preventDefault();\r\n\r\n setState(s => ({ ...s, busy: true, error: '' }));\r\n\r\n const postData = {\r\n Name: form.values.name,\r\n Email: form.values.newEmail,\r\n Password: form.values.newPassword,\r\n ReferralSource: form.values.referral,\r\n BirthDate: form.values.birthDate,\r\n BranchUser: branchUser,\r\n };\r\n\r\n const response = await postJson<{ id: number }>('/api/user/register', postData);\r\n\r\n setState(s => ({ ...s, busy: false, error: response.isError ? response.error : '' }));\r\n\r\n // Log the user in\r\n if(!response.isError && response.payload?.id) {\r\n setState(s => ({ ...s, loggingIn: true }));\r\n\r\n const loginResponse = await auth.login(form.values.newEmail, form.values.newPassword, false);\r\n\r\n // Clear the form\r\n form.clear();\r\n\r\n setState(s => ({\r\n ...s,\r\n loggingIn: false,\r\n error: 'IsError' in loginResponse && (loginResponse as any).IsError ? (loginResponse as any).ErrorMessage : '',\r\n }));\r\n\r\n // Redirect\r\n const { from = '/' } = history.location.state || {};\r\n history.replace(from);\r\n }\r\n }\r\n\r\n const ready = !state.busy && !state.loggingIn;\r\n const buttonText = state.busy ? 'Registering...'\r\n : (state.loggingIn ? 'Logging in...' : 'Create Login');\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n Create a login\r\n \r\n You will need to provide a valid email address and be able to receive/open PDF documents.\r\n \r\n
    \r\n\r\n {state.error ?
    \r\n
    {state.error}
    \r\n
    : null}\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n You will receive an email asking you to confirm your email registration and documenting you\r\n can receive, open and read attached PDF disclosures.\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Create } from './create';\r\nimport { LoginForm } from 'web-shared/pages/login';\r\n\r\nconst LoginRegisterPage: React.FC = () => {\r\n let hasLoggedInBefore = false;\r\n\r\n try {\r\n if(localStorage['successful-login'] === 'true')\r\n hasLoggedInBefore = true;\r\n } catch(e) {}\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n {hasLoggedInBefore ? : }\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {hasLoggedInBefore ? : }\r\n
    \r\n
    \r\n
    ;\r\n};\r\n\r\nexport default LoginRegisterPage;\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n question: string;\r\n answer: string;\r\n}\r\nexport const FaqItem: React.FC = function ({ question, answer }) {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n

    {question}

    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Section, SectionHeader } from 'web-shared/components';\r\nimport { FaqItem } from './faqItem';\r\n\r\ninterface Props {\r\n landing?: string;\r\n faqs: api.LandingPageFaq[];\r\n}\r\nexport const FaqPane: React.FC = ({ landing, faqs }) => {\r\n const items = faqs.length === 0\r\n ?
    No FAQs available at this time.
    \r\n : faqs.map((f, i) => );\r\n\r\n return
    \r\n \r\n \r\n Have questions? Want to learn more?\r\n \r\n \r\n\r\n
    \r\n {items}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Section, HtmlString, Button, SectionHeader } from 'web-shared/components';\r\n\r\ninterface Props {\r\n heading?: string;\r\n text: string;\r\n url: string;\r\n}\r\nexport const GetStartedPane: React.FC = ({\r\n heading, text, url\r\n}) => {\r\n if(!url || !text)\r\n return null;\r\n\r\n return
    \r\n \r\n\r\n \r\n {heading || 'What are you waiting for? Get started now!'}\r\n \r\n
    \r\n \r\n\r\n {url.indexOf(\"http\") === 0 ? \r\n \r\n : \r\n \r\n }\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n feature: api.LandingPageContent;\r\n}\r\nexport const Product: React.FC = function ({ feature, children }) {\r\n const details = (feature.details || '').split(/(\\r\\n|\\n)/g).filter(d => d.trim() !== '');\r\n\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    {feature.name}
    \r\n
    \r\n
    \r\n {children}\r\n
    \r\n
    \r\n\r\n
    \r\n
    {feature.subTitle}
    \r\n {details.map((d, i) =>\r\n
    \r\n \r\n
    \r\n
    ,\r\n )}\r\n
    \r\n\r\n {feature.bannerText ?
    \r\n {feature.bannerText}\r\n
    : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { HtmlString, Section } from 'web-shared/components';\r\nimport { Product } from './product';\r\n\r\ninterface Props {\r\n features: api.LandingPageContent[];\r\n featureSummaryText: string;\r\n}\r\nexport const ProductsPane: React.FC = function ({ features = [], featureSummaryText }) {\r\n\r\n const highlightStyle: React.CSSProperties = { color: 'var(--color-highlight)', fontWeight: 'bold' };\r\n const productHtml = features.map((p, i) => {\r\n const summary = ;\r\n return \r\n {summary}\r\n ;\r\n });\r\n const summary = !featureSummaryText ? null :\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ;\r\n\r\n return
    \r\n {summary}\r\n
    \r\n
    \r\n {productHtml}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\ninterface Props {\r\n name: string;\r\n date: string;\r\n}\r\nexport const TestimonyItem: React.FC = function ({ name, date, children }) {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    {name}
    \r\n
    {date}
    \r\n
    \r\n
    \r\n
    \r\n \r\n {children}\r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { Section, SectionHeader } from 'web-shared/components';\r\nimport { TestimonyItem } from './testimonyItem';\r\nimport { formatUtcDate } from 'web-shared/lib';\r\n\r\ninterface Props {\r\n testimonies: api.SiteConfigTestimony[];\r\n}\r\nexport const TestimonyPane: React.FC = ({ testimonies }) => {\r\n\r\n // Dont show if there is nothing to show\r\n if(testimonies.length === 0)\r\n return null;\r\n\r\n return
    \r\n \r\n What others are saying...\r\n \r\n\r\n
    \r\n {testimonies.map((t, i) => \r\n {t.text}\r\n )}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { RouteChildrenProps } from 'react-router-dom';\r\n\r\nimport { useHeaderLinks } from 'web-shared/lib';\r\nimport { HeaderPane } from 'web-frontend/components';\r\nimport { ProductsPane, FaqPane, GetStartedPane } from './components';\r\n\r\nimport { config as pageConfig} from 'web-frontend/lib';\r\n\r\ninterface Props extends RouteChildrenProps {\r\n url: string;\r\n config: api.LandingPageConfig;\r\n}\r\nexport const LandingPage: React.FC = ({ url, config }) => {\r\n useHeaderLinks([]);\r\n\r\n const { getStarted } = config;\r\n const faqs = config.faqConfig?.faqs?.filter(f => f.favorite);\r\n\r\n return
    \r\n \r\n \r\n {faqs.length ? : null}\r\n {pageConfig.site.type !== 'paycheck' ? : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from '../lib';\r\nimport { IconNames } from './icon';\r\n\r\ninterface Props {\r\n color?: 'primary' | 'secondary' | 'highlight' | 'danger' | 'white' | 'light' | 'dark' | 'black' | 'text' | 'success' | 'warning' | 'danger';\r\n size?: 'small' | 'normal' | 'medium' | 'large';\r\n fullWidth?: boolean;\r\n type?: 'submit' | 'button';\r\n name?: string;\r\n disabled?: boolean;\r\n onClick?: (e: React.MouseEvent) => void;\r\n borderColor?: string;\r\n flex?: boolean;\r\n icon?: IconNames;\r\n title?: string;\r\n loading?: boolean;\r\n className?: string;\r\n noBtnClass?: boolean;\r\n error?: boolean;\r\n}\r\n\r\nexport const Button: React.FC = function ({\r\n color, size = 'normal', type = 'button', error, name, disabled, fullWidth, children, onClick, borderColor, flex, icon, title, loading, className, noBtnClass\r\n}) {\r\n let btnStyle: React.CSSProperties = {};\r\n let colorClass;\r\n switch(color || '') {\r\n case 'primary':\r\n case 'danger':\r\n case 'secondary':\r\n case 'highlight':\r\n colorClass = `btn-${color}`;\r\n break;\r\n case '':\r\n break;\r\n default:\r\n colorClass = `is-${color || 'light'}` + ` btn-${color || 'light'}`\r\n break;\r\n }\r\n if(borderColor) {\r\n btnStyle.borderColor = borderColor;\r\n }\r\n if(flex) {\r\n btnStyle.height = 'auto';\r\n }\r\n\r\n return ;\r\n};\r\n","import * as React from 'react';\n\nimport { Modal } from './index';\n\ninterface Props {\n name: string;\n href: string;\n onProceed: () => void;\n onClose: () => void;\n}\nexport const ExternalLink: React.FC = ({ name, href, onClose, onProceed }) => {\n return \n \n\n
    \n

    Leaving {name}...

    \n\n

    \n You are leaving {location.hostname} and entering a website\n that {name} does not control.\n

    \n\n

    \n {name} has provided this link for your convenience, but does not endorse\n and is not responsible for the content, links, privacy policy, or security policy of\n this website.\n

    \n\n
    \n \n onProceed && onProceed()}>\n Proceed\n \n
    \n
    \n
    ;\n};\n","import * as React from 'react';\n\ninterface Props {\n text: string;\n query?: string;\n style?: React.CSSProperties;\n}\nexport const HighlightText: React.FC = function ({ text, query = '', style = {} }) {\n let queryStr: string | undefined = (query || '').toLowerCase().replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&');\n if(queryStr === '')\n queryStr = undefined;\n\n const regex = new RegExp(`(?:<[^>]+>)|(${query})`, 'gi');\n const styleText = Object.keys(style).map(key => {\n const value = (style as any)[key];\n switch(key) {\n case 'backgroundColor':\n return `background-color: ${value}`;\n case 'fontWeight':\n return `font-weight: ${value}`;\n case 'fontStyle':\n return `font-style: ${value}`;\n default:\n return '';\n }\n }).join(';');\n\n const html = (text || '').replace(regex, a => a.startsWith('<') ? a : `${a}`);\n return ;\n};\n","import * as React from 'react';\n\nconst regex = new RegExp('\\[^<]*)', 'gi');\n\nfunction getParagraphs(text: string) {\n return (text || '').split(/(\\r\\n|\\n)/gi);\n}\nfunction processMarkup(markupText: string, style: object) {\n // Split markup text with a regex\n return markupText.split(regex).map((p, i) => {\n // If the token starts with >, then we have a match for a tag\n if(p.toLowerCase().indexOf('>') === 0)\n return {p.substring(1)};\n return ;\n });\n}\n\ninterface Props {\n text?: string;\n tag?: string;\n style?: React.CSSProperties | undefined;\n}\nexport const HtmlString: React.FC = function ({ text, tag = 'div', style = {} }) {\n if(!text) {\n return
    ;\n }\n const paragraphs = getParagraphs(text);\n const results = paragraphs.map((p, i) => React.createElement(tag, { key: i }, processMarkup(p, style)));\n\n return
    {results}
    ;\n};\n","import * as React from 'react';\r\n\r\nexport type IconNames = '' | 'glass' | 'music' | 'search' | 'envelope-o' | 'heart' | 'star' | 'star-o' | 'user' | 'film' | 'th-large' | 'th' | 'th-list' | 'check' | 'remove' | 'close' | 'times' | 'search-plus' | 'search-minus' | 'power-off' | 'signal' | 'gear' | 'cog' | 'trash-o' | 'home' | 'file-o' | 'clock-o' | 'road' | 'download' | 'arrow-circle-o-down' | 'arrow-circle-o-up' | 'inbox' | 'play-circle-o' | 'rotate-right' | 'repeat' | 'refresh' | 'list-alt' | 'lock' | 'flag' | 'headphones' | 'volume-off' | 'volume-down' | 'volume-up' | 'qrcode' | 'barcode' | 'tag' | 'tags' | 'book' | 'bookmark' | 'print' | 'camera' | 'font' | 'bold' | 'italic' | 'text-height' | 'text-width' | 'align-left' | 'align-center' | 'align-right' | 'align-justify' | 'list' | 'dedent' | 'outdent' | 'indent' | 'video-camera' | 'photo' | 'image' | 'picture-o' | 'pencil' | 'map-marker' | 'adjust' | 'tint' | 'edit' | 'pencil-square-o' | 'share-square-o' | 'check-square-o' | 'arrows' | 'step-backward' | 'fast-backward' | 'backward' | 'play' | 'pause' | 'stop' | 'forward' | 'fast-forward' | 'step-forward' | 'eject' | 'chevron-left' | 'chevron-right' | 'plus-circle' | 'minus-circle' | 'times-circle' | 'check-circle' | 'question-circle' | 'info-circle' | 'crosshairs' | 'times-circle-o' | 'check-circle-o' | 'ban' | 'arrow-left' | 'arrow-right' | 'arrow-up' | 'arrow-down' | 'mail-forward' | 'share' | 'expand' | 'compress' | 'plus' | 'minus' | 'asterisk' | 'exclamation-circle' | 'gift' | 'leaf' | 'fire' | 'eye' | 'eye-slash' | 'warning' | 'exclamation-triangle' | 'plane' | 'calendar' | 'random' | 'comment' | 'magnet' | 'chevron-up' | 'chevron-down' | 'retweet' | 'shopping-cart' | 'folder' | 'folder-open' | 'arrows-v' | 'arrows-h' | 'bar-chart-o' | 'bar-chart' | 'twitter-square' | 'facebook-square' | 'camera-retro' | 'key' | 'gears' | 'cogs' | 'comments' | 'thumbs-o-up' | 'thumbs-o-down' | 'star-half' | 'heart-o' | 'sign-out' | 'linkedin-square' | 'thumb-tack' | 'external-link' | 'sign-in' | 'trophy' | 'github-square' | 'upload' | 'lemon-o' | 'phone' | 'square-o' | 'bookmark-o' | 'phone-square' | 'twitter' | 'facebook-f' | 'facebook' | 'github' | 'unlock' | 'credit-card' | 'feed' | 'rss' | 'hdd-o' | 'bullhorn' | 'bell' | 'certificate' | 'hand-o-right' | 'hand-o-left' | 'hand-o-up' | 'hand-o-down' | 'arrow-circle-left' | 'arrow-circle-right' | 'arrow-circle-up' | 'arrow-circle-down' | 'globe' | 'wrench' | 'tasks' | 'filter' | 'briefcase' | 'arrows-alt' | 'group' | 'users' | 'chain' | 'link' | 'cloud' | 'flask' | 'cut' | 'scissors' | 'copy' | 'files-o' | 'paperclip' | 'save' | 'floppy-o' | 'square' | 'navicon' | 'reorder' | 'bars' | 'list-ul' | 'list-ol' | 'strikethrough' | 'underline' | 'table' | 'magic' | 'truck' | 'pinterest' | 'pinterest-square' | 'google-plus-square' | 'google-plus' | 'money' | 'caret-down' | 'caret-up' | 'caret-left' | 'caret-right' | 'columns' | 'unsorted' | 'sort' | 'sort-down' | 'sort-desc' | 'sort-up' | 'sort-asc' | 'envelope' | 'linkedin' | 'rotate-left' | 'undo' | 'legal' | 'gavel' | 'dashboard' | 'tachometer' | 'comment-o' | 'comments-o' | 'flash' | 'bolt' | 'sitemap' | 'umbrella' | 'paste' | 'clipboard' | 'lightbulb-o' | 'exchange' | 'cloud-download' | 'cloud-upload' | 'user-md' | 'stethoscope' | 'suitcase' | 'bell-o' | 'coffee' | 'cutlery' | 'file-text-o' | 'building-o' | 'hospital-o' | 'ambulance' | 'medkit' | 'fighter-jet' | 'beer' | 'h-square' | 'plus-square' | 'angle-double-left' | 'angle-double-right' | 'angle-double-up' | 'angle-double-down' | 'angle-left' | 'angle-right' | 'angle-up' | 'angle-down' | 'desktop' | 'laptop' | 'tablet' | 'mobile-phone' | 'mobile' | 'circle-o' | 'quote-left' | 'quote-right' | 'spinner' | 'circle' | 'mail-reply' | 'reply' | 'github-alt' | 'folder-o' | 'folder-open-o' | 'smile-o' | 'frown-o' | 'meh-o' | 'gamepad' | 'keyboard-o' | 'flag-o' | 'flag-checkered' | 'terminal' | 'code' | 'mail-reply-all' | 'reply-all' | 'star-half-empty' | 'star-half-full' | 'star-half-o' | 'location-arrow' | 'crop' | 'code-fork' | 'unlink' | 'chain-broken' | 'question' | 'info' | 'exclamation' | 'superscript' | 'subscript' | 'eraser' | 'puzzle-piece' | 'microphone' | 'microphone-slash' | 'shield' | 'calendar-o' | 'fire-extinguisher' | 'rocket' | 'maxcdn' | 'chevron-circle-left' | 'chevron-circle-right' | 'chevron-circle-up' | 'chevron-circle-down' | 'html5' | 'css3' | 'anchor' | 'unlock-alt' | 'bullseye' | 'ellipsis-h' | 'ellipsis-v' | 'rss-square' | 'play-circle' | 'ticket' | 'minus-square' | 'minus-square-o' | 'level-up' | 'level-down' | 'check-square' | 'pencil-square' | 'external-link-square' | 'share-square' | 'compass' | 'toggle-down' | 'caret-square-o-down' | 'toggle-up' | 'caret-square-o-up' | 'toggle-right' | 'caret-square-o-right' | 'euro' | 'eur' | 'gbp' | 'dollar' | 'usd' | 'rupee' | 'inr' | 'cny' | 'rmb' | 'yen' | 'jpy' | 'ruble' | 'rouble' | 'rub' | 'won' | 'krw' | 'bitcoin' | 'btc' | 'file' | 'file-text' | 'sort-alpha-asc' | 'sort-alpha-desc' | 'sort-amount-asc' | 'sort-amount-desc' | 'sort-numeric-asc' | 'sort-numeric-desc' | 'thumbs-up' | 'thumbs-down' | 'youtube-square' | 'youtube' | 'xing' | 'xing-square' | 'youtube-play' | 'dropbox' | 'stack-overflow' | 'instagram' | 'flickr' | 'adn' | 'bitbucket' | 'bitbucket-square' | 'tumblr' | 'tumblr-square' | 'long-arrow-down' | 'long-arrow-up' | 'long-arrow-left' | 'long-arrow-right' | 'apple' | 'windows' | 'android' | 'linux' | 'dribbble' | 'skype' | 'foursquare' | 'trello' | 'female' | 'male' | 'gittip' | 'gratipay' | 'sun-o' | 'moon-o' | 'archive' | 'bug' | 'vk' | 'weibo' | 'renren' | 'pagelines' | 'stack-exchange' | 'arrow-circle-o-right' | 'arrow-circle-o-left' | 'toggle-left' | 'caret-square-o-left' | 'dot-circle-o' | 'wheelchair' | 'vimeo-square' | 'turkish-lira' | 'try' | 'plus-square-o' | 'space-shuttle' | 'slack' | 'envelope-square' | 'wordpress' | 'openid' | 'institution' | 'bank' | 'university' | 'mortar-board' | 'graduation-cap' | 'yahoo' | 'google' | 'reddit' | 'reddit-square' | 'stumbleupon-circle' | 'stumbleupon' | 'delicious' | 'digg' | 'pied-piper-pp' | 'pied-piper-alt' | 'drupal' | 'joomla' | 'language' | 'fax' | 'building' | 'child' | 'paw' | 'spoon' | 'cube' | 'cubes' | 'behance' | 'behance-square' | 'steam' | 'steam-square' | 'recycle' | 'automobile' | 'car' | 'cab' | 'taxi' | 'tree' | 'spotify' | 'deviantart' | 'soundcloud' | 'database' | 'file-pdf-o' | 'file-word-o' | 'file-excel-o' | 'file-powerpoint-o' | 'file-photo-o' | 'file-picture-o' | 'file-image-o' | 'file-zip-o' | 'file-archive-o' | 'file-sound-o' | 'file-audio-o' | 'file-movie-o' | 'file-video-o' | 'file-code-o' | 'vine' | 'codepen' | 'jsfiddle' | 'life-bouy' | 'life-buoy' | 'life-saver' | 'support' | 'life-ring' | 'circle-o-notch' | 'ra' | 'resistance' | 'rebel' | 'ge' | 'empire' | 'git-square' | 'git' | 'y-combinator-square' | 'yc-square' | 'hacker-news' | 'tencent-weibo' | 'qq' | 'wechat' | 'weixin' | 'send' | 'paper-plane' | 'send-o' | 'paper-plane-o' | 'history' | 'circle-thin' | 'header' | 'paragraph' | 'sliders' | 'share-alt' | 'share-alt-square' | 'bomb' | 'soccer-ball-o' | 'futbol-o' | 'tty' | 'binoculars' | 'plug' | 'slideshare' | 'twitch' | 'yelp' | 'newspaper-o' | 'wifi' | 'calculator' | 'paypal' | 'google-wallet' | 'cc-visa' | 'cc-mastercard' | 'cc-discover' | 'cc-amex' | 'cc-paypal' | 'cc-stripe' | 'bell-slash' | 'bell-slash-o' | 'trash' | 'copyright' | 'at' | 'eyedropper' | 'paint-brush' | 'birthday-cake' | 'area-chart' | 'pie-chart' | 'line-chart' | 'lastfm' | 'lastfm-square' | 'toggle-off' | 'toggle-on' | 'bicycle' | 'bus' | 'ioxhost' | 'angellist' | 'cc' | 'shekel' | 'sheqel' | 'ils' | 'meanpath' | 'buysellads' | 'connectdevelop' | 'dashcube' | 'forumbee' | 'leanpub' | 'sellsy' | 'shirtsinbulk' | 'simplybuilt' | 'skyatlas' | 'cart-plus' | 'cart-arrow-down' | 'diamond' | 'ship' | 'user-secret' | 'motorcycle' | 'street-view' | 'heartbeat' | 'venus' | 'mars' | 'mercury' | 'intersex' | 'transgender' | 'transgender-alt' | 'venus-double' | 'mars-double' | 'venus-mars' | 'mars-stroke' | 'mars-stroke-v' | 'mars-stroke-h' | 'neuter' | 'genderless' | 'facebook-official' | 'pinterest-p' | 'whatsapp' | 'server' | 'user-plus' | 'user-times' | 'hotel' | 'bed' | 'viacoin' | 'train' | 'subway' | 'medium' | 'yc' | 'y-combinator' | 'optin-monster' | 'opencart' | 'expeditedssl' | 'battery-4' | 'battery' | 'battery-full' | 'battery-3' | 'battery-three-quarters' | 'battery-2' | 'battery-half' | 'battery-1' | 'battery-quarter' | 'battery-0' | 'battery-empty' | 'mouse-pointer' | 'i-cursor' | 'object-group' | 'object-ungroup' | 'sticky-note' | 'sticky-note-o' | 'cc-jcb' | 'cc-diners-club' | 'clone' | 'balance-scale' | 'hourglass-o' | 'hourglass-1' | 'hourglass-start' | 'hourglass-2' | 'hourglass-half' | 'hourglass-3' | 'hourglass-end' | 'hourglass' | 'hand-grab-o' | 'hand-rock-o' | 'hand-stop-o' | 'hand-paper-o' | 'hand-scissors-o' | 'hand-lizard-o' | 'hand-spock-o' | 'hand-pointer-o' | 'hand-peace-o' | 'trademark' | 'registered' | 'creative-commons' | 'gg' | 'gg-circle' | 'tripadvisor' | 'odnoklassniki' | 'odnoklassniki-square' | 'get-pocket' | 'wikipedia-w' | 'safari' | 'chrome' | 'firefox' | 'opera' | 'internet-explorer' | 'tv' | 'television' | 'contao' | '500px' | 'amazon' | 'calendar-plus-o' | 'calendar-minus-o' | 'calendar-times-o' | 'calendar-check-o' | 'industry' | 'map-pin' | 'map-signs' | 'map-o' | 'map' | 'commenting' | 'commenting-o' | 'houzz' | 'vimeo' | 'black-tie' | 'fonticons' | 'reddit-alien' | 'edge' | 'credit-card-alt' | 'codiepie' | 'modx' | 'fort-awesome' | 'usb' | 'product-hunt' | 'mixcloud' | 'scribd' | 'pause-circle' | 'pause-circle-o' | 'stop-circle' | 'stop-circle-o' | 'shopping-bag' | 'shopping-basket' | 'hashtag' | 'bluetooth' | 'bluetooth-b' | 'percent' | 'gitlab' | 'wpbeginner' | 'wpforms' | 'envira' | 'universal-access' | 'wheelchair-alt' | 'question-circle-o' | 'blind' | 'audio-description' | 'volume-control-phone' | 'braille' | 'assistive-listening-systems' | 'asl-interpreting' | 'american-sign-language-interpreting' | 'deafness' | 'hard-of-hearing' | 'deaf' | 'glide' | 'glide-g' | 'signing' | 'sign-language' | 'low-vision' | 'viadeo' | 'viadeo-square' | 'snapchat' | 'snapchat-ghost' | 'snapchat-square' | 'pied-piper' | 'first-order' | 'yoast' | 'themeisle' | 'google-plus-circle' | 'google-plus-official' | 'fa' | 'font-awesome' | 'handshake-o' | 'envelope-open' | 'envelope-open-o' | 'linode' | 'address-book' | 'address-book-o' | 'vcard' | 'address-card' | 'vcard-o' | 'address-card-o' | 'user-circle' | 'user-circle-o' | 'user-o' | 'id-badge' | 'drivers-license' | 'id-card' | 'drivers-license-o' | 'id-card-o' | 'quora' | 'free-code-camp' | 'telegram' | 'thermometer-4' | 'thermometer' | 'thermometer-full' | 'thermometer-3' | 'thermometer-three-quarters' | 'thermometer-2' | 'thermometer-half' | 'thermometer-1' | 'thermometer-quarter' | 'thermometer-0' | 'thermometer-empty' | 'shower' | 'bathtub' | 's15' | 'bath' | 'podcast' | 'window-maximize' | 'window-minimize' | 'window-restore' | 'times-rectangle' | 'window-close' | 'times-rectangle-o' | 'window-close-o' | 'bandcamp' | 'grav' | 'etsy' | 'imdb' | 'ravelry' | 'eercast' | 'microchip' | 'snowflake-o' | 'superpowers' | 'wpexplorer' | 'meetup';\r\n\r\ninterface Props {\r\n name: IconNames;\r\n widthEm?: number;\r\n sizeEm?: number;\r\n color?: string;\r\n marginTop?: string;\r\n marginLeft?: string;\r\n marginRight?: string;\r\n}\r\nexport const Icon: React.FC = ({ name, widthEm, sizeEm, color, marginLeft, marginRight, marginTop }) => {\r\n return ;\r\n};\r\n","import * as React from 'react';\n\ninterface Props {\n type: string;\n autoFocus?: boolean;\n isValid: boolean;\n}\nexport const Input: React.FC = (props) => {\n const { isValid, ...p } = props;\n const showValidation = isValid !== undefined;\n const iconClass = 'fa fa-' + (isValid === true ? 'check' : 'times');\n\n const className = !showValidation ? ''\n : (isValid === true ? 'input-group has-success' : 'input-group has-error');\n\n const addon = !showValidation ? null :\n
    \n \n
    ;\n\n return
    \n \n\n
    \n \n {addon}\n
    \n\n {\n isValid === true || isValid === undefined || !isValid ? null :\n
    \n
    \n
    \n {isValid}\n
    \n
    \n }\n\n
    ;\n};\n","import * as React from 'react';\n\ninterface Props {\n active?: boolean;\n speed?: number;\n color?: string;\n height?: number;\n}\n\nexport class LoadingBar extends React.Component {\n state = {\n width: 0,\n left: 0,\n };\n interval = 0;\n\n componentDidMount() {\n const { speed = 20 } = this.props;\n this.interval = window.setInterval(this.animate.bind(this), speed);\n }\n componentWillUnmount() {\n window.clearInterval(this.interval);\n }\n\n animate() {\n const { active = false } = this.props;\n\n if(active !== true) {\n return false;\n }\n\n let { left, width } = this.state;\n if(left === 0 && width < 100) {\n width += 4;\n } else if(width <= 100 && left < 100) {\n left += 4;\n width -= 4;\n } else if(left === 100 && width === 0) {\n left = 0;\n }\n\n this.setState({ left: left, width: width });\n }\n\n render() {\n let { left, width } = this.state;\n const { active = false, height = 2, color = '#60d778' } = this.props;\n\n const style = {\n left: `${active ? left : 0}%`,\n width: `${active ? width : 100}%`,\n height: `${height}px`,\n backgroundColor: color,\n };\n return \n \n\n
    \n ;\n }\n}\n","import * as React from 'react';\nimport classNames from 'classnames';\nimport { LoadingBar } from './loadingBar';\nimport { SectionHeader } from './sectionHeader';\nimport { IconNames } from './icon';\n\ninterface Props {\n title?: string;\n icon?: IconNames;\n isError?: boolean;\n fullPage?: boolean;\n children?: string;\n}\n\nexport const LoadingMessage: React.FC = (props) => {\n const { isError, title, children, icon, fullPage } = props;\n\n const headerIcon = icon || (isError ? 'exclamation-circle' : 'clock-o');\n return \n \n\n
    \n {title || (isError ? 'Error...' : 'Loading...')}\n \n
    \n
    \n
    \n {children !== undefined ? children : (\n isError ? '' : 'Please wait while we retrieve this information.'\n )}\n
    \n
    \n
    \n
    \n
    ;\n};\n","import * as React from 'react';\nimport MasonryComponent, { MasonryOptions } from 'react-masonry-component';\n\ninterface Props {\n options?: MasonryOptions;\n style?: HTMLStyleElement;\n className?: string;\n elementType?: string;\n}\n\nexport const Masonry: React.FC = props => {\n const { children, options, style, className, elementType } = props;\n\n return \n {children}\n ;\n};\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { FocusOn } from 'react-focus-on';\r\nimport styled, { CSSProperties } from 'styled-components';\r\n\r\nlet iOS = false;\r\nif(typeof navigator !== 'undefined') {\r\n iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !(window as any).MSStream;\r\n}\r\n\r\nconst StyledBackdrop = styled.div`background-color: #000; position: fixed; top: 0; bottom: 0; left: 0; right: 0; opacity: 0.8; z-index: 99; width: 100vw; height: 100vh;`;\r\nconst StyledModal = styled.div`\r\n position: fixed; z-index: 999; margin: 0;\r\n display: flex; width: 100vw; height: 100${iOS ? '%' : 'vh'};\r\n flex-direction: column; top: 0; left: 0;\r\n align-items: center;\r\n\r\n & > div {\r\n display: flex;\r\n flex-direction: column;\r\n width: 100vw;\r\n height: 100${iOS ? '%' : 'vh'};\r\n max-height: 100${iOS ? '%' : 'vh'};\r\n @media screen and (min-width: 767px) {\r\n padding: 2.5em;\r\n }\r\n }\r\n\r\n & .btn { background-color: #244062; background-color: var(--color-secondary); color: #fff; margin: 0; padding: 0 20px; border: 0; border-radius: 0; cursor: pointer; }\r\n & .btn:hover { background-color: #1b304a; background-color: var(--color-secondary-dark-25); }\r\n & .body { background-color: #fff; overflow-y: auto; flex: 1; padding: 1em; width: 100%; }\r\n`;\r\nconst StyledHeader = styled.div`\r\n background-color: #244062; background-color: var(--color-secondary); color: #fff; padding: 0; width: 100%; display: flex;\r\n & > div { flex: 1; padding: 5px 15px; margin: 0; }\r\n & .btn { font-size: 1.5em; }\r\n & .header-title { font-size: 2em; min-height: 1em; }\r\n & .header-subtitle { font-style: italic; }\r\n @media(max-width: 768px) {\r\n & .header-title { font-size: 1.3em; }\r\n & .header-subtitle { font-size: 0.8em; }\r\n }\r\n`;\r\nconst StyledFooter = styled.div`\r\n background-color: #244062; background-color: var(--color-secondary); color: #fff; padding: 0; width: 100%; display: flex; min-height: 50px;\r\n & > div { flex: 1; }\r\n & .btn { font-size: 1em; }\r\n & .footerText { float: left; padding: 14px; font-size: 1.1em; }\r\n & .btn-success { background-color: #4F6228; background-color: var(--color-primary); }\r\n & .btn-success:enabled:hover { background-color: #3b4a1e; background-color: var(--color-primary-dark-25); }\r\n & .btn-success:disabled { background-color: #728153; background-color: var(--color-primary-light-25); cursor: not-allowed; }\r\n @media(max-width: 768px) {\r\n & .footerText { font-size: 0.9em; }\r\n }\r\n`;\r\n\r\ninterface Props {\r\n title: string | React.ReactElement;\r\n subtitle?: string;\r\n footerText?: string | React.ReactElement;\r\n okText?: string;\r\n cancelText?: string;\r\n onOk?: () => void;\r\n onClose?: () => void;\r\n isReady?: boolean;\r\n bodyStyle?: React.CSSProperties;\r\n maxWidth?: 'fit-content' | 'min-content' | 'max-content' | (string & {});\r\n fullHeight?: boolean;\r\n fullScreen?: boolean;\r\n}\r\nexport const Modal: React.FC = (p) => {\r\n const { title = '', subtitle = '', okText = 'Ok', cancelText = '', footerText = '', children, onOk, onClose,\r\n maxWidth, fullHeight = true, bodyStyle = {}, isReady = true, fullScreen = false } = p;\r\n\r\n function _handleOk(e: React.MouseEvent | React.TouchEvent | Event | MouseEvent | TouchEvent) {\r\n e.stopPropagation();\r\n onOk && onOk();\r\n }\r\n function _handleClose(e: React.MouseEvent | React.TouchEvent | Event | MouseEvent | TouchEvent) {\r\n e.stopPropagation();\r\n onClose && onClose();\r\n }\r\n\r\n // Ref to hold the portal div\r\n const rootElemRef = React.useRef();\r\n if(!rootElemRef.current) {\r\n rootElemRef.current = document.createElement('aside');\r\n }\r\n\r\n // Hook to create add the portal div to the DOM\r\n React.useEffect(() => {\r\n const parentElem = document.body;\r\n // Add the detached element to the parent\r\n parentElem.appendChild(rootElemRef.current as Node);\r\n // This function is run on unmount\r\n return () => { rootElemRef.current?.remove(); };\r\n }, []);\r\n\r\n const style: CSSProperties = maxWidth ? { maxWidth } : {};\r\n if(!fullHeight)\r\n style.height = 'unset';\r\n if(fullScreen)\r\n style.padding = 0;\r\n\r\n return ReactDOM.createPortal(\r\n \r\n \r\n
    \r\n {title ? \r\n
    \r\n
    {title}
    \r\n {subtitle ?
    {subtitle}
    : null}\r\n
    \r\n \r\n
    : null}\r\n
    \r\n {children}\r\n
    \r\n {okText || cancelText ? \r\n
    {footerText}
    \r\n {cancelText ? : null}\r\n {okText ? : null}\r\n
    : null}\r\n
    \r\n
    \r\n
    , rootElemRef.current);\r\n};\r\n","import * as React from 'react';\r\nimport { Icon, IconNames, Spinner } from './index';\r\nimport { classNames } from 'web-shared/lib';\r\n\r\ninterface Props {\r\n title?: string | React.ReactNode;\r\n subTitle?: string;\r\n icon?: IconNames;\r\n marginEm?: number;\r\n spinner?: 'circle' | 'horizontal';\r\n color?: string;\r\n colorSubTitle?: string;\r\n fullPage?: boolean;\r\n sizeEm?: number;\r\n pre?: boolean;\r\n}\r\n\r\nexport const NonIdealState: React.FC = (props) => {\r\n const {\r\n children, title, subTitle, icon, marginEm, spinner, sizeEm = 1, pre,\r\n color = '#555', fullPage,\r\n colorSubTitle = '#777',\r\n } = props;\r\n\r\n return
    \r\n \r\n\r\n {icon === '' ? null :
    \r\n {spinner ? :\r\n }\r\n
    }\r\n\r\n {!title ? null :
    {title}
    }\r\n {subTitle ?
    {subTitle}
    : null}\r\n {children}\r\n
    ;\r\n};\r\n","import * as React from 'react';\nimport numeral from 'numeral';\n\ninterface Props {\n page: number;\n pageSize: number;\n totalResults: number;\n style?: {};\n hideResults?: boolean;\n onPageChange: (page: number) => any;\n}\n\nexport const Pager: React.FC = (props) => {\n function _onNextPage() {\n const { onPageChange, page } = props;\n onPageChange && onPageChange(page + 1);\n }\n function _onPreviousPage () {\n const { onPageChange, page } = props;\n onPageChange && onPageChange(page - 1);\n }\n\n const { page, totalResults, pageSize, hideResults = false, style } = props;\n const maxPages = isNaN(Math.ceil(totalResults / pageSize)) ? '??' : Math.ceil(totalResults / pageSize);\n\n return
    \n \n\n
      \n Page {page} of {maxPages}\n  \n
    • \n \n
    • \n  \n
    • \n \n
    • \n  \n { hideResults ? null : {numeral(totalResults).format('0,0')} Results }\n
    \n
    ;\n};\n","import * as React from 'react';\r\nimport { formatRelativeDateTime, formatUtcDateTime } from '../lib';\r\n\r\nfunction getNextTimeout(ageInSeconds: number) {\r\n // Get current age of item\r\n return ageInSeconds <= 60 ? 5000 :\r\n ageInSeconds <= 3600 ? 30000 : 120000;\r\n}\r\n\r\ninterface Props {\r\n utcTime: Date | string;\r\n dateOnly?: boolean;\r\n}\r\nexport const RelativeTime: React.FC = function ({ utcTime, dateOnly }) {\r\n const [count, setCount] = React.useState(0);\r\n\r\n const ageInSeconds = (new Date().valueOf() - new Date(utcTime).valueOf()) / 1000.0;\r\n React.useEffect(() => {\r\n if(dateOnly) return;\r\n\r\n const next = getNextTimeout(ageInSeconds);\r\n const timer = next > 0 ? window.setTimeout(() => setCount(count + 1), next) : undefined;\r\n\r\n return () => { timer && clearTimeout(timer); };\r\n }, [count]);\r\n\r\n const relativeTime = formatRelativeDateTime(utcTime);\r\n return {dateOnly && relativeTime.indexOf('hour') !== -1 ? 'the last 24 hours' : relativeTime};\r\n};\r\n","import * as React from 'react';\r\nimport { Link as ReactRouterLink } from 'react-router-dom';\r\n\r\ninterface LinkToObject {\r\n\tpathname: string;\r\n\tsearch?: string;\r\n\thash?: string;\r\n\tstate?: object;\r\n}\r\ninterface Props {\r\n\tto: string | LinkToObject;\r\n\treplace?: boolean;\r\n\tcomponent?: React.ComponentType;\r\n\tinnerRef?: React.Ref;\r\n}\r\n\r\nconst whitelistKeys = ['_ga'];\r\nexport const Link: React.FC = ({ to, replace, component, innerRef }) => {\r\n\tconst toWithQuery: LinkToObject = typeof (to) === 'string' ? { pathname: to, search: '' } : { ...to };\r\n\r\n\t// See if we have search params we want to persist\r\n\tconst search = new URLSearchParams(window.location.search);\r\n\tconst searchKeys = Array.from(search.keys());\r\n\tconst keepKeys = searchKeys.filter(k => whitelistKeys.indexOf(k) !== -1 || k.startsWith('utm_'));\r\n\r\n\tconst newSearch = new URLSearchParams();\r\n\tkeepKeys.forEach(k => {\r\n\t\tnewSearch.append(k, search.get(k));\r\n\t});\r\n\ttoWithQuery.search = newSearch.toString();\r\n\r\n\treturn ;\r\n};\r\n","import * as React from 'react';\r\nimport { Route, RouteProps, Redirect } from 'react-router-dom';\r\nimport { ui } from 'web-shared/store';\r\n\r\nexport const PrivateRoute: React.FC = ({ children, title, token, component, applicationType, ...rest }) => {\r\n return {\r\n if(token) {\r\n const pageBaseName = ui.getStateSnapshot().name;\r\n document.title = `${pageBaseName} - ${title}`;\r\n ui.setPageTitle(title);\r\n }\r\n return token ? children || React.createElement(component!, { ...props, applicationType })\r\n : ;\r\n }\r\n } />;\r\n};\r\n","import * as React from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { ui } from 'web-shared/store';\n\ninterface Props extends RouteProps {\n title: string;\n componentProps?: object;\n}\nexport const PublicRoute: React.FC = ({ children, title, component, componentProps = {}, ...rest }) => {\n return {\n const pageBaseName = ui.getStateSnapshot().name;\n ui.setPageTitle(title);\n document.title = `${pageBaseName} - ${title}`;\n return children || React.createElement(component!, { ...props, ...componentProps });\n }\n } />;\n};\n","import * as React from 'react';\nimport scrollIntoView, { Options } from 'scroll-into-view-if-needed';\n// import { dbg } from '../lib';\n\ninterface Props {\n name?: string;\n active?: boolean;\n elementType?: string;\n options?: Options;\n}\nexport const ScrollIntoView: React.FC = (props) => {\n const {\n active = true,\n elementType = 'div',\n options = {},\n children,\n } = props;\n\n const nodeRef = React.useRef(undefined);\n React.useEffect(() => {\n if(active && nodeRef.current) {\n // props.name && dbg('ScrollIntoView', props.name, 'green');\n if(!options.behavior)\n options.behavior = 'smooth';\n if(!options.scrollMode)\n options.scrollMode = 'if-needed';\n if(!options.block)\n options.block = 'start';\n scrollIntoView(nodeRef.current, options);\n }\n }, [active]);\n\n return React.createElement(elementType, { ref: nodeRef }, children);\n};\n","import * as React from 'react';\r\n\r\nimport { classNames } from '../lib';\r\n\r\ninterface Props {\r\n id?: string;\r\n color?: 'none' | 'primary' | 'secondary' | 'inverse' | 'white' | 'primary-light' | 'secondary-light';\r\n style?: React.CSSProperties;\r\n fluid?: boolean;\r\n css?: string;\r\n sticky?: boolean | number;\r\n className?: string;\r\n}\r\nexport const Section: React.FC = function (props) {\r\n const { color = 'none', style = {}, fluid = false, css, sticky, className } = props;\r\n\r\n const _colors = {\r\n none: '',\r\n white: 'background-color: #fff;',\r\n primary: `color: #fff; background-color: #4f6228; background-color: var(--color-primary);`,\r\n 'primary-light': `color: #fff; background-color: #728153; background-color: var(--color-primary-light-25);`,\r\n secondary: `color: #fff; background-color: #244062; background-color: var(--color-secondary);`,\r\n 'secondary-light': `color: #fff; background-color: #506681; background-color: var(--color-secondary-light-25);`,\r\n inverse: `background-color: #222; color: #fff;`,\r\n };\r\n\r\n const isSticky = sticky !== undefined && sticky !== false;\r\n const stickyPos = sticky === true || !isSticky ? 0 : sticky as number;\r\n\r\n return
    \r\n \r\n\r\n
    \r\n {props.children}\r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport { classNames } from '../lib';\r\nimport styled from 'styled-components';\r\n\r\ninterface Props {\r\n icon?: string;\r\n color?: string;\r\n size?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\r\n center?: boolean;\r\n id?: string;\r\n direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';\r\n tag?: 'div' | 'span' | 'h1' | 'h2' | 'h3';\r\n tabIndex?: number;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nconst StyledRoot = styled.div`\r\n margin: 10px 0;\r\n &.h1 { margin-top: 0; font-size: 3em; }\r\n &.h2 { margin-top: 0; font-size: 2.8em; }\r\n &.h3 { margin-top: 0; font-size: 2.6em; }\r\n &.h4 { margin-top: 0; font-size: 2.2em; }\r\n &.h5 { margin-top: 0; font-size: 1.8em; }\r\n &.h6 { margin-top: 0; font-size: 1.5em; }\r\n & .headerText { margin-top: 0; line-height: 1.1em; display: flex; }\r\n & .subText { font-size: 1.3em; margin-bottom: 10px; }\r\n & .icon { margin-right: 20px; font-size: 1.3em; height: 1em; width: 1em; float: left; }\r\n\r\n @media(max-width: 768px) {\r\n &.h1 { margin-top: 0; font-size: 2.5em; }\r\n &.h2 { margin-top: 0; font-size: 2em; }\r\n &.h3 { margin-top: 0; font-size: 1.6em; }\r\n &.h4 { margin-top: 0; font-size: 1.2em; }\r\n &.h5 { margin-top: 0; font-size: 1.1em; }\r\n &.h6 { margin-top: 0; font-size: 1em; }\r\n }\r\n`;\r\n\r\nexport const SectionHeader: React.FC = props => {\r\n const { icon, color, size = 'h2', tag = 'div', center = false, id, direction = 'row', tabIndex, children, style } = props;\r\n\r\n const headerStyle: React.CSSProperties = {};\r\n if(center) {\r\n headerStyle.textAlign = 'center';\r\n headerStyle.justifyContent = 'center';\r\n }\r\n if(color === 'danger') {\r\n headerStyle.color = '#C0504D';\r\n }\r\n\r\n return React.createElement(tag, { tabIndex, style: headerStyle, id },\r\n \r\n \r\n
    \r\n {icon ?
    : null}\r\n {children}\r\n
    \r\n ,\r\n );\r\n};\r\n","import * as React from 'react';\nimport { shadeColor } from '../../lib';\n\ninterface Props {\n loading?: boolean;\n color?: string;\n height?: string;\n width?: string;\n id?: string;\n}\n\nexport const BarLoader: React.FC = function ({ loading = true, color = '#555', width = '100%', height = '4px', id }) {\n return loading ?
    \n \n
    \n
    \n
    : null;\n};\n","import * as React from 'react';\n\ninterface Props {\n loading?: boolean;\n color?: string;\n size?: string;\n id?: string;\n className?: string;\n}\nexport const ClipLoader: React.FC = function ({ loading = true, color = '#555', size = '35px', id, className }) {\n return loading ?
    \n \n
    \n
    : null;\n};\n","import * as React from 'react';\r\n\r\nexport type SpinnerType = 'circle' | 'horizontal';\r\ninterface IProps {\r\n type?: SpinnerType;\r\n color?: string;\r\n center?: boolean;\r\n heightEm?: number;\r\n margin?: string | number;\r\n\r\n inlineText?: string;\r\n}\r\n\r\nconst HorizontalSpinner: React.FC = ({ color = '' }) => {\r\n return \r\n \r\n\r\n \r\n \r\n \r\n ;\r\n};\r\n\r\nconst CircleSpinner: React.FC = ({ color = '' }) => {\r\n return
    \r\n \r\n\r\n
    \r\n
    \r\n
    ;\r\n};\r\n\r\nexport const Spinner: React.FC = ({ inlineText, ...props }) => {\r\n let Component;\r\n switch(props.type) {\r\n case 'horizontal':\r\n Component = HorizontalSpinner;\r\n break;\r\n default:\r\n Component = CircleSpinner;\r\n break;\r\n }\r\n\r\n return
    \r\n \r\n\r\n \r\n \r\n \r\n {inlineText ? {inlineText} : null}\r\n
    ;\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { classNames } from 'web-shared/lib';\r\nimport { IconNames } from './icon';\r\n\r\nconst StyledSteps = styled.div`\r\n--rs-icon-diameter: 30px;\r\n--steps-icon-spacing: 10px;\r\n--steps-icon-space-width: calc(var(--rs-icon-diameter) + var(--steps-icon-spacing));\r\n--steps-icon-size: 16px;\r\n--steps-icon-line-height: calc((var(--rs-icon-diameter) - 2px) / var(--steps-icon-size));\r\n\r\n--small-steps-icon-diameter: 24px;\r\n--small-steps-icon-space-width: calc(var(--small-steps-icon-diameter) + var(--steps-icon-spacing));\r\n--small-steps-icon-line-height: calc(((var(--small-steps-icon-diameter) - 2px) / calc(--font-size-base)));\r\n--small-steps-title-line-height: calc((var(--small-steps-icon-diameter) / var(--font-size-base)));\r\n--small-steps-icon-size: var(--font-size-base);\r\n--small-steps-description-font-size: var(--font-size-small);\r\n--small-steps-description-line-height: var(--line-height-small);\r\n--small-steps-description-margin-top: 12px;\r\n\r\n.rs-steps {\r\n min-height: var(--rs-icon-diameter);\r\n}\r\n\r\n// Item\r\n// --------------------------\r\n.rs-steps-item {\r\n padding-left: var(--steps-icon-space-width);\r\n position: relative;\r\n overflow: hidden;\r\n}\r\n\r\n// Item icon\r\n.rs-steps-item-icon-wrapper {\r\n width: var(--rs-icon-diameter);\r\n height: var(--rs-icon-diameter);\r\n text-align: center;\r\n font-size: var(--steps-icon-size);\r\n line-height: var(--steps-icon-line-height);\r\n color: var(--rs-text-secondary);\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n display: flex;\r\n align-items: center;\r\n border: 1px solid var(--rs-steps-border);\r\n border-radius: 50%;\r\n\r\n // Finish status show check mark.\r\n .rs-steps-item-status-finish & {\r\n border-color: var(--rs-steps-state-finish);\r\n color: var(--rs-steps-state-finish);\r\n }\r\n\r\n // Error status show X mark.\r\n .rs-steps-item-status-error & {\r\n border-color: var(--rs-steps-state-error);\r\n color: var(--rs-steps-state-error);\r\n }\r\n\r\n .rs-steps-item-status-process & {\r\n border-color: var(--rs-steps-state-process);\r\n background-color: var(--rs-steps-state-process);\r\n color: var(--rs-text-inverse);\r\n\r\n .rs-icon {\r\n color: var(--rs-steps-icon-state-process);\r\n }\r\n }\r\n\r\n &.rs-steps-item-custom-icon {\r\n border: none;\r\n background: none;\r\n }\r\n\r\n // Icon content\r\n > .rs-steps-item-icon {\r\n width: 100%;\r\n display: block;\r\n text-align: center;\r\n position: relative;\r\n\r\n .rs-icon {\r\n font-size: 14px;\r\n vertical-align: middle;\r\n }\r\n }\r\n}\r\n\r\n// Item content\r\n// --------------------------\r\n.rs-steps-item-content {\r\n color: var(--rs-text-secondary);\r\n display: inline-block;\r\n position: relative;\r\n width: 100%;\r\n\r\n .rs-steps-item-status-process & {\r\n color: var(--rs-text-primary);\r\n }\r\n\r\n .rs-steps-item-status-error & {\r\n color: var(--rs-text-error);\r\n }\r\n}\r\n\r\n// Item title\r\n.rs-steps-item-title {\r\n position: relative;\r\n font-size: var(--steps-title-font-size);\r\n line-height: var(--steps-title-line-height);\r\n min-height: var(--steps-title-font-size);\r\n padding-right: var(--steps-icon-spacing);\r\n display: inline-block;\r\n\r\n &:empty {\r\n padding-right: 0;\r\n }\r\n}\r\n\r\n// Item description\r\n.rs-steps-item-description {\r\n margin-top: var(--steps-description-margin-top);\r\n}\r\n\r\n.rs-steps-item-tail,\r\n.rs-steps-item-title::after {\r\n position: absolute;\r\n border-color: var(--rs-steps-border);\r\n\r\n .rs-steps-item-status-process & {\r\n border-color: var(--rs-steps-border);\r\n }\r\n\r\n .rs-steps-item-status-finish & {\r\n border-color: var(--rs-steps-state-finish);\r\n }\r\n\r\n .rs-steps-next-error & {\r\n border-color: var(--rs-steps-border-state-error);\r\n }\r\n}\r\n\r\n// Horizontal\r\n.rs-steps-horizontal {\r\n display: flex;\r\n justify-content: space-between;\r\n\r\n .rs-steps-item {\r\n flex-grow: 1;\r\n flex-shrink: 1;\r\n min-height: var(--rs-icon-diameter);\r\n\r\n // The last node is self-adaptive width.\r\n &:last-child {\r\n flex-grow: 0;\r\n flex-shrink: 0;\r\n\r\n // The last item hidden tail line\r\n .rs-steps-item-title::after {\r\n display: none;\r\n }\r\n }\r\n\r\n // There is a 10px spacing between each item.\r\n &:not(:first-child) {\r\n padding-left: calc(var(--steps-icon-space-width) + var(--steps-item-spacing));\r\n\r\n .rs-steps-item-icon-wrapper {\r\n left: var(--steps-item-spacing);\r\n }\r\n }\r\n }\r\n\r\n .rs-steps-item-content {\r\n height: calc(var(--steps-title-font-size) * var(--steps-title-line-height));\r\n }\r\n\r\n .rs-steps-item-title {\r\n &::after {\r\n content: '';\r\n top: calc(var(--rs-icon-diameter) / 2);\r\n left: 100%;\r\n width: 9999px;\r\n border-top-width: 1px;\r\n border-top-style: solid;\r\n }\r\n }\r\n}\r\n\r\n// Verticla\r\n.rs-steps-vertical {\r\n .rs-steps-item {\r\n padding-bottom: 20px;\r\n\r\n // There is a 10px spacing between each item.\r\n &:not(:first-child) {\r\n margin-top: var(--steps-item-spacing);\r\n }\r\n\r\n &:last-child .rs-steps-item-tail {\r\n display: none;\r\n }\r\n }\r\n\r\n .rs-steps-item-tail {\r\n top: var(--steps-icon-space-width);\r\n bottom: 0;\r\n left: calc(var(--rs-icon-diameter) / 2);\r\n border-left-width: 1px;\r\n border-left-style: solid;\r\n }\r\n}\r\n\r\n// Small\r\n// Resize: Diameter、font-size and so on.\r\n.rs-steps-small {\r\n min-height: var(--small-steps-icon-diameter);\r\n\r\n &.rs-steps-horizontal .rs-steps-item {\r\n min-height: var(--small-steps-icon-diameter);\r\n }\r\n\r\n &.rs-steps-horizontal .rs-steps-item:not(:first-child) {\r\n padding-left: calc(var(--small-steps-icon-space-width) + var(--steps-icon-spacing));\r\n }\r\n\r\n &.rs-steps-vertical .rs-steps-item-tail {\r\n\tleft: calc(var(--small-steps-icon-diameter) / 2);\r\n }\r\n\r\n &.rs-steps-horizontal .rs-steps-item-title::after {\r\n top: 12px;\r\n }\r\n\r\n .rs-steps-item {\r\n padding-left: var(--small-steps-icon-space-width);\r\n }\r\n\r\n .rs-steps-item-icon-wrapper {\r\n width: var(--small-steps-icon-diameter);\r\n height: var(--small-steps-icon-diameter);\r\n font-size: var(--small-steps-icon-size);\r\n line-height: var(--small-steps-icon-line-height);\r\n }\r\n\r\n .rs-steps-item-title {\r\n font-size: var(--small-steps-icon-size);\r\n line-height: var(--small-steps-title-line-height);\r\n }\r\n\r\n .rs-steps-item-description {\r\n margin-top: var(--small-steps-description-margin-top);\r\n font-size: var(--small-steps-description-font-size);\r\n line-height: var(--small-steps-description-line-height);\r\n }\r\n}\r\n`;\r\n\r\ninterface Props {\r\n\tvertical?: boolean;\r\n\tsmall?: boolean;\r\n\tcurrent?: number;\r\n\tcurrentStatus?: 'finish' | 'wait' | 'process' | 'error';\r\n}\r\nexport const Steps: React.FC = ({ children, vertical, small, current, currentStatus }) => {\r\n\tconst horizontal = !vertical;\r\n\tconst count = React.Children.count(children);\r\n\tconst items = mapCloneElement(children, (item, index) => {\r\n\t\tconst itemStyles = {\r\n\t\t\tflexBasis: index < count - 1 ? `${100 / (count - 1)}%` : undefined,\r\n\t\t\tmaxWidth: index === count - 1 ? `${100 / count}%` : undefined\r\n\t\t};\r\n\t\tconst itemProps = {\r\n\t\t\tstepNumber: index + 1,\r\n\t\t\tstatus: 'wait',\r\n\t\t\tstyle: horizontal ? itemStyles : undefined,\r\n\t\t\t...item.props\r\n\t\t};\r\n\r\n\t\t// fix tail color\r\n\t\tif(currentStatus === 'error' && index === current! - 1) {\r\n\t\t\titemProps.className = 'rs-steps-next-error';\r\n\t\t}\r\n\r\n\t\tif(!item.props.status) {\r\n\t\t\tif(index === current) {\r\n\t\t\t\titemProps.status = currentStatus;\r\n\t\t\t\titemProps.className = 'rs-steps-item-active';\r\n\t\t\t} else if(index < current!) {\r\n\t\t\t\titemProps.status = 'finish';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn itemProps;\r\n\t});\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{items}\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst StyledStep = styled.div`\r\n`;\r\n\r\ninterface StepProps {\r\n\titemWidth?: number | string;\r\n\tstatus?: 'finish' | 'wait' | 'process' | 'error';\r\n\ticon?: IconNames;\r\n\tstepNumber?: number;\r\n\tdescription?: React.ReactNode;\r\n\ttitle?: React.ReactNode;\r\n}\r\nexport const Step: React.FC = ({ itemWidth, status, icon, stepNumber, description, title }) => {\r\n\tlet iconNode = \r\n\t\t{status ? STEP_STATUS_ICON[status] ?? stepNumber : stepNumber}\r\n\t;\r\n\r\n\tif(icon)\r\n\t\ticonNode = {icon};\r\n\r\n\tconst styles: React.CSSProperties = { width: itemWidth };\r\n\r\n\treturn \r\n\t\t
    \r\n\t\t
    {iconNode}
    \r\n\t\t
    \r\n\t\t\t{
    {title}
    }\r\n\t\t\t{description &&
    {description}
    }\r\n\t\t
    \r\n\t;\r\n};\r\n\r\nconst STEP_STATUS_ICON: {\r\n\t[key in NonNullable]: React.ReactElement | null;\r\n} = {\r\n\tfinish: ,\r\n\twait: null,\r\n\tprocess: null,\r\n\terror: \r\n};\r\n\r\ntype ReactChildrenMapFunc = (child: any, index: number) => any;\r\nfunction map(children: React.ReactNode, func: ReactChildrenMapFunc, context?: any) {\r\n\tlet index = 0;\r\n\treturn React.Children.map(children, child => {\r\n\t\tif(!React.isValidElement(child)) {\r\n\t\t\treturn child;\r\n\t\t}\r\n\t\tconst handle = func.call(context, child, index);\r\n\t\tindex += 1;\r\n\t\treturn handle;\r\n\t});\r\n}\r\nfunction mapCloneElement(children: React.ReactNode, func: ReactChildrenMapFunc, context?: any) {\r\n\treturn map(\r\n\t\tchildren,\r\n\t\t(child: React.DetailedReactHTMLElement, index: number) =>\r\n\t\t\tReact.cloneElement(child, {\r\n\t\t\t\tkey: index,\r\n\t\t\t\t...func(child, index)\r\n\t\t\t}),\r\n\t\tcontext\r\n\t);\r\n}\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { useHistory } from 'react-router';\r\nimport { classNames } from 'web-shared/lib';\r\nimport { Section } from '..';\r\nimport { Tab, TabProps } from './tab';\r\n\r\nexport { Tab };\r\nexport * from './managedTabs';\r\n\r\nconst StyledDiv = styled.div`\r\n background: inherit;\r\n\r\n &.sticky { position: sticky; z-index: 99; }\r\n & .tabs ul { display: flex; margin-bottom: 0; flex-wrap: wrap; flex-shrink: 1; width: 100%; background: inherit; }\r\n & .spacer { width: 2px; height: 1.5em; background-color: #dbdbdb; margin: 0 1em; }\r\n`;\r\n\r\ninterface Props {\r\n children: any;\r\n align?: 'left' | 'centered' | 'right';\r\n style?: 'boxed' | 'toggle' | 'toggle-rounded';\r\n fullWidth?: boolean;\r\n selectedTab?: number;\r\n buttons?: React.ReactElement;\r\n onTabChange?: (tabIndex: number, props: TabProps) => void;\r\n sticky?: boolean | number;\r\n preTabContent?: React.ReactNode;\r\n mt?: string;\r\n mb?: string;\r\n tabsRef?: React.Ref;\r\n}\r\nexport const Tabs: React.FC = (props) => {\r\n const history = useHistory();\r\n const tabChildren = React.Children.toArray(props.children) as React.ReactElement[];\r\n const defaultTab = tabChildren.findIndex(t => t.props.pathname === history.location.pathname);\r\n const [state, setState] = React.useState({\r\n selectedTab: defaultTab === -1 ? 0 : defaultTab,\r\n });\r\n\r\n const { children, buttons, selectedTab = state.selectedTab, align = 'left', style, fullWidth, sticky, tabsRef,\r\n onTabChange = (i: number) => {\r\n setState({ selectedTab: i });\r\n const tab = tabChildren[i];\r\n if(tab.props.pathname) {\r\n history.push(tab.props.pathname);\r\n }\r\n }\r\n } = props;\r\n\r\n\t// Set active and get the render function\r\n\tlet tabFluid = false;\r\n let tabPaneRenderer: TabProps['render'] | undefined;\r\n const tabs = React.Children.map(children,\r\n (tab: React.ReactElement, index) => {\r\n if(index === selectedTab && !tab.props.hidden) {\r\n\t\t\t\ttabPaneRenderer = tab.props.render;\r\n\t\t\t\ttabFluid = tab.props.fluid === true;\r\n }\r\n\r\n if(!tab.props.name)\r\n return
    ;\r\n\r\n return onTabChange && onTabChange(index, tab.props)} />;\r\n },\r\n );\r\n\r\n const isSticky = sticky !== undefined && sticky !== false;\r\n const stickyPos = sticky === true || !isSticky ? 0 : sticky as number;\r\n const cls = classNames('tabs', `is-${align}`, style ? `is-${style}` : '', { 'is-fullwidth': fullWidth });\r\n const rendered = tabPaneRenderer && tabPaneRenderer();\r\n\r\n const st: React.CSSProperties = {\r\n paddingTop: props.mt,\r\n paddingBottom: props.mb,\r\n };\r\n\r\n return <>\r\n \r\n {props.preTabContent}\r\n
    \r\n
    \r\n
      \r\n {tabs}\r\n {buttons ?
    • : null}\r\n {buttons}\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {rendered ?
    \r\n
    \r\n {rendered}\r\n
    \r\n
    : null}\r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { IconNames, Tab, Tabs, Button, Section } from '..';\r\nimport styled from 'styled-components';\r\nimport useMeasure from 'react-use/lib/useMeasure';\r\n\r\nconst StyledDiv = styled.div`\r\n background: inherit;\r\n\r\n & section.tabs { padding-top: 0.5rem; }\r\n & .subTabs { padding: 0; background: inherit; }\r\n @media(max-height: 768px) {\r\n section.tabs { padding-bottom: 0.5rem; }\r\n }\r\n @media(max-height: 650px) {\r\n && .sticky { position: inherit; }\r\n }\r\n\r\n .error-details { font-style: italic; padding: 1em; }\r\n`;\r\nconst TabNav = styled.div`\r\n & .message { margin-top: 1em; }\r\n & .buttons { display: flex; margin-top: 1em; }\r\n & .fill { flex: 1; }\r\n`;\r\n\r\ntype TabName = string | ((s: S, indexOverride?: number) => string);\r\nexport interface ManagedTab {\r\n id?: string;\r\n name: TabName;\r\n component?: React.FC

    ;\r\n componentProps?: P,\r\n icon?: IconNames;\r\n tabs?: ManagedTab[],\r\n tabsHeader?: (s: S) => React.ReactElement,\r\n hidden?: (s: S) => boolean;\r\n hideNav?: (s: S) => boolean;\r\n validator?: (s: S, m: M, i?: number) => TabError[];\r\n submit?: (s: S, m: M, allErrors: TabError[]) => boolean | undefined;\r\n submitText?: string;\r\n indexOverride?: number;\r\n padding?: string;\r\n\tpreTabContent?: any;\r\n\tfluid?: boolean;\r\n}\r\n\r\ntype Level = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 'max';\r\ntype NextLevel =\r\n Level extends 0 ? 1\r\n : Level extends 1 ? 2\r\n : Level extends 2 ? 3\r\n : Level extends 3 ? 4\r\n : Level extends 4 ? 5\r\n : Level extends 5 ? 6\r\n : 'max';\r\ntype IndexLevel = 'i' | 'j' | 'k';\r\ntype NextIndexLevel = IndexLevel extends 'i' ? 'j'\r\n : IndexLevel extends 'j' ? 'k' : 'i';\r\ntype Primitive = string | number | bigint | boolean | undefined | symbol;\r\nexport type PropertyStringPath = {\r\n [K in keyof T]:\r\n L extends 'max' ? never :\r\n T[K] extends Primitive ? `${string & Prefix}${string & K}` :\r\n T[K] extends Array ? PropertyStringPath, NextIndexLevel> :\r\n `${string & Prefix}${(string | number) & K}` | PropertyStringPath, I>;\r\n}[keyof T];\r\n\r\nexport type TabError = {\r\n msg?: string;\r\n field?: PropertyStringPath;\r\n hide?: boolean;\r\n tab?: string;\r\n i?: number | string;\r\n j?: number | string;\r\n k?: number | string;\r\n} | null;\r\n\r\ninterface Props {\r\n tabs: ManagedTab[];\r\n state: S;\r\n adminState?: M;\r\n align?: 'left' | 'centered' | 'right';\r\n onSubmit?: () => void;\r\n selectedTabId?: string | undefined;\r\n setSelectedTabId?: React.Dispatch>;\r\n sticky?: boolean | number;\r\n children?: React.ReactNode;\r\n navigation?: boolean;\r\n hashUpdate?: boolean;\r\n}\r\n\r\nexport function allTabErrors(tabs: ManagedTab[], state: S, adminState?: M): TabError[] {\r\n return tabs.filter(t => !t.hidden || !t.hidden(state)).reduce((all, tab) => {\r\n const tabErrors = tab.validator ? tab.validator(state, adminState!, tab.indexOverride).filter(e => e) : [];\r\n const subTabErrors = tab.tabs ? allTabErrors(tab.tabs, state, adminState) : [];\r\n return [\r\n ...all,\r\n ...tabErrors.map(e => ({ ...e, tab: tab.id })),\r\n ...subTabErrors,\r\n ].filter(e => e != null);\r\n }, [] as TabError[]);\r\n}\r\n\r\nfunction scrollToTop() {\r\n // Scroll back to the top\r\n setTimeout(() => {\r\n const el = document?.getElementById(\"managed-tabs\");\r\n const offsetTop = el?.offsetTop || 0;\r\n window?.scrollTo({ top: offsetTop, behavior: 'smooth' });\r\n }, 0);\r\n}\r\n\r\nexport function ManagedTabs(props: Props): React.ReactElement {\r\n const { tabs, state, adminState, align, onSubmit, selectedTabId, setSelectedTabId, sticky, children, navigation = true, hashUpdate = true } = props;\r\n const [submitting, setSubmitting] = React.useState(false);\r\n const [showErrors, setShowErrors] = React.useState(false);\r\n const [refMain, { height }] = useMeasure();\r\n\r\n // Internal tab state\r\n let [tabId, setTabId] = React.useState(undefined);\r\n\r\n // Let parent manage selected tab\r\n if(selectedTabId !== undefined && setSelectedTabId !== undefined) {\r\n tabId = selectedTabId;\r\n setTabId = setSelectedTabId;\r\n }\r\n\r\n function changeTab(id: string | undefined) {\r\n setTabId(id);\r\n if(hashUpdate) {\r\n const baseUrl = window.location.href.split('#')[0];\r\n window.location.replace(`${baseUrl}#${id}`);\r\n }\r\n scrollToTop();\r\n }\r\n function setFromHash() {\r\n const hash = window.location.hash?.replace('#', '');\r\n if(hash && hash !== tabId) {\r\n setTabId(hash);\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n if(!hashUpdate)\r\n return;\r\n\r\n // Set initial tab from URL hash\r\n setFromHash();\r\n\r\n // Watch for hash changes\r\n if((\"onhashchange\" in window)) {\r\n window.onhashchange = function () {\r\n setFromHash();\r\n }\r\n }\r\n\r\n return () => {\r\n window.onhashchange = null;\r\n };\r\n }, []);\r\n\r\n // Find the selected tab\r\n const visibleTabs = tabs.filter(t => !t.hidden || !t.hidden(state));\r\n const mainTab = visibleTabs.find(t => {\r\n return t.id && t.id === tabId || t.tabs?.find(s => s.id === tabId);\r\n }) || visibleTabs[0];\r\n const mainTabIndex = visibleTabs.findIndex(t => t.id === mainTab?.id);\r\n\r\n // Find the selected subTab\r\n const visibleSubTabs = mainTab.tabs?.filter(t => !t.hidden || !t.hidden(state)) || [];\r\n const hasSubTabs = visibleSubTabs.length > 0;\r\n const subTab = visibleSubTabs.find(t => t.id && t.id === tabId) || (hasSubTabs ? visibleSubTabs[0] : undefined);\r\n const subTabIndex = visibleSubTabs.findIndex(t => t.id === subTab?.id);\r\n\r\n // Get selected tab errors\r\n const errors: TabError[] = subTab || mainTab ? allTabErrors([subTab || mainTab], state, adminState) : [];\r\n const visibleErrors = [...new Set([\r\n errors.filter(e => !e?.msg).length ? { msg: 'Some required fields are missing.' } : null,\r\n ...errors.filter(e => !e?.hide && e?.msg),\r\n ].filter(e => e).map(e => e?.msg))];\r\n\r\n // Get all visible tab errors\r\n const allErrors = allTabErrors(visibleTabs, state, adminState);\r\n\r\n const isLast = mainTabIndex + 1 === visibleTabs.length;\r\n const submitStatus = mainTab?.submit ? mainTab.submit(state, adminState!, allErrors) : subTab?.submit ? subTab?.submit(state, adminState!, allErrors) : undefined;\r\n const submitText = mainTab?.submitText || subTab?.submitText || 'Submit';\r\n\r\n function prev() {\r\n // Change to previous sub tab\r\n if(subTabIndex > 0) {\r\n changeTab(visibleSubTabs[subTabIndex - 1]?.id);\r\n return;\r\n }\r\n\r\n // Change to previous main tab\r\n changeTab(visibleTabs[mainTabIndex - 1]?.id);\r\n }\r\n function next() {\r\n if(!subTab || subTabIndex + 1 === visibleSubTabs.length)\r\n changeTab(visibleTabs[mainTabIndex + 1]?.id);\r\n else\r\n changeTab(visibleSubTabs[subTabIndex + 1]?.id);\r\n }\r\n async function submit() {\r\n if(!onSubmit)\r\n return;\r\n\r\n setSubmitting(true);\r\n await onSubmit();\r\n setSubmitting(false);\r\n }\r\n\r\n const hideNav = subTab?.hideNav?.(state) || mainTab?.hideNav?.(state);\r\n return \r\n changeTab(visibleTabs[i]?.id)}\r\n preTabContent={children}\r\n tabsRef={refMain as React.Ref}\r\n mb={mainTab?.padding}\r\n >\r\n {visibleTabs.map(t => {\r\n const tabErrors = allTabErrors([t], state, adminState);\r\n const name = typeof t.name === 'function'\r\n ? t.name(state, t.indexOverride) : t.name;\r\n return React.createElement(t.component!, {\r\n state, adminState, tabErrors, allErrors, indexOverride: t.indexOverride, ...t.componentProps\r\n }) : undefined} errors={tabErrors} icon={t.icon} />;\r\n })}\r\n \r\n\r\n {visibleSubTabs.length ?

    \r\n {mainTab.tabsHeader ? mainTab.tabsHeader(state) : null}\r\n {\r\n changeTab(visibleSubTabs[t]?.id);\r\n }} mt=\"0\" sticky={height} preTabContent={mainTab?.preTabContent}>\r\n {visibleSubTabs.map(t => {\r\n const tabErrors = t.validator ? t.validator(state, adminState!, t.indexOverride).filter(e => e) : [];\r\n const name = typeof t.name === 'function'\r\n ? t.name(state, t.indexOverride) : t.name;\r\n return React.createElement(t.component!, {\r\n state, adminState, tabErrors, allErrors, indexOverride: t.indexOverride, ...t.componentProps\r\n }) : undefined} errors={tabErrors} icon={t.icon} />;\r\n })}\r\n \r\n
    : null}\r\n\r\n
    \r\n \r\n {/* Render any errors for the selected tab */}\r\n {visibleErrors && visibleErrors.length > 0 ?
    setShowErrors(!showErrors)}>\r\n
    \r\n {visibleErrors.map((e, i) =>
    \r\n {e}\r\n
    )}\r\n\r\n {showErrors ?
    {errors.map((e, i) =>
    \r\n {e?.field ?? e?.msg}\r\n
    )}
    : null}\r\n
    \r\n
    : null}\r\n\r\n {hideNav || !navigation ? null :
    \r\n {mainTabIndex > 0 ? : null}\r\n\r\n
    \r\n\r\n {submitStatus != undefined ? : null}\r\n\r\n {isLast ? null : }\r\n
    }\r\n \r\n
    \r\n ;\r\n};\r\n","import * as React from 'react';\r\nimport { Icon, IconNames, TabError } from '..';\r\nimport { classNames } from '../../lib';\r\n\r\nexport interface TabProps {\r\n name: string | JSX.Element;\r\n icon?: IconNames;\r\n active?: boolean;\r\n render?: () => any;\r\n disabled?: boolean;\r\n hidden?: boolean;\r\n pathname?: string;\r\n title?: string;\r\n indicator?: boolean;\r\n\tonClick?: (e: any) => void;\r\n\tfluid?: boolean;\r\n errors?: TabError[];\r\n}\r\n\r\nexport const Tab: React.FC = ({ name, icon, active, onClick, disabled, title, hidden, errors }) => {\r\n const visibleErrors = [...new Set(errors?.map(e => e?.msg || 'Some required fields are missing.'))]\r\n .join('\\n');\r\n return hidden ? null :
  • !disabled && onClick && onClick(e)}>\r\n \r\n \r\n {icon ? : null}\r\n {icon && name ? : null}\r\n {name}\r\n {errors?.length ? : null}\r\n \r\n
  • ;\r\n};\r\n","import * as React from 'react';\nimport { objectKeysToLowerCase } from '../lib';\n\nconst regexReplace = /(\\s*[^<]*\\s*)<\\/b>/g;\n\ninterface VariableMap {\n [name: string]: any;\n}\n\ninterface Props {\n template: string;\n variables: VariableMap;\n asHtml?: boolean;\n style?: object;\n}\n\nexport const TemplateString: React.FC = function ({ template = '', variables = {}, asHtml, style }) {\n const vars = objectKeysToLowerCase(variables);\n\n let parts = template.split(/{{\\s*([a-zA-Z0-9\\.]*)\\s*}}/g).map((s, i) => {\n const prop = s.toLowerCase();\n const isVar = vars.hasOwnProperty(prop);\n const variableValue = isVar && (vars[prop] || '');\n const isObjectVar = isVar && variableValue && typeof (variableValue) === 'object';\n const highlight = isVar && !(isObjectVar && variableValue.hasOwnProperty('highlight') && !variableValue.highlight);\n\n const text = !isVar ? s :\n isObjectVar ? variableValue.text : variableValue;\n\n return !asHtml\n ? {text}\n : isVar && highlight ? '' + text + '' : text;\n });\n\n if(asHtml)\n parts = parts.join('').split(/(\\s*[^<]*\\s*<\\/b>)/g).map((s, i) => {\n const text = s.startsWith('')\n ? {s.replace(regexReplace, '$1')}\n : ;\n return {text};\n });\n\n return {parts};\n};\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { classNames, formatUtcDate } from 'web-shared/lib';\r\nimport { RelativeTime } from '.';\r\n\r\nconst Container = styled.div`\r\n\t& .relative { font-style: italic; color: #999; font-weight: normal !important; }\r\n \t& .time-line {\r\n\t\tposition: relative;\r\n\t\tmargin: 0 0 0px 0;\r\n\t\tpadding: 0;\r\n\t\tlist-style: none;\r\n\t\t&:before {\r\n\t\t\tcontent: '';\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 0;\r\n\t\t\tbottom: -10px;\r\n\t\t\twidth: 2px;\r\n\t\t\tbackground: var(--color-secondary-light-50);\r\n\t\t\tleft: 32px;\r\n\t\t\tborder-radius: 2px;\r\n\t\t}\r\n \t> .time-label {\r\n \t\t> span {\r\n\t\t\t\tfont-weight: 600;\r\n\t\t\t\tpadding: 5px 10px;\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tbackground-color: #efefef;\r\n\t\t\t\tborder-radius: 2px;\r\n\t\t\t\tfont-size: 14px;\r\n\t \t}\r\n \t}\r\n\r\n \t> li {\r\n \t\tposition: relative;\r\n \t\tmargin-bottom: 10px;\r\n \t\tmargin-right: 0;\r\n\r\n \t\t> .time-line-item {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\t-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r\n\t\t\t\tbox-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r\n\t\t\t\tborder-radius: 3px;\r\n\t\t\t\tbackground: #fff;\r\n\t\t\t\tcolor: #444;\r\n\t\t\t\tmargin-right: 15px;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tmargin-left: 50px;\r\n\t\t\t\ttransition: 0.25s;\r\n\r\n\t\t\t\t&.hover { background-color: #d3d8c9; }\r\n\r\n \t\t> .time-line-header, .annotation { font-size: 14px; padding: 6px 10px; }\r\n \t\t.annotation { font-size: 12px; color: #999; }\r\n\r\n \t\t.time-line-header {\r\n\t\t\t\t\tmargin: 0;\r\n\t\t\t\t\tcolor: #555;\r\n\t\t\t\t\tline-height: 1.1;\r\n\t\t\t\t\tflex: 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t> .fa {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder-radius: 50%;\r\n\t\t\t\twidth: 10px;\r\n\t\t\t\theight: 10px;\r\n\t\t\t\tcolor: #666;\r\n\t\t\t\tbackground: #ecf0f1;\r\n\t\t\t\tleft: 28px;\r\n\t\t\t\ttop: 9px;\r\n\t\t\t\tborder: 2px solid var(--color-secondary-light-50);\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t}\r\n\t\t}\r\n \t}\r\n`;\r\n\r\nfunction getFormattedData(items: api.ApplicationDetailEvent[], format = \"p\") {\r\n\tconst activities: Record = {};\r\n\titems.forEach(({ logTimeUtc, summary, userId, userIp }, index) => {\r\n\t\tconst dateStr = formatUtcDate(logTimeUtc, \"M/d/yyyy\");\r\n\t\tconst list = activities[dateStr] || [];\r\n\t\tlist.push({\r\n\t\t\ttime: formatUtcDate(logTimeUtc, format),\r\n\t\t\ttext: summary,\r\n\t\t\tkey: index,\r\n\t\t\tuserId,\r\n\t\t\tuserIp,\r\n\t\t});\r\n\t\tactivities[dateStr] = list;\r\n\t});\r\n\treturn activities;\r\n}\r\n\r\ntype ActivityItem = {\r\n\ttime: string;\r\n\ttext: string;\r\n\tkey: number;\r\n\tuserId?: number;\r\n\tuserIp?: string;\r\n}\r\ninterface Props {\r\n\titems: api.ApplicationDetailEvent[];\r\n\tformat?: string;\r\n\tusers?: api.UserDetails[];\r\n}\r\nexport const Timeline: React.FC = ({ items, format, users }) => {\r\n\tconst activities = getFormattedData(items, format);\r\n\tconst dates = Object.keys(activities);\r\n\tconst [hoverUserId, setHoverUserId] = React.useState(0)\r\n\tconst [hoverIp, setHoverIp] = React.useState('')\r\n\r\n\tfunction onHoverUser(userId: number, hovering: boolean) {\r\n\t\tsetHoverUserId(hovering ? userId : 0);\r\n\t}\r\n\tfunction onHoverIp(ip: string, hovering: boolean) {\r\n\t\tsetHoverIp(hovering ? ip : '');\r\n\t}\r\n\r\n\treturn \r\n\t\t{dates.map(d => {\r\n\t\t\treturn
      \r\n\t\t\t\t
    • \r\n\t\t\t\t\t{d} \r\n\t\t\t\t
    • \r\n\t\t\t\t{activities[d].map(({ time, text, key, userId, userIp }) => {\r\n\t\t\t\t\tconst user = users?.find(u => u.id === userId);\r\n\t\t\t\t\treturn ;\r\n\t\t\t\t})}\r\n\t\t\t
    \r\n\t\t})}\r\n\t
    ;\r\n}\r\n\r\ninterface ItemProps {\r\n\ttime: string;\r\n\ttext: string;\r\n\tuser?: string;\r\n\tuserId?: number;\r\n\tuserIp?: string;\r\n\temail?: string;\r\n\thover?: boolean;\r\n\tonHoverUser?: (userId: number, hovering: boolean) => void;\r\n\tonHoverIp?: (ip: string, hovering: boolean) => void;\r\n}\r\nconst TimlineItem: React.FC = ({ time, text, user, userId, userIp, hover, onHoverUser, onHoverIp, email }) => {\r\n\treturn
  • \r\n\t\t\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t {time}\r\n\t\t\t\r\n\t\t\t
    {text}
    \r\n\t\t\t{userId ? onHoverUser?.(userId, true)}\r\n\t\t\t\tonMouseOut={() => onHoverUser?.(userId, false)}\r\n\t\t\t> {user} : null}\r\n\t\t\t{userIp ? onHoverIp?.(userIp, true)}\r\n\t\t\t\tonMouseOut={() => onHoverIp?.(userIp, false)}\r\n\t\t\t> {userIp} : null}\r\n\t\t
    \r\n\t
  • ;\r\n}\r\n","import * as React from 'react';\n\ninterface Props {\n name: string;\n value: boolean;\n disabled?: boolean;\n trueText?: string;\n falseText?: string;\n showText?: boolean;\n onClick: (name: string, value: boolean) => void;\n}\nexport const Toggle: React.FC = (props) => {\n const { name, trueText = 'On', falseText = 'Off', disabled = false, showText = true, value } = props;\n\n function _onClick() {\n props.onClick(name, !value);\n }\n\n let text = !showText ? null : value ? trueText : falseText;\n\n return \n \n\n {text}\n ;\n};\n","import * as React from 'react';\nimport { IconNames } from './index';\n\ninterface Props {\n text: string;\n icon?: IconNames;\n}\nexport const Tooltip: React.FC = ({ text, icon = 'info-circle' }) => {\n return ;\n};\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport Axios, { CancelTokenSource } from 'axios';\r\n\r\nimport { Button } from 'web-shared/components/button';\r\nimport { Modal, NonIdealState } from 'web-shared/components';\r\nimport { classNames, formatNumber, postForm } from 'web-shared/lib';\r\nimport { Spinner } from './spinners/Spinner';\r\n\r\nconst StyledDiv = styled.div`\r\n\t.header-text { font-size: 1.6em; }\r\n\t.instructions { font-size: 1.1em; font-style: italic; }\r\n\t.uploader { display: flex; flex-direction: row; margin-top: 1em; }\r\n\t.dropzone {\r\n\t\tpadding: 2em;\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tjustify-content: flex-start;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\t.dropzone > div {\r\n\t\theight: 200px;\r\n\t\twidth: 200px;\r\n\t\tborder: 2px dashed rgb(187, 186, 186);\r\n\t\tborder-radius: 50%;\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\tflex-direction: column;\r\n\t\tfont-size: 16px;\r\n\t\tcursor: pointer;\r\n\t}\r\n\t.file-input { display: none; }\r\n\t.file-list { flex-grow: 1; }\r\n\t.actions {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: flex-end;\r\n\t\tmargin-top: 2em;\r\n\t}\r\n\t.actions .spacer { flex: 1; }\r\n\t.highlight { background-color: var(--color-primary-light-90); }\r\n\t.table { background: transparent; }\r\n\t.table td { font-size: 0.8em; background: transparent; }\r\n\t.table td:first-child { text-align: center; width: 40px; }\r\n\t&& .ar { text-align: right; }\r\n\t.uploader .fa-times { color: #c0504d; cursor: pointer; }\r\n\t.nodrop .dropzone > div { cursor: no-drop; }\r\n\t.error { color: #c0504d; }\r\n\t.fa-check { color: #3b4a1e; }\r\n\t&& .progress-row {\r\n\t\tposition: absolute;\r\n\t\tleft: 0;\r\n\t\ttop: 0;\r\n\t\tbottom: 0;\r\n\t\twidth: 0;\r\n\t\tbackground-color: #4F622838;\r\n\t\tpadding: 0;\r\n\t\tpointer-events: none;\r\n\t}\r\n`;\r\n\r\ninterface FileStatus {\r\n\tfile: File;\r\n\tpct: number;\r\n\tstatus?: 'uploading' | 'success' | 'failed' | 'aborted';\r\n\terrorMsg?: string;\r\n}\r\n\r\ninterface Props {\r\n\ttitle: string;\r\n\tdisabled?: boolean;\r\n\tuploadUrl: string;\r\n\tuploadFields?: { [name: string]: string | number };\r\n\tonClose?: () => void;\r\n\tonComplete?: (file: File, response: T) => void;\r\n\taccept?: string[];\r\n}\r\nexport const UploadModal = function UploadModal(props: Props) {\r\n\tconst { title, disabled = false, onClose, onComplete, uploadUrl, uploadFields = {}, accept } = props;\r\n\tconst [uploading, setUploading] = React.useState(false);\r\n\tconst [highlight, setHighlight] = React.useState(false);\r\n\tconst [files, setFiles] = React.useState([]);\r\n\tconst fileInputRef = React.useRef(undefined);\r\n\tconst cancelTokenRef = React.useRef(undefined);\r\n\r\n\tfunction openFileDialog() {\r\n\t\tif(disabled || uploading)\r\n\t\t\treturn;\r\n\t\tfileInputRef.current.click();\r\n\t}\r\n\tfunction onFilesAdded(e: React.ChangeEvent) {\r\n\t\tif(disabled || uploading || !e.target.files) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\taddFiles(e.target.files)\r\n\t}\r\n\tfunction onDragOver(e: React.DragEvent) {\r\n\t\te.preventDefault();\r\n\t\tif(disabled || uploading) {\r\n\t\t\te.dataTransfer.dropEffect = 'none';\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetHighlight(true);\r\n\t}\r\n\tfunction onDrop(e: React.DragEvent) {\r\n\t\te.preventDefault();\r\n\t\tif(disabled || uploading) {\r\n\t\t\te.dataTransfer.dropEffect = 'none';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\taddFiles(e.dataTransfer.files);\r\n\t\tsetHighlight(false);\r\n\t}\r\n\tfunction addFiles(fileList: FileList) {\r\n\t\tconst newFiles = [...fileList].map(f => ({ file: f, pct: 0 }));\r\n\t\tsetFiles(f => [...f, ...newFiles]);\r\n\t}\r\n\r\n\tasync function beginUpload() {\r\n\t\tsetUploading(true);\r\n\r\n\t\tfor(let i = 0; i < files.length; i++) {\r\n\t\t\tconst fs = files[i];\r\n\t\t\tif(fs.status === 'success')\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tfs.errorMsg = undefined;\r\n\t\t\tfs.status = undefined;\r\n\t\t\tfs.pct = 0;\r\n\t\t}\r\n\t\tsetFiles([...files]);\r\n\r\n\t\tfor(let i = 0; i < files.length; i++) {\r\n\t\t\tconst fs = files[i];\r\n\t\t\tif(fs.status === 'success')\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tconst file = fs.file;\r\n\r\n\t\t\t// Add the file to the form data\r\n\t\t\tconst formData = new FormData();\r\n\t\t\tformData.append(\"file\", file, file.name);\r\n\r\n\t\t\t// Add additional fields to the form data\r\n\t\t\tif(uploadFields) {\r\n\t\t\t\tObject.keys(uploadFields).map(k => {\r\n\t\t\t\t\tformData.append(k, String(uploadFields[k]));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfs.status = 'uploading';\r\n\t\t\tsetFiles([...files]);\r\n\r\n\t\t\t// Upload the file\r\n\t\t\tcancelTokenRef.current = Axios.CancelToken.source();\r\n\t\t\tconst response = await postForm(uploadUrl, formData,\r\n\t\t\t\tcancelTokenRef.current.token, e => {\r\n\t\t\t\t\tconst pct = Math.round(e.loaded * 1.0 / e.total * 10000) / 100;\r\n\t\t\t\t\tfs.pct = pct;\r\n\t\t\t\t\tsetFiles([...files]);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tif(cancelTokenRef.current.token.reason?.message) {\r\n\t\t\t\tfs.status = 'aborted';\r\n\t\t\t\tfs.errorMsg = 'Aborted';\r\n\t\t\t\tfs.pct = 0;\r\n\t\t\t\tsetFiles([...files]);\r\n\t\t\t\tbreak;\r\n\t\t\t} else {\r\n\t\t\t\tif(response.isError) {\r\n\t\t\t\t\tfs.status = 'failed';\r\n\t\t\t\t\tfs.errorMsg = response.error;\r\n\t\t\t\t\tfs.pct = 0;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tfs.status = 'success';\r\n\r\n\t\t\t\t\t// Tell the component we successfully uploaded a file\r\n\t\t\t\t\tonComplete && onComplete(file, response.payload as T);\r\n\t\t\t\t}\r\n\t\t\t\tsetFiles([...files]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsetUploading(false);\r\n\t}\r\n\r\n\r\n\tconst hasBegun = files.some(f => f.status != undefined);\r\n\tconst isComplete = hasBegun && files.every(f => f.status === 'success');\r\n\treturn { }} okText=\"\" fullHeight={false}>\r\n\t\t\r\n\t\t\t
    {title}
    \r\n\t\t\t
    \r\n\t\t\t\tClick on the upload button below or drag your files below to get started. Once you have selected all the files you wish to upload, click the button below to send.\r\n\t\t\t
    \r\n\t\t\t
    setHighlight(false)}\r\n\t\t\t\tonDrop={onDrop}\r\n\t\t\t\t>\r\n\t\t\t\t
    openFileDialog()}\r\n\t\t\t\t>\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    Click here to
    select file(s).
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{files.length\r\n\t\t\t\t\t\t? \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{hasBegun ? : null}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{files.map((f, i) => \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{hasBegun ? : null}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
    NameSizeStatus
    \r\n\t\t\t\t\t\t\t\t\t\t{f.status === 'success' ? \r\n\t\t\t\t\t\t\t\t\t\t\t: !uploading ? setFiles(files.filter((_f, index) => i !== index))} />\r\n\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'uploading' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'failed' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: f.status === 'aborted' ? \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: null}\r\n\t\t\t\t\t\t\t\t\t{f.file.name}{formatNumber(f.file.size)}\r\n\t\t\t\t\t\t\t\t\t\t{f.errorMsg ?
    {f.errorMsg}
    :
    }\r\n\t\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t: }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{uploading || isComplete ? null : }\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t{isComplete ? \r\n\t\t\t\t\t\t: uploading ? \r\n\t\t\t\t\t\t: }\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    ;\r\n};\r\n","import * as React from 'react';\n\ninterface Props {\n addonLeft: React.ReactNode;\n}\nexport const WithAddon: React.FC = function ({ addonLeft, children }) {\n return
    \n
    \n
    \n \n
    \n {children}\n
    \n
    \n
    \n
    ;\n};\n","import axios, { CancelToken, AxiosResponse } from 'axios';\r\nimport { serializeFormData, getToken } from '../lib';\r\n\r\nexport type Failable = {\r\n isError: true;\r\n error: string;\r\n payload: TError;\r\n} | {\r\n isError: false;\r\n payload: TSuccess;\r\n};\r\nexport type UploadProgressFn = (e: ProgressEvent) => void;\r\n\r\nexport function postForm(url: string, body: {}, cancelToken?: CancelToken, onUploadProgress?: UploadProgressFn) {\r\n return ajax(url, false, body, { method: 'POST', cancelToken, onUploadProgress });\r\n}\r\nexport function postJson(url: string, body?: {}, cancelToken?: CancelToken, onUploadProgress?: UploadProgressFn) {\r\n return ajax(url, true, body, { method: 'POST', cancelToken, onUploadProgress });\r\n}\r\nexport function get(url: string, cancelToken?: CancelToken, init: IAxiosOptions = {}) {\r\n return ajax(url, false, null, { method: 'GET', cancelToken, ...init });\r\n}\r\n\r\ninterface IAxiosOptions {\r\n headers?: HeadersInit;\r\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE';\r\n cancelToken?: CancelToken;\r\n onUploadProgress?: UploadProgressFn;\r\n skipAuthorization?: boolean;\r\n}\r\nexport async function ajax(url: string, json: boolean, body?: {}, init: IAxiosOptions = {}): Promise> {\r\n const token = getToken();\r\n const method = init.method || 'GET';\r\n\r\n const isFormData = body && 'append' in body;\r\n const headers: HeadersInit = {\r\n ...init.headers,\r\n 'Content-Type': isFormData ? 'multipart/form-data' : json ? 'application/json; charset=UTF-8' : 'application/x-www-form-urlencoded; charset=UTF-8',\r\n Authorization: init.skipAuthorization ? '' : token ? `Bearer ${token}` : '',\r\n };\r\n\r\n // Allow client ID to be specified for admin requests\r\n try {\r\n const currentClientId = 'localStorage' in window ? Number(localStorage.currentClientId) : undefined;\r\n if(!isNaN(currentClientId)) {\r\n headers['clientId'] = currentClientId.toString();\r\n }\r\n } catch { }\r\n\r\n let response: AxiosResponse;\r\n try {\r\n response = await axios({\r\n url,\r\n method,\r\n data: method === 'GET' || !body ? null :\r\n json ? body : isFormData ? body : serializeFormData(body),\r\n cancelToken: init.cancelToken,\r\n headers,\r\n onUploadProgress: init.onUploadProgress,\r\n });\r\n } catch(ex) {\r\n // console.dir(ex);\r\n return {\r\n isError: true,\r\n error: ex?.response?.statusText || 'Unable to contact the server.',\r\n payload: {} as TError,\r\n };\r\n }\r\n\r\n // Try to decode the response as a typed object\r\n let payload: TSuccess | undefined;\r\n try {\r\n payload = response.data;\r\n } catch { }\r\n\r\n const payloadError = !payload ? undefined :\r\n (payload as any).error || (payload as any).errorMessage || (payload as any).error_message;\r\n\r\n const isError = response.status !== 200\r\n || !!payloadError\r\n || (payload && (payload as any).isError)\r\n || (payload && (payload as any).IsError);\r\n\r\n return isError\r\n ? { isError, error: payloadError || response.statusText || (response as any).message, payload: (payload || {}) as TError }\r\n : { isError, payload: (payload || {}) as TSuccess };\r\n}\r\n","export type LoginData = {\r\n isError: false;\r\n access_token: string;\r\n token_type: string;\r\n '.issued': string;\r\n '.expires': string;\r\n userName: string;\r\n name: string;\r\n id: string;\r\n Admin?: string;\r\n GlobalAdmin?: string;\r\n ClientId: string;\r\n LenderAssisted?: string;\r\n ViewDemographics?: string;\r\n};\r\n\r\nexport interface LoginCredentials {\r\n email: string;\r\n password: string;\r\n remember: boolean;\r\n clientId?: number;\r\n}\r\n\r\nconst loginDataKey = 'loginDataKey';\r\nconst branchLoginDataKey = 'branchLoginDataKey';\r\n\r\nif(typeof window === 'undefined') {\r\n (global as any).window = {};\r\n}\r\n\r\nexport function getBranchLoginData(): LoginData {\r\n try {\r\n return JSON.parse(getTokenStorage().getItem(branchLoginDataKey) || '{}');\r\n } catch(e) {\r\n return JSON.parse('{}');\r\n }\r\n}\r\nexport function setBranchLoginData(data: LoginData) {\r\n let storage: Storage;\r\n try {\r\n storage = localStorage.getItem('rememberLogin') === 'true' ? localStorage : sessionStorage;\r\n } catch(err) {\r\n storage = getFakeStorage();\r\n }\r\n\r\n storage.setItem(branchLoginDataKey, JSON.stringify(data));\r\n}\r\nexport function clearBranchLoginData() {\r\n try {\r\n const fakeStorage = getFakeStorage();\r\n\r\n // Clear branch login\r\n fakeStorage.removeItem(branchLoginDataKey);\r\n sessionStorage.removeItem(branchLoginDataKey);\r\n localStorage.removeItem(branchLoginDataKey);\r\n } catch(err) { }\r\n}\r\nexport function getBranchUserToken(branchLoginData?: LoginData) {\r\n // Get the token and expiration\r\n const data = branchLoginData || getBranchLoginData();\r\n\r\n const tokenExpirationString = data['.expires'];\r\n const tokenExpiration = tokenExpirationString ? new Date(tokenExpirationString) : new Date();\r\n\r\n if(data.access_token == null || tokenExpiration <= new Date()) {\r\n return null;\r\n }\r\n\r\n return data.access_token;\r\n}\r\n\r\n/** Get the login info found in localStorage or sessionStorage */\r\nexport function getLoginData(): LoginData {\r\n try {\r\n return JSON.parse(getTokenStorage().getItem(loginDataKey) || '{}');\r\n } catch(e) {\r\n return JSON.parse('{}');\r\n }\r\n}\r\n\r\n/** Store login info in localStorage or sessionStorage as well as a cookie */\r\nexport function setLoginData(data: LoginData, remember: boolean) {\r\n // Store in a cookie\r\n document.cookie = `api_key=${data.access_token}; expires=${data['.expires']}; path=/`;\r\n\r\n // Store in storage\r\n let storage: Storage;\r\n try {\r\n storage = remember ? localStorage : sessionStorage;\r\n } catch(err) {\r\n storage = getFakeStorage();\r\n }\r\n\r\n storage.setItem(loginDataKey, JSON.stringify(data));\r\n localStorage.setItem('rememberLogin', remember.toString());\r\n}\r\n\r\n/** Clear all authentication data from localStorage and sessionStorage */\r\nexport function clearLoginData() {\r\n // Store in a cookie\r\n document.cookie = `api_key=; expires=; path=/`;\r\n\r\n try {\r\n const fakeStorage = getFakeStorage();\r\n\r\n // Clear regular login\r\n fakeStorage.removeItem(loginDataKey);\r\n sessionStorage.removeItem(loginDataKey);\r\n localStorage.removeItem(loginDataKey);\r\n } catch(err) { }\r\n}\r\n\r\n/** Extract the access token from stored login data */\r\nexport function getToken(loginData?: LoginData, ignoreExpires?: boolean) {\r\n // Get the token and expiration\r\n const data = loginData || getLoginData();\r\n\r\n const tokenExpirationString = data['.expires'];\r\n const tokenExpiration = tokenExpirationString ? new Date(tokenExpirationString) : new Date();\r\n\r\n if(data.access_token == null || (!ignoreExpires && tokenExpiration <= new Date())) {\r\n return null;\r\n }\r\n\r\n return data.access_token;\r\n}\r\n\r\nexport function getFakeStorage(): Storage {\r\n if(!(window as any).fakeStorage) {\r\n (window as any).fakeStorage = {} as any;\r\n (window as any).fakeStorage.setItem = (key: string, value: string) => (window as any).fakeStorage[key] = value;\r\n (window as any).fakeStorage.getItem = (key: string) => (window as any).fakeStorage[key];\r\n (window as any).fakeStorage.removeItem = (key: string) => delete (window as any).fakeStorage[key];\r\n (window as any).fakeStorage.clear = () => { };\r\n (window as any).fakeStorage.key = (_index: number) => '';\r\n }\r\n return (window as any).fakeStorage;\r\n}\r\nexport function getLocalStorage(): Storage {\r\n try {\r\n return localStorage;\r\n } catch(err) {\r\n return getFakeStorage();\r\n }\r\n}\r\nexport function getTokenStorage(): Storage {\r\n try {\r\n return sessionStorage.getItem(loginDataKey) ? sessionStorage : localStorage;\r\n } catch(err) {\r\n return getFakeStorage();\r\n }\r\n}\r\n","export function base64ToBlob(base64: string, mimetype: string = '', slicesize: number = 512) {\n if(!window.atob || !Uint8Array) {\n // The current browser doesn't have the atob function. Cannot continue\n return null;\n }\n\n var bytechars = atob(base64);\n var bytearrays = [];\n\n for(var offset = 0; offset < bytechars.length; offset += slicesize) {\n var slice = bytechars.slice(offset, offset + slicesize);\n var bytenums = new Array(slice.length);\n for(var i = 0; i < slice.length; i++) {\n bytenums[i] = slice.charCodeAt(i);\n }\n var bytearray = new Uint8Array(bytenums);\n bytearrays[bytearrays.length] = bytearray;\n }\n\n return new Blob(bytearrays, { type: mimetype });\n}\n","export function chunk(arr: T[], len: number) {\n const chunks = [];\n const n = arr.length;\n let i = 0;\n\n while(i < n) {\n // tslint:disable-next-line: no-array-mutation\n chunks.push(arr.slice(i, i += len));\n }\n\n return chunks;\n}\n","export function clamp(n: number, min: number, max: number) {\n\treturn Math.min(Math.max(n, min), max);\n}\n","type ClassValue = string | number | ClassDictionary | ClassArray | undefined | null | false;\n\ninterface ClassDictionary {\n [id: string]: boolean | undefined | null;\n}\n\ninterface ClassArray extends Array { }\n\nconst hasOwn = {}.hasOwnProperty;\n\nexport function classNames(...args: ClassValue[]) {\n const classes: string[] = [];\n\n for(let i = 0; i < args.length; i++) {\n const arg = args[i];\n if(!arg) continue;\n\n if(typeof arg === 'string' || typeof arg === 'number') {\n // tslint:disable-next-line: no-array-mutation\n classes.push(String(arg));\n } else if(Array.isArray(arg) && arg.length) {\n const inner = classNames.apply(null, arg as []);\n if(inner) {\n // tslint:disable-next-line: no-array-mutation\n classes.push(inner);\n }\n } else if(typeof arg === 'object') {\n for(const key in arg) {\n if(hasOwn.call(arg, key) && (arg as ClassDictionary)[key]) {\n // tslint:disable-next-line: no-array-mutation\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n}\n","import { shadeColor } from \"../\";\n\nexport function hexToCssVars(name: string, h: string) {\n return `\n --color-${name}: ${h};\n --color-${name}-light-25: ${shadeColor(20, h)};\n --color-${name}-light-50: ${shadeColor(50, h)};\n --color-${name}-light-75: ${shadeColor(75, h)};\n --color-${name}-light-90: ${shadeColor(90, h)};\n --color-${name}-dark-25: ${shadeColor(-25, h)};\n --color-${name}-dark-50: ${shadeColor(-50, h)};\n --color-${name}-dark-75: ${shadeColor(-75, h)};\n --color-${name}-dark-90: ${shadeColor(-90, h)};\n `;\n}\n","export type RGB = { r: number, g: number, b: number };\n\nexport function hexToRgb(h: string): RGB {\n let r = 0, g = 0, b = 0;\n\n // 3 digits\n if(h.length === 4) {\n r = +('0x' + h[1] + h[1]);\n g = +('0x' + h[2] + h[2]);\n b = +('0x' + h[3] + h[3]);\n\n // 6 digits\n } else if(h.length === 7) {\n r = +('0x' + h[1] + h[2]);\n g = +('0x' + h[3] + h[4]);\n b = +('0x' + h[5] + h[6]);\n }\n\n return { r, g, b };\n}\n","import { isDevelopment } from \"./isDevelopment\";\n\nexport function dbg(label: string, key?: string, color?: string, ...details: any[]) {\n if(isDevelopment) {\n console.groupCollapsed(`%c${label}: %c[${key}]`, `color: ${color};`, 'color: inherit;');\n (details || []).forEach(d => console.error(d));\n console.groupEnd();\n }\n}\n","export function deepCompare(o1: any, o2: any) {\n let i, l, leftChain: any[], rightChain: any[];\n\n function compare2Objects(x: any, y: any) {\n let p;\n\n // remember that NaN === NaN returns false\n // and isNaN(undefined) returns true\n if(isNaN(x) && isNaN(y) && typeof x === 'number' && typeof y === 'number') {\n return true;\n }\n\n // Compare primitives and functions.\n // Check if both arguments link to the same object.\n // Especially useful on the step where we compare prototypes\n if(x === y) {\n return true;\n }\n\n // Works in case when functions are created in constructor.\n // Comparing dates is a common scenario. Another built-ins?\n // We can even handle functions passed across iframes\n if((typeof x === 'function' && typeof y === 'function') ||\n (x instanceof Date && y instanceof Date) ||\n (x instanceof RegExp && y instanceof RegExp) ||\n (x instanceof String && y instanceof String) ||\n (x instanceof Number && y instanceof Number)) {\n return x.toString() === y.toString();\n }\n\n // Quick checking of one object being a subset of another.\n // todo: cache the structure of arguments[0] for performance\n for(p in y) {\n if(y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if(typeof y[p] !== typeof x[p]) {\n return false;\n }\n }\n\n for(p in x) {\n if(y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n else if(typeof y[p] !== typeof x[p]) {\n return false;\n }\n\n switch(typeof (x[p])) {\n case 'object':\n leftChain.push(x);\n rightChain.push(y);\n\n if(!compare2Objects(x[p], y[p])) {\n return false;\n }\n\n leftChain.pop();\n rightChain.pop();\n break;\n\n default:\n if(x[p] !== y[p]) {\n return false;\n }\n break;\n }\n }\n\n return true;\n }\n\n leftChain = []; //Todo: this can be cached\n rightChain = [];\n\n return !compare2Objects(o1, o2);\n}","import { parse, parseISO, format, formatDistance, differenceInDays, startOfYear } from 'date-fns';\r\nimport numeral from 'numeral';\r\nimport moize from 'moize';\r\n\r\nfunction asLocalDate(dateString: string | undefined) {\r\n const d = toDate(dateString);\r\n const ret = d?.getUTCHours() === 0\r\n ? new Date(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()) : d;\r\n return ret;\r\n}\r\nexport function toDate(d: string | Date | undefined) {\r\n if(typeof d !== 'string')\r\n return d;\r\n return d.indexOf('-') !== -1 ? parseISO(d) : parse(d, 'M/d/yyyy', new Date());\r\n}\r\nfunction formatBase(d: Date | string | undefined, fmt: string, parser?: (dateString: string | undefined) => Date | undefined) {\r\n if(d == undefined)\r\n return '';\r\n try {\r\n const date = typeof d !== 'string' ? d :\r\n parser ? parser(d) : new Date(d);\r\n return date == undefined ? '' : format(date, fmt);\r\n } catch(e) {\r\n return d.toString();\r\n }\r\n}\r\nexport function formatUtcDate(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy') {\r\n return formatBase(d, fmt);\r\n}\r\nexport function formatUtcDateTime(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy hh:mm:ss a') {\r\n return formatBase(d, fmt);\r\n}\r\nexport function formatLocalDate(d: Date | string | undefined, fmt: string = 'MM/dd/yyyy') {\r\n return formatBase(d, fmt, asLocalDate);\r\n}\r\nexport function formatRelativeDateTime(d: Date | string, from: Date | string = new Date(), addSuffix: boolean = true) {\r\n const d1 = toDate(d);\r\n const d2 = toDate(from);\r\n if(d1 == undefined || d2 == undefined)\r\n return '';\r\n return formatDistance(d1, d2, { addSuffix });\r\n}\r\nexport function isDateValid(d: string | Date | undefined) {\r\n if(typeof (d) === 'string') {\r\n const parts = d.split('/');\r\n if(parts.length == 3 && parts[2].length !== 4)\r\n return false;\r\n }\r\n if(d == undefined)\r\n return false;\r\n return toDate(d || '')!.toString() !== 'Invalid Date';\r\n}\r\nexport function formatYesNo(v: boolean | undefined | null): '' | 'Yes' | 'No' {\r\n return v === true ? 'Yes' : v === false ? 'No' : '';\r\n}\r\n\r\nexport const daysElapsedInYear = moize((d: string | Date | undefined) => {\r\n const date = toDate(d);\r\n if(date == undefined)\r\n return 0;\r\n return differenceInDays(date, startOfYear(date));\r\n});\r\n\r\n// Polyfill from MDN\r\nexport function repeatString(s: string, repeatCount: number) {\r\n if(s == null) {\r\n throw new TypeError('can\\'t convert ' + s + ' to object');\r\n }\r\n if(repeatCount === 0)\r\n return '';\r\n\r\n let str = '' + s;\r\n\r\n // To convert string to integer.\r\n let count = +repeatCount;\r\n if(count !== count) {\r\n count = 0;\r\n }\r\n if(count < 0) {\r\n throw new RangeError('repeat count must be non-negative');\r\n }\r\n if(count === Infinity) {\r\n throw new RangeError('repeat count must be less than infinity');\r\n }\r\n count = Math.floor(count);\r\n if(str.length === 0 || count === 0) {\r\n return '';\r\n }\r\n\r\n // Ensuring count is a 31-bit integer allows us to heavily optimize the\r\n // main part. But anyway, most current (August 2014) browsers can't handle\r\n // strings 1 << 28 chars or longer, so:\r\n if(str.length * count >= 1 << 28) {\r\n throw new RangeError('repeat count must not overflow maximum string size');\r\n }\r\n const maxCount = str.length * count;\r\n count = Math.floor(Math.log(count) / Math.log(2));\r\n while(count) {\r\n str += str;\r\n count--;\r\n }\r\n str += str.substring(0, maxCount - str.length);\r\n return str;\r\n}\r\n\r\n/**\r\n * Format a number as money\r\n * @param {number} value The value to format.\r\n * @param {boolean} decimals Round the value to the specified decimal place.\r\n * @param {boolean} hideZeroDecimal Don't show the decimal separator and cent value when 0.\r\n */\r\nexport function formatMoney(value: number | undefined, decimals: number = 2, hideZeroDecimal?: boolean) {\r\n return '$' + formatNumber(value, decimals, hideZeroDecimal);\r\n}\r\n\r\nexport function formatNumberSuffix(value: number | undefined, decimals: number = 2, hideZeroDecimal?: boolean) {\r\n return formatNumber(value, decimals, hideZeroDecimal, true);\r\n}\r\n\r\n/**\r\n * Format a number\r\n * @param {number} value The value to format.\r\n * @param {boolean} decimals Round the value to the specified decimal place.\r\n * @param {boolean} hideZeroDecimal Don't show the decimal separator and cent value when 0.\r\n */\r\nexport function formatNumber(value: number | string | undefined, decimals: number = 2, hideZeroDecimal: boolean = true, addSuffix?: boolean) {\r\n if(value === undefined)\r\n return '';\r\n const num = typeof (value) === 'number' ? value :\r\n Number(String(value).replace(/[^\\d\\-\\.]/g, ''));\r\n return numeral(num).format('0,0' + getDecimalFormat(decimals, hideZeroDecimal) + (addSuffix ? 'o' : ''));\r\n}\r\nfunction getDecimalFormat(decimals: number, hideZeroDecimal?: boolean) {\r\n if(decimals <= 0) return '';\r\n const decimalFormat = `${repeatString('0', decimals)}`;\r\n return hideZeroDecimal ? `.[${decimalFormat}]` : `.${decimalFormat}`;\r\n}\r\n","import { auth } from 'web-shared/store';\r\nimport { isDevelopment } from '.';\r\n\r\ninterface Location {\r\n\tpathname: string;\r\n\tsearch: string;\r\n\tstate: any;\r\n\thash: string;\r\n}\r\n\r\nlet currentClientId: number = 0;\r\nlet googleAnalyticsCodes: string[] = [];\r\nconst enabled = () => googleAnalyticsCodes.length > 0 // & !isDevelopment;\r\nexport function initializeGa(clientId: number, gaCode: string) {\r\n\tcurrentClientId = clientId;\r\n\tgoogleAnalyticsCodes = gaCode.split(',').map(c => c?.trim() || '').filter(c => c);\r\n}\r\n\r\nfunction gaConfig() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tconst linker = currentClientId === 1032 ? { linker: { domains: ['ucbi.com'] } } : {};\r\n\tconst user_id = auth.getStateSnapshot().userName;\r\n\r\n\tgoogleAnalyticsCodes.forEach(gaCode => {\r\n\t\twindow.gtag('config', gaCode, {\r\n\t\t\tsend_page_view: false,\r\n\t\t\t...linker,\r\n\t\t});\r\n\t});\r\n\twindow.gtag('set', { user_id });\r\n}\r\n\r\nexport function gaPageView(location: Location) {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', 'page_view', {\r\n\t\tpage_path: location.pathname + location.search + location.hash,\r\n\t\tpage_search: location.search,\r\n\t\tpage_hash: location.hash,\r\n\t});\r\n}\r\nexport function gaEvent(category: string, action: string, properties: Record = {}) {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', action, { ...properties, category });\r\n}\r\nexport function gaUserCreate() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\tgaConfig();\r\n\twindow.gtag('event', 'sign_up', { });\r\n}\r\nexport function gaLogin() {\r\n\tif(!enabled() || !window.gtag)\r\n\t\treturn;\r\n\r\n\twindow.gtag('event', 'login', {});\r\n}\r\n","function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1)\n}\n\nexport function guid() {\n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n","import * as React from 'react';\r\nimport { Bugsnag } from \"@bugsnag/js/types\";\r\nimport bugsnag from '@bugsnag/js';\r\nimport bugsnagReact from '@bugsnag/plugin-react';\r\n\r\nexport const envConfig = getConfigFromElement('env_config') as api.EnvConfig;\r\n\r\nlet bugsnagClient: Bugsnag.Client;\r\nexport function initializeBugsnag() {\r\n if(bugsnagClient)\r\n return bugsnagClient;\r\n\r\n // Configure Bugsnag error reporting\r\n bugsnagClient = bugsnag({\r\n apiKey: envConfig?.apiKey || 'test',\r\n releaseStage: envConfig?.env || 'local',\r\n });\r\n\r\n bugsnagClient.use(bugsnagReact, React);\r\n return bugsnagClient;\r\n}\r\n\r\nexport function getConfigFromElement(elementId: string) {\r\n // Read the JSON-formatted data from the DOM.\r\n const element = document.getElementById(elementId);\r\n const json = element?.textContent || element?.innerText; // fallback for IE ≤ 8\r\n\r\n if(element)\r\n element.innerHTML = '';\r\n\r\n if(!json)\r\n return {};\r\n\r\n return JSON.parse(json);\r\n}\r\n","export const isDevelopment = process.env.NODE_ENV === 'development';\n","const poBoxRegex = /P\\.?O\\.?\\s?Box/i;\n\nexport function isPoBox(address: string | undefined): boolean {\n return address && address.match(poBoxRegex) !== null;\n}\n","export function isTin(tinString: string | undefined): boolean {\n const tin = tinString || '';\n return tin.match(/^\\d\\d\\-\\d\\d\\d\\d\\d\\d\\d$/g) !== null || tin.match(/^\\d\\d\\d\\-\\d\\d\\-\\d\\d\\d\\d$/g) !== null;\n}\n","export function objectKeysToLowerCase(input: Object) {\n if(typeof input !== 'object') return input;\n if(Array.isArray(input)) return input.map(objectKeysToLowerCase);\n return Object.keys(input).reduce(function (newObj, key) {\n newObj[key.toLowerCase()] = input[key];\n return newObj;\n }, {});\n}\n","import ReactDOMServer from 'react-dom/server';\r\nimport { ServerStyleSheet } from \"styled-components\";\r\n\r\nexport function renderComponent(component: React.ReactElement) {\r\n\tconst sheet = new ServerStyleSheet();\r\n\tconst body = ReactDOMServer.renderToStaticMarkup(sheet.collectStyles(component));\r\n\tconst styleTags = sheet.getStyleTags();\r\n\tconst styles = [...document.getElementsByTagName(\"style\")].map(s => s.innerHTML ? s.outerHTML : null).filter(s => s).join(' ') + styleTags;\r\n\treturn '' +\r\n\t\t'' + styles +\r\n\t\t'' + body + ' ';\r\n}\r\n\r\nexport function printHtml(html: string) {\r\n\tconst iframe = document.createElement('iframe');\r\n\tiframe.style.width = '0';\r\n\tiframe.style.height = '0';\r\n\tiframe.style.position = 'absolute';\r\n\tdocument.body.appendChild(iframe);\r\n\tconst doc = iframe?.contentDocument || iframe?.contentWindow?.document;\r\n\tif(doc) {\r\n\t\tdoc.open();\r\n\t\tdoc.write(html);\r\n\t\tdoc.close();\r\n\r\n\t\tiframe.contentWindow?.focus();\r\n\t\tiframe.contentWindow?.print();\r\n\t}\r\n\tdocument.body.removeChild(iframe);\r\n}\r\n\r\nexport function printComponent(component: React.ReactElement) {\r\n\tconst html = renderComponent(component);\r\n\tprintHtml(html);\r\n}\r\n","import * as React from 'react';\r\nimport equals from 'fast-deep-equal';\r\nimport { produce, Draft, Patch } from 'immer';\r\nimport moize from 'moize';\r\n\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { map, distinctUntilChanged } from 'rxjs/operators';\r\nimport { formatNumber, dbg, isTin, Failable } from 'web-shared/lib';\r\nimport { isDevelopment } from './isDevelopment';\r\nimport { isPoBox } from './isPoBox';\r\nimport { isDateValid } from './format';\r\nimport { TabError } from 'web-shared/components';\r\n\r\nconst withDevTools = isDevelopment\r\n && typeof window !== 'undefined'\r\n && (window as any).__REDUX_DEVTOOLS_EXTENSION__;\r\n\r\nexport type ApiState = { working?: boolean; error?: string };\r\nexport type ActionState = { ui: { actions: { [action: string]: ApiState } } };\r\nexport type ActionFn = (s: RootState) => Promise>;\r\nexport type PatchFilter = (patche: Patch, index: number, patches: Patch[]) => boolean;\r\n\r\nexport class RxStore {\r\n private stateSubject: BehaviorSubject;\r\n private computed: ComputedState | undefined;\r\n private devTools: any;\r\n private patchFilter: PatchFilter | undefined;\r\n public patches: Patch[];\r\n\r\n // Initialize the store with the initial state value.\r\n constructor(initialState: RootState, name: string, computed?: ComputedState, patchFilter?: PatchFilter) {\r\n this.stateSubject = new BehaviorSubject(initialState);\r\n this.computed = computed;\r\n this.patchFilter = patchFilter;\r\n this.patches = [];\r\n if(withDevTools) {\r\n this.devTools = withDevTools.connect({ name });\r\n this.devTools.init(initialState);\r\n this.devTools.subscribe((m: any) => {\r\n if(m.type === 'DISPATCH') {\r\n switch(m.payload?.type) {\r\n case 'JUMP_TO_STATE':\r\n case 'JUMP_TO_ACTION':\r\n this.stateSubject.next(JSON.parse(m.state));\r\n break;\r\n default:\r\n //console.log('DEVTOOLS:', m);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Get the current state as a stream\r\n public getState(): Observable {\r\n return this.stateSubject.pipe(distinctUntilChanged());\r\n }\r\n\r\n // Get the current state as a snapshot\r\n public getStateSnapshot(): RootState {\r\n return this.stateSubject.getValue();\r\n }\r\n\r\n public update(fn: (s: Draft) => void, action?: string) {\r\n const nextState = produce(this.getStateSnapshot(), fn\r\n , this.patchFilter ? _patches => {\r\n // const filteredPatches = patches.filter(this.patchFilter);\r\n // if(filteredPatches.length)\r\n // console.log(filteredPatches);\r\n } : undefined\r\n );\r\n if(isDevelopment && this.devTools)\r\n this.devTools.send(action || 'unknown action', nextState);\r\n this.stateSubject.next(nextState);\r\n }\r\n\r\n public async action(actionName: keyof RootState['ui']['actions'], action: ActionFn): Promise> {\r\n const actionState = this.getStateSnapshot().ui.actions[actionName as any];\r\n if(actionState.working)\r\n return { isError: true, error: 'Action is in progress.' } as any;\r\n\r\n // Set action state to working\r\n this.update(s => {\r\n const actionState = s.ui.actions[actionName as any];\r\n actionState.error = '';\r\n actionState.working = true;\r\n }, `${actionName.toString()}_begin`);\r\n\r\n // Execute action\r\n const response = await action(this.getStateSnapshot());\r\n\r\n // Handle action state from response\r\n this.update(s => {\r\n const actionState = (s.ui.actions as any)[actionName];\r\n actionState.error = response.isError ? response.error : undefined;\r\n actionState.working = false;\r\n }, actionName.toString() + (response.isError ? '_error' : '_success'));\r\n\r\n return response;\r\n }\r\n\r\n // Merge in a new state object\r\n public setState(partialState: Partial): void {\r\n let currentState = this.getStateSnapshot();\r\n let nextState = Object.assign({}, currentState, partialState);\r\n\r\n this.stateSubject.next(nextState);\r\n }\r\n\r\n // Subscribe to a portion of state values\r\n public useState(selector: (state: RootState, computed: ComputedState) => S) {\r\n if(!selector)\r\n throw new Error('Selector fn is not provided.');\r\n\r\n let id = '';\r\n if(isDevelopment) {\r\n try {\r\n const stackLine = new Error().stack?.split('\\n')[2];\r\n const match = /at\\s+(\\w+)/g.exec(stackLine || '');\r\n id = match?.[1] || '';\r\n } catch { }\r\n }\r\n\r\n const computed = this.computed || { state: {} } as ComputedState;\r\n computed.state = this.stateSubject.value;\r\n const [val, setVal] = React.useState(() => selector(this.stateSubject.value, computed));\r\n let getCurrentState = () => val;\r\n\r\n React.useLayoutEffect(() => {\r\n const selectSubscription = this.stateSubject.pipe(\r\n map(s => {\r\n computed.state = s;\r\n return selector(s, computed);\r\n }),\r\n distinctUntilChanged(),\r\n ).subscribe(s => {\r\n const currentState = getCurrentState();\r\n if(!equals(s, currentState)) {\r\n // if(isDevelopment)\r\n // dbg('Subscription', id, '#FFDC5D', currentState, '->', s);\r\n getCurrentState = () => s;\r\n setVal(s);\r\n }\r\n });\r\n return () => { selectSubscription.unsubscribe(); };\r\n }, [selector.toString()]);\r\n\r\n return val;\r\n }\r\n\r\n // Helper for binding form fields to state values\r\n public useForm(formOptions: FormOptions = {}) {\r\n const bindField = this.bindField.bind(this);\r\n const formState = React.useState({\r\n values: {},\r\n errors: {},\r\n required: {},\r\n updating: {},\r\n focused: '',\r\n subscriptions: {},\r\n submitAttempted: false,\r\n });\r\n const formStateRef = React.useRef(formState[0]);\r\n\r\n // Need to check all required fields plus extra validation\r\n const fs = formState[0];\r\n formStateRef.current = fs;\r\n const keys = Object.keys(fs.values);\r\n const isValid = keys.length > 0 && keys.every(k => {\r\n return (!fs.required[k] || !!fs.values[k]) && !fs.errors[k];\r\n });\r\n\r\n const updateFn = React.useRef<(key: string, value: any) => void>(() => { });\r\n let fields: { [k: string]: (nv: any) => void };\r\n const addField = moize(function (fieldProps: BoundField) {\r\n const { key, updateRxState, ...props } = fieldProps;\r\n fields = { ...fields, [key]: updateRxState };\r\n return props;\r\n });\r\n\r\n // Destroy subscriptions on unmount\r\n React.useEffect(() => {\r\n return () => {\r\n Object.keys(fs.subscriptions).map(k => {\r\n fs.subscriptions[k]?.unsubscribe();\r\n });\r\n };\r\n }, []);\r\n\r\n // Return the field binding helpers\r\n return {\r\n isValid,\r\n submit: (fn?: () => void) => {\r\n return (e: React.FormEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // See if we need to update the curently focused field\r\n const { focused, values } = formState[0];\r\n if(focused) {\r\n fields[focused](values[focused]);\r\n }\r\n\r\n // Mark the form with a submit attempt to show all errors\r\n formState[1](s => ({\r\n ...s,\r\n errors: keys.reduce((errors, k) => {\r\n errors[k] = errors[k] ? errors[k] : s.required[k] && !s.values[k] ? 'This field is required.' : '';\r\n return errors;\r\n }, s.errors),\r\n submitAttempted: true,\r\n }));\r\n if(isValid) {\r\n fn && fn();\r\n }\r\n };\r\n },\r\n onChange: (fn: (key: string, value: any) => void) => { updateFn.current = fn; },\r\n formState: fs,\r\n\r\n bindText(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({ updateFn, selector, formState, formStateRef, options: { ...formOptions, type: 'text', ...options } }));\r\n },\r\n bindTextMultiple(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef, options: { ...formOptions, type: 'text', ...options, defaultValue: [] },\r\n\r\n // parse: (v: string[]) => v,\r\n }));\r\n },\r\n bindNumeric(selector: StateSelector | string[], options?: BindOptionsNumeric) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef,\r\n options: { ...formOptions, ...options, type: options?.type || 'numeric' },\r\n parse: (v: string) => {\r\n return v === ''\r\n ? undefined\r\n : v.trim() === '-' ? -0 : Number(v.replace(options?.decimals! > 0 ? /[^0-9\\-\\.]/g : /[^0-9\\-]/g, ''));\r\n },\r\n format: (v: number | undefined, key?: string) => {\r\n const formatted = v == null || v.toString() === ''\r\n ? ''\r\n : (options?.currency ? '$' : '') + formatNumber(v, options?.decimals || 0, false) + (options?.percentage ? '%' : '');\r\n return options?.comma === false ? formatted.replace(',', '') : formatted;\r\n },\r\n }));\r\n },\r\n bindBoolean(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef,\r\n options: { ...formOptions, ...options },\r\n parse: (v: string | boolean) => v === 'true' || v === true ? true : v === 'false' || v === false ? false : undefined,\r\n // format: (v: boolean) => v === true ? 'true' : v === false ? 'false' : undefined,\r\n }));\r\n },\r\n bindDate(selector: StateSelector | string[], options?: BindOptions) {\r\n return addField(bindField({\r\n updateFn, selector, formState, formStateRef, options: { ...formOptions, ...options, type: 'date', placeholder: 'M/D/YYYY' },\r\n // format: (v: string) => v ? formatLocalDate(v, 'yyyy-MM-dd') : '',\r\n // parse: (v: string) => v ? formatLocalDate(v) : undefined,\r\n }));\r\n },\r\n };\r\n }\r\n\r\n bindField({ updateFn, selector, format, parse, formState, formStateRef, options }: BindFieldProps): BoundField {\r\n const { mask, index, index2, required, type = 'text', defaultValue } = options || {};\r\n const isSelectorFn = typeof selector === 'function';\r\n const name = isSelectorFn\r\n ? parseFn(selector)[1].trim()\r\n : selector.join('.');\r\n // console.log({name})\r\n\r\n const key = `${name}|${index ?? ''}`.trim()\r\n + (index2 == undefined ? '' : `|${index2}`);\r\n const [state, setState] = formState;\r\n const isFocused = state.focused === key;\r\n\r\n let v = state.values[key];\r\n\r\n // Set the default value for local state\r\n const value = format ? format(v, key) : v;\r\n const maskRegex = mask ? new RegExp(mask) : null;\r\n\r\n // Update Rx store\r\n const updateRxState = (nv: any) => {\r\n this.update(s => {\r\n // Prevent updates when there is no change\r\n const currentStateValue = isSelectorFn\r\n ? selector(s as RootState, (index || 0) as any, (index2 || 0) as any) ?? ''\r\n : getSelector(selector, s as RootState, index, index2);\r\n if(currentStateValue === (nv ?? '')) return;\r\n\r\n // dbg('updateRxFn', key, '#FFEDAC', { currentStateValue, nv });\r\n updateSelector(selector, s, index, index2, parse ? parse(nv) : nv);\r\n }, key);\r\n };\r\n\r\n // Update local state\r\n const updateLocalState = (value: any, updateRx?: boolean, externalChange?: boolean) => {\r\n formStateRef.current.updating[key] = true;\r\n\r\n // dbg('updateLocalState', key, 'purple', { value, updateRx });\r\n if(maskRegex && (value || '').replace(maskRegex, '') !== value) {\r\n return;\r\n }\r\n\r\n // Try our mask function\r\n const [maskedValue, error] = maskValue(type, value, options);\r\n if(maskedValue === null) {\r\n return;\r\n }\r\n\r\n updateRx && updateRxState(maskedValue);\r\n\r\n // Update form state\r\n setState(s => {\r\n const ret = {\r\n ...s,\r\n values: { ...s.values, [key]: maskedValue },\r\n errors: { ...s.errors, [key]: error },\r\n };\r\n return ret;\r\n });\r\n\r\n // Notify the component that the form changed.\r\n if(updateFn.current && !externalChange) {\r\n // dbg('updateFn', key, '#F79646', { value, updateRx });\r\n setTimeout(() => updateFn.current(key, value), 100);\r\n }\r\n\r\n formStateRef.current.updating[key] = false;\r\n };\r\n\r\n // Subscribe to state changes\r\n if(!state.subscriptions[key]) {\r\n const selectSubscription = this.stateSubject.pipe(\r\n map(v => {\r\n try {\r\n return isSelectorFn\r\n ? selector(v, index as any, index2 as any)\r\n : getSelector(selector, v, index, index2);\r\n } catch(ex) {\r\n if(formStateRef.current.subscriptions[key])\r\n formStateRef.current.subscriptions[key]?.unsubscribe();\r\n else\r\n dbg('Unsubscribe Failed', key, 'red', formStateRef.current.subscriptions[key]);\r\n setState(s => ({ ...s, subscriptions: { ...s.subscriptions, [key]: undefined } }));\r\n }\r\n }),\r\n distinctUntilChanged(),\r\n ).subscribe(nv => {\r\n const v = formStateRef.current.values[key];\r\n // tslint:disable-next-line: triple-equals\r\n if((v ?? '') !== (nv ?? '') && !formStateRef.current.updating[key]) {\r\n // dbg('Form Subscription', key, '#FFEDAC', { v, nv });\r\n updateLocalState(nv?.toString(), undefined, true);\r\n }\r\n });\r\n\r\n // Add this subscription to the form state\r\n setState(s => {\r\n return { ...s, subscriptions: { ...s.subscriptions, [key]: selectSubscription } };\r\n });\r\n }\r\n\r\n let inputType = type;\r\n switch(type) {\r\n case 'password':\r\n\t\t\tcase 'checkbox':\r\n\t\t\tcase 'number':\r\n inputType = type;\r\n\t\t\t\tbreak;\r\n default:\r\n inputType = 'text';\r\n break;\r\n }\r\n if(options?.hide && !isFocused)\r\n inputType = 'password';\r\n\r\n const error = options.allErrors?.find(e => e && e.field && name === e.field && (e.i == index || e.i === -1) && (e.j == index2 || e.j === -1));\r\n // if(name === 's.ui.actions.withdraw.denialReasons')\r\n // console.log({ name, value, v, defaultValue });\r\n const errorMsg = error?.msg ? error.msg : state.errors[key] || (error ? '' : undefined);\r\n const numericOptions = options as BindOptionsNumeric;\r\n const style: React.CSSProperties = {};\r\n if(numericOptions?.currency || numericOptions?.percentage)\r\n style.textAlign = 'right';\r\n if(options.align)\r\n style.textAlign = options.align;\r\n const valueKey = type === 'checkbox' ? 'checked' : 'value';\r\n\r\n return {\r\n key,\r\n placeholder: options.placeholder,\r\n updateRxState,\r\n\t\t\ttype: inputType,\r\n\t\t\tmax: inputType === 'number' ? numericOptions?.max : undefined,\r\n [valueKey]: type === 'checkbox'\r\n ? (v === 'true' || v === true)\r\n : !v && defaultValue\r\n ? defaultValue\r\n : value === undefined || v === undefined\r\n ? ''\r\n : isFocused\r\n ? v\r\n : value,\r\n onChange: (e: React.ChangeEvent, valueOverride?: any) => {\r\n const value = 'checked' in e.target && type === 'checkbox' ? e.target.checked :\r\n 'multiple' in e.target && e.target.multiple && 'selectedOptions' in e.target ? ([...e.target.selectedOptions].map(o => o.value) || []) :\r\n e.target.value;\r\n const updateRx = options?.update === 'onChange' || !updateOnBlur(e.target);\r\n updateLocalState(valueOverride !== undefined ? valueOverride : value, updateRx);\r\n },\r\n onFocus: e => {\r\n setState(s => ({ ...s, focused: key }));\r\n if('select' in e.target) {\r\n const t = e.target;\r\n setTimeout(() => {\r\n if(t === document.activeElement)\r\n t.select();\r\n }, 0);\r\n }\r\n },\r\n onBlur: (e: React.FocusEvent) => {\r\n if(!options?.disableOnBlur) {\r\n setState(s => ({ ...s, focused: '' }));\r\n }\r\n if(options?.update !== 'onChange' && updateOnBlur(e.target)) {\r\n const value = 'checked' in e.target && type === 'checkbox' ? e.target.checked : e.target.value;\r\n updateRxState(value);\r\n }\r\n },\r\n required,\r\n 'aria-required': required,\r\n 'data-error': errorMsg,\r\n // tslint:disable-next-line: triple-equals\r\n 'aria-invalid': errorMsg != undefined,\r\n style,\r\n title: error?.msg,\r\n autoComplete: 'sfsf9uhef3',\r\n };\r\n }\r\n}\r\n\r\nfunction updateOnBlur(element: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement) {\r\n return element?.nodeName.toLowerCase() === 'input'\r\n && element.type !== 'radio' && element.type !== 'checkbox';\r\n}\r\n\r\nfunction maskValue(type: InputType, value: string, options: BindOptions | BindOptionsNumeric): [null | string, string] {\r\n let v = value === undefined ? '' : value;\r\n let e = '';\r\n switch(type) {\r\n case 'date':\r\n if(v.match(/[^0-9\\/]/) !== null || v.replace(/[^0-9]/g, '').length > 8 || v.replace(/[^\\/]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d$/))\r\n v = v.substring(0, 2) + '/' + v.substring(2, 3);\r\n if(v.match(/^\\d\\d\\/\\d\\d\\d$/))\r\n v = v.substring(0, 5) + '/' + v.substring(5, 6);\r\n e = isDateValid(v) ? '' : 'Not a valid date (mm/dd/yyyy)';\r\n break;\r\n case 'ssn':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 9 || v.replace(/[^\\-]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\-/) !== null || v.match(/^\\d\\d\\-/) !== null || v.match(/^\\d\\d\\d\\-\\-/) !== null || v.match(/^\\d\\d\\d\\-\\d\\-/) !== null)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d\\d$/))\r\n v = v.substring(0, 3) + '-' + v.substring(3, 4);\r\n if(v.match(/^\\d\\d\\d-\\d\\d\\d$/))\r\n v = v.substring(0, 6) + '-' + v.substring(6, 7);\r\n e = v.replace(/[\\s_-]/g, '').length === 9 ? '' : 'SSN is not valid';\r\n break;\r\n case 'ssn4':\r\n if(v.match(/[^0-9]/) !== null || v.length > 4)\r\n return [null, e];\r\n e = v.length === 0 ? 'This field is required' : v.length < 4 ? 'Please enter the last 4 digits of your SSN' : '';\r\n break;\r\n case 'physicalAddress':\r\n e = isPoBox(value) ? 'The business address must be a physical address.' : '';\r\n break;\r\n case 'tin':\r\n if(v.replace(/[^0-9]/g, '').length > 9)\r\n return [null, e];\r\n e = isTin(v) ? '' : 'Not a valid EIN or SSN';\r\n break;\r\n case 'ein':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 9 || v.replace(/[^\\-]/g, '').length > 1)\r\n return [null, e];\r\n if(v.match(/^\\d\\-/) !== null)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d$/))\r\n v = v.substring(0, 2) + '-' + v.substring(2, 3);\r\n e = v.replace(/[\\s_-]/g, '').length === 9 ? '' : 'EIN is not valid';\r\n break;\r\n case 'phone':\r\n if(v.match(/[^0-9\\-]/) !== null || v.replace(/[^0-9]/g, '').length > 10 || v.replace(/[^\\-]/g, '').length > 2)\r\n return [null, e];\r\n if(v.match(/^\\d\\d\\d\\d$/))\r\n v = v.substring(0, 3) + '-' + v.substring(3, 4);\r\n if(v.match(/^\\d\\d\\d-\\d\\d\\d\\d$/))\r\n v = v.substring(0, 7) + '-' + v.substring(7, 8);\r\n e = v.replace(/[^0-9]/g, '').length === 10 ? '' : 'Phone number is not valid';\r\n break;\r\n case 'numeric':\r\n const numericOptions = options as BindOptionsNumeric;\r\n try {\r\n v = numericOptions.positive\r\n ? v.replace(/[^0-9\\.]/g, '')\r\n : v.replace(/[^0-9\\.\\-]/g, '');\r\n if(!numericOptions.positive && v?.trim() === '-')\r\n break;\r\n\r\n const num = Number(v);\r\n if(isNaN(num)) {\r\n return [null, 'Invalid number'];\r\n }\r\n\r\n if(v !== '' && numericOptions.min !== undefined) {\r\n if(num < numericOptions.min) {\r\n return [v, `Must be at least ${numericOptions.min}`];\r\n }\r\n }\r\n if(v !== '' && numericOptions.max !== undefined) {\r\n if(num > numericOptions.max) {\r\n return [v, `Cannot be more than ${numericOptions.max}`];\r\n }\r\n }\r\n\r\n const [whole, dec] = v.split('.');\r\n if((numericOptions.decimals || 0) === 0) {\r\n v = whole;\r\n } else if(dec !== undefined) {\r\n v = `${whole}.${dec.substring(0, numericOptions.decimals)}`;\r\n }\r\n } catch(e) {\r\n return [null, 'Invalid number'];\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n return [v, e];\r\n}\r\n\r\ntype InputType = 'text' | 'checkbox' | 'date' | 'email' | 'ssn' | 'ssn4' | 'password' | 'accountNumber' | 'physicalAddress' | 'phone' | 'numeric' | 'number' | 'tin' | 'ein';\r\ntype LocalFormState = {\r\n values: { [k: string]: any };\r\n errors: { [k: string]: string };\r\n required: { [k: string]: boolean };\r\n updating: { [k: string]: boolean };\r\n subscriptions: { [k: string]: Subscription | undefined };\r\n focused: string;\r\n submitAttempted: boolean;\r\n};\r\nexport type StateSelector = (state: State, i: number, j: number) => T | undefined;\r\ntype BindFieldProps = {\r\n formState: [LocalFormState, React.Dispatch>];\r\n formStateRef: React.MutableRefObject;\r\n selector: StateSelector | string[];\r\n format?: (value: any, key?: string) => string,\r\n parse?: (value: string) => any,\r\n options: BindOptions;\r\n updateFn: React.MutableRefObject<(key: string, value: any) => void>\r\n};\r\ntype BindOptions = {\r\n mask?: string;\r\n hide?: boolean;\r\n index?: number | string;\r\n index2?: number | string;\r\n type?: InputType;\r\n required?: boolean;\r\n placeholder?: string;\r\n update?: 'onBlur' | 'onChange';\r\n disableOnBlur?: boolean;\r\n allErrors?: TabError[];\r\n defaultValue?: string | string[];\r\n align?: React.CSSProperties['textAlign'];\r\n};\r\ntype BindOptionsNumeric = BindOptions & {\r\n decimals?: number;\r\n min?: number;\r\n max?: number;\r\n currency?: boolean;\r\n percentage?: boolean;\r\n positive?: boolean;\r\n defaultValue?: number;\r\n comma?: boolean;\r\n};\r\nexport type BoundFieldProps = {\r\n type: InputType;\r\n value?: any;\r\n checked?: boolean;\r\n onChange: (e: React.ChangeEvent, valueOverride?: any) => void;\r\n onFocus: (e: React.FocusEvent) => void;\r\n onBlur: (e: React.FocusEvent) => void;\r\n required?: boolean;\r\n placeholder?: string,\r\n 'aria-required'?: boolean;\r\n 'aria-invalid': boolean;\r\n 'data-error': string | undefined;\r\n style: any;\r\n title?: string;\r\n\tautoComplete?: string;\r\n\tmax?: number;\r\n};\r\ntype BoundField = BoundFieldProps & {\r\n key: string;\r\n updateRxState: (nv: any) => void;\r\n};\r\n\r\nfunction parseFn(selector: Function | string) {\r\n // Sanitize the fn string\r\n const fnString = selector.toString()\r\n .replace(/[\\r\\n]/g, '')\r\n .replace(/\\s\\s/g, ' ');\r\n\r\n // Parse a full function body\r\n if(fnString.startsWith('function')) {\r\n const fnRegex = new RegExp('\\\\(([^\\)]*)\\\\).*return\\s*([^;}]*)', 'gi');\r\n const result = fnRegex.exec(fnString);\r\n if(!result)\r\n return ['', ''];\r\n const p = (result[1] || '').trim();\r\n const f = (result[2] || '').trim();\r\n return [p, f];\r\n }\r\n\r\n // Parse a lambda\r\n const [params, body] = fnString.split('=>').map(p => p.trim());\r\n const stateVars = params.replace('(', '').replace(')', '');\r\n return [stateVars, body];\r\n}\r\n\r\nexport function executeSelector(selector: (string|number)[] | Function, state: {}, i?: string | number, i2?: string | number) : T {\r\n return typeof selector === 'function'\r\n ? selector(state, i, i2)\r\n : getSelector(selector, state, i, i2);\r\n}\r\nexport function getSelector(parts: (string|number)[], data: {}, i: string | number | undefined, j: string | number | undefined): any {\r\n let o: any = data;\r\n const normalizedParts = parts.join('.')\r\n .replace('[i]', `.${i}`)\r\n .replace('[i2]', `.${j}`)\r\n .replace('[j]', `.${j}`)\r\n .split('.');\r\n\r\n for(let i = 1, n = normalizedParts.length; i < n; ++i) {\r\n const k = normalizedParts[i];\r\n if(k in o) {\r\n o = o[k];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return o;\r\n}\r\n\r\nexport function getSelectorPaths(selector: Function | string, i?: string | number, i2?: string | number) {\r\n const [, fnBody] = parseFn(selector)\r\n return replaceIndexParts(fnBody, i, i2)\r\n .flatMap(v => v.trim().split('['))\r\n .map(v => v.replace(']', ''));\r\n}\r\nfunction replaceIndexParts(selector: string | string[], i: string | number | undefined, i2: string | number | undefined) {\r\n const parts = typeof selector === 'string' ? selector.split('.') : selector;\r\n return parts\r\n .map(v => v\r\n .replace('[i]', `.${i}`)\r\n .replace('[i2]', `.${i2}`)\r\n .replace('[j]', `.${i2}`))\r\n .join('.')\r\n .split('.');\r\n}\r\nexport function updateSelector(selector: Function | string | string[], data: {}, i: number | string | undefined, i2: number | string | undefined, v: any) {\r\n const parts = typeof selector === 'function'\r\n ? getSelectorPaths(selector, i, i2)\r\n : replaceIndexParts(selector, i, i2);\r\n\r\n // Skip the first\r\n parts.shift();\r\n\r\n let o: any = data;\r\n while(parts.length - 1) {\r\n const n = parts.shift() ?? '';\r\n if(!(n in o)) {\r\n // o[n] = {};\r\n console.log('Object missing:', { selector, data: JSON.parse(JSON.stringify(data)), i, i2, v, n, o: JSON.parse(JSON.stringify(o)), 'o[n]': o[n] });\r\n return;\r\n }\r\n o = o[n];\r\n }\r\n o[parts[0]] = v;\r\n}\r\nexport interface FormOptions {\r\n required?: boolean;\r\n update?: 'onBlur' | 'onChange';\r\n disableOnBlur?: boolean;\r\n allErrors?: TabError[];\r\n}\r\n","export function serializeFormData(obj: { [a: string]: string }) {\n return Object.keys(obj).reduce((a, k) => {\n // tslint:disable-next-line: no-array-mutation\n a.push(k + '=' + encodeURIComponent(obj[k]));\n return a;\n }, [] as string[]).join('&');\n}\n","export function shadeColor(percent: number, from: string, to?: string): string {\n // Error check\n if(typeof (percent) !== 'number' || percent < -100 || percent > 100) {\n return from;\n }\n if(typeof (from) !== 'string' || (from[0] !== 'r' && from[0] !== '#')) {\n return from;\n }\n if((typeof (to) !== 'string' && typeof (to) !== 'undefined')) {\n return from;\n }\n\n const p = percent / 100.0;\n const b = p < 0;\n const r = Math.round;\n let h = from.length > 9;\n h = typeof (to) === 'string' ? to.length > 9 ? true : to === 'c' ? !h : false : h;\n\n const p2 = b ? p * -1 : p;\n const f = sbcRip(from);\n const t = sbcRip(to && to !== 'c' ? to : b ? '#000000' : '#FFFFFF');\n\n // ErrorCheck\n if(!f || !t) {\n return from;\n }\n\n if(h) {\n return 'rgb(' +\n r((t[0] - f[0]) * p2 + f[0]) + ',' +\n r((t[1] - f[1]) * p2 + f[1]) + ',' +\n r((t[2] - f[2]) * p2 + f[2]) +\n (f[3] < 0 && t[3] < 0 ? ')' : ',' + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p2 + f[3]) * 10000) / 10000 : t[3] < 0 ? f[3] : t[3]) + ')');\n } else {\n return '#' + (0x100000000 + (f[3] > -1 && t[3] > -1 ? r(((t[3] - f[3]) * p2 + f[3]) * 255) : t[3] > -1 ? r(t[3] * 255) : f[3] > -1 ? r(f[3] * 255) : 255)\n * 0x1000000 + r((t[0] - f[0]) * p2 + f[0]) * 0x10000 + r((t[1] - f[1]) * p2 + f[1]) * 0x100 + r((t[2] - f[2]) * p2 + f[2])).toString(16).slice(f[3] > -1 || t[3] > -1 ? 1 : 3);\n }\n}\nfunction sbcRip(input: string) {\n const length = input.length;\n const RGB: { 0: number, 1: number, 2: number, 3: number } = { 0: 0, 1: 0, 2: 0, 3: 0 };\n\n if(length > 9) {\n const inputParts = input.split(',');\n if(inputParts.length < 3 || inputParts.length > 4)\n return null;\n RGB[0] = parseInt(inputParts[0].slice(4), 10);\n RGB[1] = parseInt(inputParts[1], 10);\n RGB[2] = parseInt(inputParts[2], 10);\n RGB[3] = inputParts[3] ? parseFloat(inputParts[3]) : -1;\n } else {\n let colorStr = input;\n if(length === 8 || length === 6 || length < 4)\n return null;\n if(length < 6)\n colorStr = '#' + input[1] + input[1] + input[2] + input[2] + input[3] + input[3] + (length > 4 ? input[4] + '' + input[4] : '');\n const colorHex = parseInt(colorStr.slice(1), 16);\n RGB[0] = colorHex >> 16 & 255;\n RGB[1] = colorHex >> 8 & 255;\n RGB[2] = colorHex & 255;\n RGB[3] = length === 9 || length === 5 ? Math.round(((colorHex >> 24 & 255) / 255) * 10000) / 10000 : -1;\n }\n return RGB;\n}\n","import Axios, { CancelTokenSource } from 'axios';\r\nimport { SimpleEventDispatcher } from 'ste-simple-events';\r\n\r\nimport { get, postJson } from \"web-shared/lib\";\r\n\r\ntype NegotiateResponse = {\r\n\tConnectionId: string;\r\n\tConnectionTimeout: number;\r\n\tConnectionToken: string;\r\n\tDisconnectTimeout: number;\r\n\tKeepAliveTimeout: number;\r\n\tProtocolVersion: string;\r\n\tTransportConnectTimeout: number;\r\n\tUrl: string;\r\n\tRedirectUrl?: string;\r\n};\r\ntype KeepAliveData = {\r\n\tmonitoring?: boolean;\r\n\tactivated?: boolean;\r\n\treconnectKeepAliveUpdate?: () => void,\r\n\ttimeout?: number;\r\n\ttimeoutWarning?: number;\r\n\tuserNotified?: boolean;\r\n}\r\ntype ResponseDataMin = {\r\n\tC?: string;\r\n\tM?: string[];\r\n\tS?: boolean;\r\n\tT?: boolean;\r\n\tG?: string;\r\n\tE?: string;\r\n}\r\ntype ResponseData = {\r\n\tMessageId?: string;\r\n\tMessages?: string[];\r\n\tInitialized?: boolean;\r\n\tShouldReconnect?: boolean;\r\n\tGroupsToken?: string;\r\n\tError?: string;\r\n}\r\n\r\ntype ConnectionState = 'connecting' | 'connected' | 'reconnecting' | 'disconnected';\r\n\r\n// const defaultContentType = 'application/x-www-form-urlencoded; charset=UTF-8';\r\nconst keepAliveWarnAt = 2 / 3; // Warn user of slow connection if we breach the X% mark of the keep alive timeout\r\nconst pingInterval = 300000;\r\n\r\nfunction stringifySend(message: any) {\r\n\tif(typeof (message) === \"string\" || typeof (message) === \"undefined\" || message === null)\r\n\t\treturn message;\r\n\treturn JSON.stringify(message);\r\n}\r\n\r\nexport class SignalR {\r\n\tversion = \"2.4.3\";\r\n\turl: string = '';\r\n\tnegotiateCancelSource = Axios.CancelToken.source();\r\n\tstartCancelSource = Axios.CancelToken.source();\r\n\tbeatHandle = 0;\r\n\ttransportTimeoutHandle = 0;\r\n\ttransportConnectTimeout = 0;\r\n\ttotalTransportConnectTimeout = 0;\r\n\treconnectTimeout = 0;\r\n\tpingIntervalId = 0;\r\n\tbeatInterval = 5000;\r\n\tkeepAliveData: KeepAliveData = {};\r\n\tstate: ConnectionState = 'disconnected';\r\n\tid: string = '';\r\n\ttoken: string = '';\r\n\tdisconnectTimeout = 30000; // This should be set by the server in response to the negotiate request (30s default)\r\n\treconnectWindow = 30000; // This should be set by the server in response to the negotiate request\r\n\tlastMessageAt = new Date().getTime();\r\n\tlastActiveAt = new Date().getTime();\r\n\tconfiguredStopReconnectingTimeout = false;\r\n\tsocket: WebSocket | undefined = undefined;\r\n\tappRelativeUrl: string = '';\r\n\tstartRequested = false;\r\n\tstartCompleted = false;\r\n\tconnectionStopped = false;\r\n\tredirectQs = '';\r\n\tqs = '';\r\n\tmessageId = '';\r\n\twebSocketServerUrl = '';\r\n\r\n\tbuffer: string[] = [];\r\n\r\n\tdrainBuffer() {\r\n\t\t// Ensure that the connection is connected when we drain (do not want to drain while a connection is not active)\r\n\t\tif(this.state === 'connected') {\r\n\t\t\twhile(this.buffer.length > 0) {\r\n\t\t\t\tthis.onReceivedEvent.dispatch(this.buffer.shift() || '');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tclearBuffer() { this.buffer = []; }\r\n\ttryBuffer(message: string) {\r\n\t\tif(this.state === 'connecting') {\r\n\t\t\tthis.buffer.push(message);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\tprivate onStartEvent = new SimpleEventDispatcher();\r\n\tprivate onStartingEvent = new SimpleEventDispatcher();\r\n\tprivate onReceivedEvent = new SimpleEventDispatcher();\r\n\tprivate onErrorEvent = new SimpleEventDispatcher();\r\n\tprivate onConnectionSlowEvent = new SimpleEventDispatcher();\r\n\tprivate onReconnectingEvent = new SimpleEventDispatcher();\r\n\tprivate onReconnectEvent = new SimpleEventDispatcher();\r\n\tprivate onStateChangedEvent = new SimpleEventDispatcher<{ oldState: ConnectionState, newState: ConnectionState }>();\r\n\tprivate onDisconnectEvent = new SimpleEventDispatcher();\r\n\r\n\tpublic get onStart() { return this.onStartEvent.asEvent(); }\r\n\tpublic get onStarting() { return this.onStartingEvent.asEvent(); }\r\n\tpublic get onReceived() { return this.onReceivedEvent.asEvent(); }\r\n\tpublic get onError() { return this.onErrorEvent.asEvent(); }\r\n\tpublic get onConnectionSlow() { return this.onConnectionSlowEvent.asEvent(); }\r\n\tpublic get onReconnecting() { return this.onReconnectingEvent.asEvent(); }\r\n\tpublic get onReconnect() { return this.onReconnectEvent.asEvent(); }\r\n\tpublic get onStateChanged() { return this.onStateChangedEvent.asEvent(); }\r\n\tpublic get onDisconnect() { return this.onDisconnectEvent.asEvent(); }\r\n\r\n\tconstructor(url: string) {\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\tchangeState(expectedState: ConnectionState, newState: ConnectionState) {\r\n\t\tif(expectedState === this.state) {\r\n\t\t\tthis.state = newState;\r\n\r\n\t\t\tthis.onStateChangedEvent.dispatch({ oldState: expectedState, newState });\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconfigurePingInterval() {\r\n\t\tif(!this.pingIntervalId && pingInterval) {\r\n\t\t\tthis.pingIntervalId = window.setInterval(() => {\r\n\t\t\t\tthis.pingServer();\r\n\t\t\t}, pingInterval);\r\n\t\t}\r\n\t}\r\n\r\n\tasync pingServer() {\r\n\t\tlet url = `${this.url}/ping`;\r\n\t\turl = this.addQs(url, this.qs);\r\n\r\n\t\tconst pingResponse = await get<{ Response: string }>(url);\r\n\r\n\t\tif(pingResponse.isError) {\r\n\t\t\tthis.onErrorEvent.dispatch(pingResponse.error);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif(pingResponse.payload?.Response === 'pong')\r\n\t\t\treturn true;\r\n\r\n\t\tthis.onErrorEvent.dispatch(`Ping response was unexpected: ${pingResponse.payload?.Response}`);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tasync start(reconnecting: boolean) {\r\n\t\t// Begin with the /negotiate request to the server to get a connection token\r\n\t\tconst res = await this.negotiate(this.url, this.negotiateCancelSource);\r\n\t\tthis.id = res.ConnectionId;\r\n\t\tthis.token = res.ConnectionToken;\r\n\r\n\t\tif(res.KeepAliveTimeout) {\r\n\t\t\tthis.keepAliveData.activated = true;\r\n\r\n\t\t\t// Timeout to designate when to force the connection into reconnecting converted to milliseconds\r\n\t\t\tthis.keepAliveData.timeout = res.KeepAliveTimeout * 1000;\r\n\r\n\t\t\t// Timeout to designate when to warn the developer that the connection may be dead or is not responding.\r\n\t\t\tthis.keepAliveData.timeoutWarning = this.keepAliveData.timeout * keepAliveWarnAt;\r\n\r\n\t\t\t// Instantiate the frequency in which we check the keep alive. It must be short in order to not miss/pick up any changes\r\n\t\t\tthis.beatInterval = (this.keepAliveData.timeout - this.keepAliveData.timeoutWarning) / 3;\r\n\t\t} else {\r\n\t\t\tthis.keepAliveData.activated = false;\r\n\t\t}\r\n\r\n\t\tthis.appRelativeUrl = res.Url;\r\n\r\n\t\t// Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect\r\n\t\t// after res.DisconnectTimeout seconds.\r\n\t\tthis.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms\r\n\r\n\t\t// Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout\r\n\t\tthis.totalTransportConnectTimeout = this.transportConnectTimeout + res.TransportConnectTimeout * 1000;\r\n\r\n\t\tthis.reconnectWindow = res.DisconnectTimeout + (this.keepAliveData.timeout || 0);\r\n\r\n\t\t// Start the web socket connection\r\n\r\n\t\tif(this.startRequested || this.connectionStopped) {\r\n\t\t\tlog(\"WARNING! webSockets transport cannot be started. Initialization ongoing or completed.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlog(\"webSockets transport starting.\");\r\n\r\n\t\tlet failCalled = false;\r\n\t\tconst onFailed = (error: string | undefined) => {\r\n\t\t\t// Don't allow the same transport to cause onFallback to be called twice\r\n\t\t\tif(!failCalled) {\r\n\t\t\t\tfailCalled = true;\r\n\t\t\t\tthis.transportFailed(error);\r\n\t\t\t}\r\n\r\n\t\t\t// Returns true if the transport should stop;\r\n\t\t\t// false if it should attempt to reconnect\r\n\t\t\treturn !this.startCompleted || this.connectionStopped;\r\n\t\t}\r\n\t\tthis.transportTimeoutHandle = window.setTimeout(() => {\r\n\t\t\tif(!failCalled) {\r\n\t\t\t\tfailCalled = true;\r\n\t\t\t\tlog(\"webSockets transport timed out when trying to connect.\");\r\n\t\t\t\tthis.transportFailed(undefined);\r\n\t\t\t}\r\n\t\t}, this.totalTransportConnectTimeout);\r\n\r\n\r\n\t\t// ws: /connect\r\n\t\tlet opened = false;\r\n\r\n\t\tif(!window.WebSocket) {\r\n\t\t\tonFailed('No WebSocket support on this browser.');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.socket) {\r\n\t\t\tconst parser = window.document.createElement(\"a\");\r\n\t\t\tparser.href = this.url;\r\n\r\n\t\t\tconst wsProtocol = parser.protocol === \"https:\" ? \"wss://\" : \"ws://\";\r\n\t\t\tlet url = this.webSocketServerUrl ? this.webSocketServerUrl : wsProtocol + parser.host;\r\n\r\n\t\t\turl += this.getUrl(reconnecting);\r\n\r\n\t\t\tlog(`Connecting to websocket endpoint '${url}'.`);\r\n\t\t\tthis.socket = new window.WebSocket(url);\r\n\r\n\t\t\tthis.socket.onopen = () => {\r\n\t\t\t\topened = true;\r\n\t\t\t\tlog(\"Websocket opened.\");\r\n\r\n\t\t\t\tthis.clearReconnectTimeout();\r\n\r\n\t\t\t\tif(this.changeState('reconnecting', 'connected') === true)\r\n\t\t\t\t\tthis.onReconnectEvent.dispatch();\r\n\t\t\t};\r\n\r\n\t\t\tconst that = this;\r\n\t\t\tthis.socket.onclose = function(event: CloseEvent) {\r\n\t\t\t\tlet error;\r\n\r\n\t\t\t\t// Only handle a socket close if the close is from the current socket.\r\n\t\t\t\t// Sometimes on disconnect the server will push down an onclose event\r\n\t\t\t\t// to an expired socket.\r\n\r\n\t\t\t\tif(this === that.socket) {\r\n\t\t\t\t\tif(opened && typeof event.wasClean !== \"undefined\" && event.wasClean === false) {\r\n\t\t\t\t\t\t// Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but\r\n\t\t\t\t\t\t// I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers.\r\n\t\t\t\t\t\terror = 'WebSocket closed.';\r\n\r\n\t\t\t\t\t\tlog(`Unclean disconnect from websocket: ${event.reason || \"[no reason given].\"}`);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlog(\"Websocket closed.\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!onFailed || !onFailed(error)) {\r\n\t\t\t\t\t\tif(error)\r\n\t\t\t\t\t\t\tthat.onErrorEvent.dispatch(error);\r\n\r\n\t\t\t\t\t\tthat.reconnect();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tthis.socket.onmessage = function (event) {\r\n\t\t\t\tvar data;\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tdata = event.data ? JSON.parse(event.data) : event.data;\r\n\t\t\t\t}\r\n\t\t\t\tcatch(error) {\r\n\t\t\t\t\tthat.onErrorEvent.dispatch(String(error));\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(data) {\r\n\t\t\t\t\tthat.processMessages(data, reconnecting, () => {\r\n\t\t\t\t\t\tif(!failCalled) {\r\n\t\t\t\t\t\t\tthat.initReceived();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tgetUrl(reconnecting: boolean, ajaxPost?: boolean) {\r\n\t\tlet url = this.appRelativeUrl;\r\n\t\tlet qs = \"transport=webSockets\";\r\n\r\n\t\t// if(!ajaxPost && connection.groupsToken) {\r\n\t\t// \tqs += \"&groupsToken=\" + window.encodeURIComponent(connection.groupsToken);\r\n\t\t// }\r\n\r\n\t\tif(!reconnecting) {\r\n\t\t\turl += \"/connect\";\r\n\t\t} else {\r\n\t\t\turl += \"/reconnect\";\r\n\r\n\t\t\tif(!ajaxPost && this.messageId) {\r\n\t\t\t\tqs += `&messageId=${window.encodeURIComponent(this.messageId)}`;\r\n\t\t\t}\r\n\t\t}\r\n\t\turl += `?${qs}`;\r\n\t\turl = this.prepareQueryString(url);\r\n\r\n\t\tif(!ajaxPost) {\r\n\t\t\turl += `&tid=${Math.floor(Math.random() * 11)}`;\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\t}\r\n\r\n\tasync initReceived() {\r\n\t\tif(this.startRequested) {\r\n\t\t\tlog(\"WARNING! The client received multiple init messages.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this.connectionStopped)\r\n\t\t\treturn;\r\n\r\n\t\tthis.startRequested = true;\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\r\n\t\tlog(\"webSockets transport connected. Initiating start request.\");\r\n\r\n\t\tconst startResponse = await get<{ Response: string }>(this.getAjaxUrl(\"/start\"), this.startCancelSource?.token, {\r\n\t\t\tskipAuthorization: true,\r\n\t\t});\r\n\r\n\t\tif(startResponse.isError) {\r\n\t\t\tlog(\"The start request failed. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(`Invalid start response: '${startResponse.error}'. Stopping the connection.`)\r\n\t\t\tthis.stop();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(startResponse.payload.Response !== 'started') {\r\n\t\t\tlog(\"The start request failed. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(`Invalid start response: '${startResponse.payload.Response}'. Stopping the connection.`)\r\n\t\t\tthis.stop();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.startCompleted = true;\r\n\r\n\t\tlog(\"The start request succeeded. Transitioning to the connected state.\");\r\n\r\n\t\tthis.monitorKeepAlive();\r\n\r\n\t\tif(this.keepAliveData.activated)\r\n\t\t\tthis.startHeartbeat();\r\n\r\n\t\t// Used to ensure low activity clients maintain their authentication.\r\n\t\t// Must be configured once a transport has been decided to perform valid ping requests.\r\n\t\tthis.configurePingInterval();\r\n\r\n\t\tif(!this.changeState('connecting', 'connected'))\r\n\t\t\tlog(\"WARNING! The connection was not in the connecting state.\");\r\n\r\n\t\t// Drain any incoming buffered messages (messages that came in prior to connect)\r\n\t\tthis.drainBuffer();\r\n\r\n\t\tthis.onStartEvent.dispatch();\r\n\r\n\t\t// wire the stop handler for when the user leaves the page\r\n\t\taddEventListener(\"unload\", () => {\r\n\t\t\tlog(\"Window unloading, stopping the connection.\");\r\n\t\t\tthis.stop();\r\n\t\t});\r\n\t}\r\n\r\n\ttriggerReceived(data: string) {\r\n\t\tif(!this.tryBuffer(data)) {\r\n\t\t\tthis.onReceivedEvent.dispatch(data);\r\n\t\t}\r\n\t}\r\n\r\n\tprocessMessages(minData: ResponseDataMin, reconnecting: boolean, onInitialized: Function) {\r\n\t\t// Update the last message time stamp\r\n\t\tthis.markLastMessage();\r\n\r\n\t\tif(minData) {\r\n\t\t\t// This is a message send directly to the client\r\n\t\t\tconst data = maximizePersistentResponse(minData);\r\n\r\n\t\t\tif(data.Error) {\r\n\t\t\t\t// This is a global error, stop the connection.\r\n\t\t\t\tlog(`Received an error message from the server: ${data.Error}`);\r\n\t\t\t\tthis.onErrorEvent.dispatch(data.Error);\r\n\t\t\t\tthis.stop(false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.MessageId) {\r\n\t\t\t\tthis.messageId = data.MessageId;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.Messages) {\r\n\t\t\t\tdata.Messages.forEach(m => {\r\n\t\t\t\t\tthis.triggerReceived(m);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.tryInitialize(data, reconnecting, onInitialized);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttryInitialize(persistentResponse: ResponseData, reconnecting: boolean, onInitialized: Function) {\r\n\t\tif(persistentResponse.Initialized && onInitialized && !reconnecting) {\r\n\t\t\tonInitialized();\r\n\t\t} else if(persistentResponse.Initialized) {\r\n\t\t\tlog(\"WARNING! The client received an init message after reconnecting.\");\r\n\t\t}\r\n\t}\r\n\r\n\ttransportFailed(error: string | undefined) {\r\n\t\tif(this.connectionStopped)\r\n\t\t\treturn;\r\n\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\r\n\t\tif(!this.startRequested) {\r\n\t\t\tthis.stop();\r\n\r\n\t\t\tlog(\"WebSockets transport failed to connect.\");\r\n\t\t} else if(!this.startCompleted) {\r\n\t\t\t// Do not attempt to fall back if a start request is ongoing during a transport failure.\r\n\t\t\t// Instead, trigger an error and stop the connection.\r\n\t\t\tconst wrappedError = `Error during start request. Stopping the connection. ${error}`;\r\n\r\n\t\t\tlog(\"WebSockets transport failed during the start request. Stopping the connection.\");\r\n\t\t\tthis.onErrorEvent.dispatch(wrappedError);\r\n\r\n\t\t\tthis.stop();\r\n\t\t} else {\r\n\t\t\t// The start request has completed, but the connection has not stopped.\r\n\t\t\t// No need to do anything here. The transport should attempt its normal reconnect logic.\r\n\t\t}\r\n\t}\r\n\r\n\tasync abort() {\r\n\t\tconst url = this.getAjaxUrl(\"/abort\");\r\n\t\tawait postJson(url);\r\n\t\tlog(\"Fired ajax abort\");\r\n\t}\r\n\r\n\tgetAjaxUrl(path: string) { return this.prepareQueryString(`${this.url + path}?transport=webSockets`); }\r\n\r\n\tprepareQueryString(url: string) {\r\n\t\t// Use addQs to start since it handles the ?/& prefix for us\r\n\t\tlet preparedUrl = this.addQs(url, \"clientProtocol=2.1\");\r\n\r\n\t\tif(typeof (this.redirectQs) === \"string\") {\r\n\t\t\t// Add the redirect-specified query string params if any\r\n\t\t\tpreparedUrl = this.addQs(preparedUrl, this.redirectQs);\r\n\t\t} else {\r\n\t\t\t// Otherwise, add the user-specified query string params if any\r\n\t\t\tpreparedUrl = this.addQs(preparedUrl, this.qs);\r\n\t\t}\r\n\r\n\t\tif(this.token) {\r\n\t\t\tpreparedUrl += \"&connectionToken=\" + window.encodeURIComponent(this.token);\r\n\t\t}\r\n\r\n\t\treturn preparedUrl + `&_=${Date.now()}`;\r\n\t}\r\n\r\n\taddQs(url: string, qs: string) {\r\n\t\tlet appender = url.indexOf(\"?\") !== -1 ? \"&\" : \"?\";\r\n\r\n\t\tif(!qs)\r\n\t\t\treturn url;\r\n\r\n\t\tif(typeof (qs) === \"string\") {\r\n\t\t\tconst firstChar = qs.charAt(0);\r\n\r\n\t\t\tif(firstChar === \"?\" || firstChar === \"&\") {\r\n\t\t\t\tappender = \"\";\r\n\t\t\t}\r\n\r\n\t\t\treturn url + appender + qs;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"Query string property must be a string.\");\r\n\t}\r\n\r\n\tstop(notifyServer: boolean = true) {\r\n\t\tif(this.state === 'disconnected')\r\n\t\t\treturn;\r\n\r\n\t\tlog(\"Stopping connection.\");\r\n\r\n\t\t// Clear this no matter what\r\n\t\twindow.clearTimeout(this.beatHandle);\r\n\t\twindow.clearInterval(this.pingIntervalId);\r\n\r\n\t\tthis.connectionStopped = true;\r\n\t\twindow.clearTimeout(this.transportTimeoutHandle);\r\n\t\tthis.startCancelSource?.cancel();\r\n\r\n\t\t// Don't trigger a reconnect after stopping\r\n\t\tthis.clearReconnectTimeout();\r\n\r\n\t\tif(this.socket) {\r\n\t\t\tlog(\"Closing the Websocket.\");\r\n\t\t\tthis.socket.close();\r\n\t\t\tthis.socket = undefined;\r\n\t\t}\r\n\r\n\t\tif(notifyServer !== false) {\r\n\t\t\tthis.abort();\r\n\t\t}\r\n\r\n\t\tthis.stopMonitoringKeepAlive();\r\n\t\tthis.negotiateCancelSource?.cancel();\r\n\r\n\t\tthis.messageId = '';\r\n\t\tthis.id = '';\r\n\t\tthis.pingIntervalId = 0;\r\n\t\tthis.lastMessageAt = 0;\r\n\t\tthis.lastActiveAt = 0;\r\n\t\tthis.redirectQs = '';\r\n\r\n\t\t// Clear out our message buffer\r\n\t\tthis.clearBuffer();\r\n\r\n\t\t// Clean up this event\r\n\t\tthis.onStartEvent.clear();\r\n\r\n\t\t// Trigger the disconnect event\r\n\t\tthis.changeState(this.state, 'disconnected');\r\n\t\tthis.onDisconnectEvent.clear();\r\n\t}\r\n\r\n\tmonitorKeepAlive() {\r\n\t\t// If we haven't initiated the keep alive timeouts then we need to\r\n\t\tif(!this.keepAliveData.monitoring) {\r\n\t\t\tthis.keepAliveData.monitoring = true;\r\n\r\n\t\t\tthis.markLastMessage();\r\n\r\n\t\t\t// Save the function so we can unbind it on stop\r\n\t\t\tthis.keepAliveData.reconnectKeepAliveUpdate = () => {\r\n\t\t\t\t// Mark a new message so that keep alive doesn't time out connections\r\n\t\t\t\tthis.markLastMessage();\r\n\t\t\t};\r\n\r\n\t\t\t// Update Keep alive on reconnect\r\n\t\t\tthis.onReconnectEvent.sub(this.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n\t\t\tlog(`Now monitoring keep alive with a warning timeout of ${this.keepAliveData.timeoutWarning}, keep alive timeout of ${this.keepAliveData.timeout} and disconnecting timeout of ${this.disconnectTimeout}`);\r\n\t\t} else {\r\n\t\t\tlog(\"Tried to monitor keep alive but it's already being monitored.\");\r\n\t\t}\r\n\t}\r\n\r\n\tstopMonitoringKeepAlive() {\r\n\t\t// Only attempt to stop the keep alive monitoring if its being monitored\r\n\t\tif(this.keepAliveData.monitoring) {\r\n\t\t\t// Stop monitoring\r\n\t\t\tthis.keepAliveData.monitoring = false;\r\n\r\n\t\t\t// Remove the updateKeepAlive function from the reconnect event\r\n\t\t\tthis.onReconnectEvent.clear();\r\n\r\n\t\t\t// Clear all the keep alive data\r\n\t\t\tthis.keepAliveData = {};\r\n\t\t\tlog(\"Stopping the monitoring of the keep alive.\");\r\n\t\t}\r\n\t}\r\n\r\n\treconnect() {\r\n\t\t// We should only set a reconnectTimeout if we are currently connected and a reconnectTimeout isn't already set.\r\n\t\tif((this.state === 'connected' || this.state === 'reconnecting') && !this.reconnectTimeout) {\r\n\t\t\t// Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n\t\t\tif(!this.verifyLastActive())\r\n\t\t\t\treturn;\r\n\r\n\t\t\tthis.reconnectTimeout = window.setTimeout(() => {\r\n\t\t\t\tif(!this.verifyLastActive())\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tthis.stop();\r\n\r\n\t\t\t\tif(this.ensureReconnectingState()) {\r\n\t\t\t\t\tlog(\"webSockets reconnecting.\");\r\n\t\t\t\t\tthis.start(true);\r\n\t\t\t\t}\r\n\t\t\t}, 2000);\r\n\t\t}\r\n\t}\r\n\r\n\tensureReconnectingState() {\r\n\t\tif(this.changeState('connected', 'reconnecting') === true)\r\n\t\t\tthis.onReconnectingEvent.dispatch();\r\n\t\treturn this.state === 'reconnecting';\r\n\t}\r\n\r\n\tclearReconnectTimeout() {\r\n\t\tif(this.reconnectTimeout) {\r\n\t\t\twindow.clearTimeout(this.reconnectTimeout);\r\n\t\t\tthis.reconnectTimeout = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tsend(data: any) {\r\n\t\tif(this.state === 'disconnected') {\r\n\t\t\t// Connection hasn't been started yet\r\n\t\t\tthrow new Error('SignalR: Connection must be started before data can be sent. Call .start() before .send()');\r\n\t\t}\r\n\r\n\t\tif(this.state === 'connecting') {\r\n\t\t\t// Connection hasn't been started yet\r\n\t\t\tthrow new Error('SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.');\r\n\t\t}\r\n\r\n\t\tconst payload = stringifySend(data);\r\n\r\n\t\ttry {\r\n\t\t\tthis.socket?.send(payload);\r\n\t\t} catch(ex) {\r\n\t\t\tthis.onErrorEvent.dispatch('The Web Socket transport is in an invalid state, transitioning into reconnecting.');\r\n\t\t}\r\n\t}\r\n\r\n\tstartHeartbeat() {\r\n\t\tthis.lastActiveAt = new Date().getTime();\r\n\t\tthis.beat();\r\n\t}\r\n\r\n\tmarkLastMessage() {\r\n\t\tthis.lastMessageAt = new Date().getTime();\r\n\t\tthis.lastActiveAt = this.lastMessageAt;\r\n\t}\r\n\r\n\tmarkActive() {\r\n\t\tif(this.verifyLastActive()) {\r\n\t\t\tthis.lastActiveAt = new Date().getTime();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tverifyLastActive() {\r\n\t\t// If there is no keep alive configured, we cannot assume that timer callbacks will\r\n\t\t// run frequently enough to keep lastActiveAt updated.\r\n\t\t// https://github.com/SignalR/SignalR/issues/4536\r\n\t\tif(!this.keepAliveData.activated ||\r\n\t\t\tnew Date().getTime() - this.lastActiveAt < this.reconnectWindow) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst message = `The client has been inactive since ${new Date(this.lastActiveAt)} and it has exceeded the inactivity timeout of ${this.reconnectWindow} ms. Stopping the connection.`;\r\n\t\tlog(message);\r\n\r\n\t\tthis.onErrorEvent.dispatch(message);\r\n\t\tthis.stop(false);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tbeat() {\r\n\t\tif(this.keepAliveData.monitoring)\r\n\t\t\tthis.checkIfAlive();\r\n\r\n\t\t// Ensure that we successfully marked active before continuing the heartbeat.\r\n\t\tif(this.markActive()) {\r\n\t\t\tthis.beatHandle = window.setTimeout(() => {\r\n\t\t\t\tthis.beat();\r\n\t\t\t}, this.beatInterval);\r\n\t\t}\r\n\t}\r\n\r\n\tcheckIfAlive() {\r\n\t\t// Only check if we're connected\r\n\t\tif(this.state === 'connected') {\r\n\t\t\tconst timeElapsed = new Date().getTime() - this.lastMessageAt;\r\n\r\n\t\t\t// Check if the keep alive has completely timed out\r\n\t\t\tif(timeElapsed >= this.keepAliveData.timeout!) {\r\n\t\t\t\tlog(\"Keep alive timed out. Notifying transport that connection has been lost.\");\r\n\t\t\t\tthis.reconnect();\r\n\t\t\t} else if(timeElapsed >= this.keepAliveData.timeoutWarning!) {\r\n\t\t\t\t// This is to assure that the user only gets a single warning\r\n\t\t\t\tif(!this.keepAliveData.userNotified) {\r\n\t\t\t\t\tlog(\"Keep alive has been missed, connection may be dead/slow.\");\r\n\t\t\t\t\tthis.onConnectionSlowEvent.dispatch();\r\n\t\t\t\t\tthis.keepAliveData.userNotified = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.keepAliveData.userNotified = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconfigureStopReconnectingTimeout() {\r\n\t\tlet stopReconnectingTimeout: number;\r\n\r\n\t\t// Check if this connection has already been configured to stop reconnecting after a specified timeout.\r\n\t\t// Without this check if a connection is stopped then started events will be bound multiple times.\r\n\t\tif(!this.configuredStopReconnectingTimeout) {\r\n\t\t\tconst onReconnectTimeout = () => {\r\n\t\t\t\tconst message = `Couldn't reconnect within the configured timeout of ${this.disconnectTimeout} ms, disconnecting.`;\r\n\t\t\t\tlog(message);\r\n\t\t\t\tthis.onErrorEvent.dispatch(message);\r\n\t\t\t\tthis.stop(false);\r\n\t\t\t};\r\n\r\n\t\t\tthis.onReconnecting.sub(() => {\r\n\t\t\t\t// Guard against state changing in a previous user defined even handler\r\n\t\t\t\tif(this.state === 'reconnecting')\r\n\t\t\t\t\tstopReconnectingTimeout = window.setTimeout(() => { onReconnectTimeout(); }, this.disconnectTimeout);\r\n\t\t\t});\r\n\r\n\t\t\tthis.onStateChanged.sub((data) => {\r\n\t\t\t\tif(data.oldState === 'reconnecting') {\r\n\t\t\t\t\t// Clear the pending reconnect timeout check\r\n\t\t\t\t\twindow.clearTimeout(stopReconnectingTimeout);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.configuredStopReconnectingTimeout = true;\r\n\t\t}\r\n\t}\r\n\r\n\tasync negotiate(url: string, cancelToken: CancelTokenSource | undefined) {\r\n\t\tconst response = await get(this.prepareQueryString(`${url}/negotiate`), cancelToken?.token, {\r\n\t\t\tskipAuthorization: true,\r\n\t\t});\r\n\r\n\t\tif(response.isError)\r\n\t\t\tthrow `Error during negotiation request: ${response.error}`;\r\n\r\n\t\treturn response.payload;\r\n\t}\r\n\r\n\tisDisconnecting() { return this.state === 'disconnected' }\r\n}\r\n\r\nconst LOGGING = true;\r\nfunction log(msg: string, logging: boolean = LOGGING) {\r\n\tif(logging === false)\r\n\t\treturn;\r\n\r\n\tif(typeof (window.console) === \"undefined\")\r\n\treturn;\r\n\r\n\tconst m = `[${new Date().toTimeString()}] SignalR: ${msg}`;\r\n\tif(window.console.debug) {\r\n\t\twindow.console.debug(m);\r\n\t} else if(window.console.log) {\r\n\t\t// window.console.log(m);\r\n\t}\r\n};\r\nfunction maximizePersistentResponse(minPersistentResponse: ResponseDataMin): ResponseData {\r\n\treturn {\r\n\t\tMessageId: minPersistentResponse.C,\r\n\t\tMessages: minPersistentResponse.M,\r\n\t\tInitialized: typeof (minPersistentResponse.S) !== \"undefined\" ? true : false,\r\n\t\tShouldReconnect: typeof (minPersistentResponse.T) !== \"undefined\" ? true : false,\r\n\t\tGroupsToken: minPersistentResponse.G,\r\n\t\tError: minPersistentResponse.E,\r\n\t};\r\n}\r\n\r\nexport const wsClient = new SignalR('/api/secured/ws');\r\n","export function sort(array: Array, compareFn?: (a: T, b: T) => number): Array {\n // tslint:disable-next-line: no-array-mutation\n return [...array].sort(compareFn);\n}\n","export function throttle void>(func: T, threshhold: number = 250, scope?: any): T {\n let last: number, deferTimer: number;\n return function (this: any) {\n const context = scope || this;\n\n const now = Date.now();\n const args = Array.from(arguments);\n if(last && now < last + threshhold) {\n // hold on to it\n clearTimeout(deferTimer);\n deferTimer = window.setTimeout(function () {\n last = now;\n func.apply(context, args);\n }, threshhold);\n } else {\n last = now;\n func.apply(context, args);\n }\n } as T;\n}\n","export const states = [\n\t{ value: \"AL\", name: \"Alabama\" },\n\t{ value: \"AK\", name: \"Alaska\" },\n\t{ value: \"AZ\", name: \"Arizona\" },\n\t{ value: \"AR\", name: \"Arkansas\" },\n\t{ value: \"CA\", name: \"California\" },\n\t{ value: \"CO\", name: \"Colorado\" },\n\t{ value: \"CT\", name: \"Connecticut\" },\n\t{ value: \"DE\", name: \"Delaware\" },\n\t{ value: \"DC\", name: \"District Of Columbia\" },\n\t{ value: \"FL\", name: \"Florida\" },\n\t{ value: \"GA\", name: \"Georgia\" },\n\t{ value: \"HI\", name: \"Hawaii\" },\n\t{ value: \"ID\", name: \"Idaho\" },\n\t{ value: \"IL\", name: \"Illinois\" },\n\t{ value: \"IN\", name: \"Indiana\" },\n\t{ value: \"IA\", name: \"Iowa\" },\n\t{ value: \"KS\", name: \"Kansas\" },\n\t{ value: \"KY\", name: \"Kentucky\" },\n\t{ value: \"LA\", name: \"Louisiana\" },\n\t{ value: \"ME\", name: \"Maine\" },\n\t{ value: \"MD\", name: \"Maryland\" },\n\t{ value: \"MA\", name: \"Massachusetts\" },\n\t{ value: \"MI\", name: \"Michigan\" },\n\t{ value: \"MN\", name: \"Minnesota\" },\n\t{ value: \"MS\", name: \"Mississippi\" },\n\t{ value: \"MO\", name: \"Missouri\" },\n\t{ value: \"MT\", name: \"Montana\" },\n\t{ value: \"NE\", name: \"Nebraska\" },\n\t{ value: \"NV\", name: \"Nevada\" },\n\t{ value: \"NH\", name: \"New Hampshire\" },\n\t{ value: \"NJ\", name: \"New Jersey\" },\n\t{ value: \"NM\", name: \"New Mexico\" },\n\t{ value: \"NY\", name: \"New York\" },\n\t{ value: \"NC\", name: \"North Carolina\" },\n\t{ value: \"ND\", name: \"North Dakota\" },\n\t{ value: \"OH\", name: \"Ohio\" },\n\t{ value: \"OK\", name: \"Oklahoma\" },\n\t{ value: \"OR\", name: \"Oregon\" },\n\t{ value: \"PA\", name: \"Pennsylvania\" },\n\t{ value: \"RI\", name: \"Rhode Island\" },\n\t{ value: \"SC\", name: \"South Carolina\" },\n\t{ value: \"SD\", name: \"South Dakota\" },\n\t{ value: \"TN\", name: \"Tennessee\" },\n\t{ value: \"TX\", name: \"Texas\" },\n\t{ value: \"UT\", name: \"Utah\" },\n\t{ value: \"VT\", name: \"Vermont\" },\n\t{ value: \"VA\", name: \"Virginia\" },\n\t{ value: \"WA\", name: \"Washington\" },\n\t{ value: \"WV\", name: \"West Virginia\" },\n\t{ value: \"WI\", name: \"Wisconsin\" },\n\t{ value: \"WY\", name: \"Wyoming\" }\n];\n\nexport const territories = [\n\t{ value: \"AS\", name: \"American Samoa\" },\n\t{ value: \"GU\", name: \"Guam\" },\n\t{ value: \"MH\", name: \"Marshall Islands\" },\n\t{ value: \"FM\", name: \"Micronesia\" },\n\t{ value: \"MP\", name: \"Northern Marianas\" },\n\t{ value: \"PW\", name: \"Palau\" },\n\t{ value: \"PR\", name: \"Puerto Rico\" },\n\t{ value: \"VI\", name: \"Virgin Islands\" }\n];\n","import * as React from 'react';\nimport { useDebounce } from 'use-debounce';\nimport Axios, { CancelTokenSource } from 'axios';\nimport { ajax, useEffectDeep } from '../lib';\nimport { isDevelopment } from './isDevelopment';\n\ninterface IApiConfig {\n url: string | ((state: P) => string);\n method?: 'GET' | 'POST';\n debounce?: number;\n body: P;\n format?: (state: P) => any;\n valid?: (state: P) => boolean;\n onComplete?: (result: ResultState) => void;\n}\ntype ResultState = {\n working: boolean;\n error: string | undefined;\n results: Partial,\n};\ntype Dispatch = (value: A, immediate?: boolean) => void;\n\nexport function useApi(config: IApiConfig): [ResultState, typeof config.body, Dispatch>] {\n\n // Track requestPayload with deferred execution\n const [requestPayload, setRequestPayload] = React.useState(config.body);\n const __execute = (requestPayload as any).__execute;\n const [debouncedPayload] = useDebounce(requestPayload, __execute ? 0 : (config.debounce || 0));\n\n // Internal state used for tracking API progress and results\n const [state, setResultState] = React.useState({\n working: !!requestPayload,\n error: undefined as string | undefined,\n results: {} as Partial,\n });\n\n let id = '';\n if(isDevelopment) {\n try {\n const stackLine = new Error().stack?.split('\\n')[2];\n const match = /at\\s+(\\w+)/g.exec(stackLine || '');\n id = match?.[1] || '';\n } catch { }\n }\n\n const cancelTokenRef = React.useRef();\n useEffectDeep(\n () => {\n // dbg('useApi effect run', id, 'teal', JSON.stringify(debouncedPayload));\n if(cancelTokenRef.current) {\n cancelTokenRef.current.cancel();\n }\n cancelTokenRef.current = Axios.CancelToken.source();\n\n if(requestPayload) {\n // Payload is not valid so don't call the API\n if(config.valid && !config.valid(requestPayload)) {\n return;\n }\n\n // Clear state before working\n if(!state.working || JSON.stringify(state.results) !== '{}')\n setResultState({ working: true, error: undefined, results: {} });\n\n // Call the API\n const url = typeof (config.url) === 'string' ? config.url : config.url(requestPayload);\n ajax(url, true, config.format ? config.format(requestPayload) : requestPayload, {\n method: config.method || 'GET',\n cancelToken: cancelTokenRef.current.token,\n }).then(response => {\n if(response.isError === true) {\n setResultState({ working: false, error: response.error, results: {} });\n config.onComplete && config.onComplete({ working: false, error: response.error, results: {} });\n return;\n }\n\n setResultState({ working: false, error: undefined, results: response.payload });\n config.onComplete && config.onComplete({ working: false, error: undefined, results: response.payload });\n }).catch(e => {\n if(Axios.isCancel(e)) {\n return;\n }\n setResultState({ working: false, error: e, results: {} });\n config.onComplete && config.onComplete({ working: false, error: e, results: {} });\n });\n }\n\n return () => {\n if(cancelTokenRef.current) {\n cancelTokenRef.current.cancel('Canceled because of component unmounted or debounce data changed');\n }\n };\n },\n [debouncedPayload],\n );\n\n return [state, requestPayload, (p: React.SetStateAction

    , executeNow?: boolean) => {\n setRequestPayload(s => {\n const newState = typeof p === 'object' ? p : (p as any)(s);\n return Object.assign(newState, { __execute: executeNow });\n });\n }];\n}\n","import * as React from 'react';\nimport equals from 'fast-deep-equal';\n\nexport function useEffectDeep(fn: React.EffectCallback, deps: React.DependencyList) {\n const isFirst = React.useRef(true);\n const prevDeps = React.useRef(deps);\n\n React.useEffect(() => {\n const isSame = prevDeps.current.every((obj, index) => equals(obj, deps[index]));\n\n if(isFirst.current || !isSame) {\n fn();\n }\n\n isFirst.current = false;\n prevDeps.current = deps;\n }, deps);\n}\n","import * as React from 'react';\nimport { ui, HeaderLink } from 'web-shared/store';\n\nexport function useHeaderLinks(links: HeaderLink[]) {\n React.useEffect(() => {\n ui.setHeaderLinks({ links, hideLogin: false });\n }, []);\n}\n","import * as React from 'react';\nexport function useInterval(callback: () => void, delay: number | null) {\n\tconst savedCallback = React.useRef<() => void | Promise>();\n\tconst [count, setCount] = React.useState(0);\n\n\tReact.useEffect(() => {\n\t\t// Store the most recent callback fn\n\t\tsavedCallback.current = callback;\n\t});\n\n\tReact.useEffect(() => {\n\t\tasync function tick() {\n\t\t\t// Execute the callback and wait for return;\n\t\t\tawait savedCallback.current();\n\n\t\t\t// Increment the counter, which causes rerenders\n\t\t\tif(savedCallback.current) {\n\t\t\t\tsetCount(count + 1);\n\t\t\t}\n\t\t}\n\n\t\tconst timer = window.setTimeout(tick, delay);\n\t\treturn () => {\n\t\t\tsavedCallback.current = undefined;\n\t\t\ttimer && clearTimeout(timer);\n\t\t};\n\t}, [delay, count]);\n}\n","import { useState, useEffect } from 'react';\n\nconst breakpoints = {\n xxs: 0,\n xs: 600,\n sm: 768,\n md: 992,\n lg: 1200,\n}\n\nexport type Breakpoints = typeof breakpoints;\nexport type MediaSize = keyof Breakpoints;\n\nfunction getMediaQueries(bps: Breakpoints) {\n const sizes = Object.keys(bps) as MediaSize[];\n const bpArray = sizes\n .sort((a, b) => bps[a] - bps[b])\n .map(bp => ({ name: bp, min: bps[bp] }));\n\n return bpArray.map((bp, i) => {\n const query = [\n i === 0 ? '' : `(min-width: ${bp.min}px)`,\n i === bpArray.length - 1 ? '' : `(max-width: ${bpArray[i + 1].min - 1}px)`\n ].filter(q => q).join(' and ');\n return { name: bp.name, query };\n });\n}\n\nconst mediaQueries = getMediaQueries(breakpoints);\n\nexport function useMedia() {\n const [state, setState] = useState('xs' as MediaSize);\n\n useEffect(\n () => {\n // Configure all media query breakpoints\n const mediaQueryLists = mediaQueries.map(q => ({\n name: q.name,\n mediaQueryList: window.matchMedia(q.query),\n }));\n\n //const mediaQueryList = window.matchMedia(query);\n let active = true;\n\n // Extract state\n function getState() {\n return mediaQueryLists.reduce((newState, bp) => {\n return bp.mediaQueryList.matches ? bp.name : newState;\n }, state);\n }\n\n // Define the listener update function\n const listener = () => {\n if(!active) {\n return;\n }\n\n setState(getState());\n };\n\n // Attach listeners\n mediaQueryLists.forEach(q => q.mediaQueryList.addListener(listener))\n setState(getState());\n\n // Unmount\n return () => {\n active = false;\n mediaQueryLists.forEach(q => q.mediaQueryList.removeListener(listener));\n };\n },\n []\n );\n\n return state;\n}","import * as React from 'react';\nimport { throttle } from 'web-shared/lib';\n\nexport const useWindowScrollPosition = (throttleMs: number = 100) => {\n const [scroll, setScroll] = React.useState({\n x: window.pageXOffset,\n y: window.pageYOffset,\n });\n\n const handle = throttle(() => {\n setScroll({\n x: window.pageXOffset,\n y: window.pageYOffset,\n });\n }, throttleMs);\n\n React.useEffect(() => {\n window.addEventListener('scroll', handle);\n\n return () => {\n window.removeEventListener('scroll', handle);\n };\n }, []);\n\n return scroll;\n};\n\nexport const useWindowScrolledTo = (yOffset: number) => {\n const [state, setState] = React.useState(false);\n\n React.useEffect(() => {\n const handle = throttle(() => {\n const isScrolled = window.pageYOffset >= yOffset;\n if(isScrolled !== state) {\n setState(isScrolled);\n }\n }, 100);\n\n window.addEventListener('scroll', handle);\n return () => window.removeEventListener('scroll', handle);\n }, [state]);\n\n return state;\n};\n","import React from 'react';\nimport { throttle } from 'web-shared/lib';\n\nconst events = new Set<() => void>();\nconst onResize = () => events.forEach(fn => fn());\n\nexport const useWindowSize = (options: { throttleMs?: number } = {}) => {\n const { throttleMs = 100 } = options;\n const [size, setSize] = React.useState({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n\n const handle = throttle(() => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }, throttleMs);\n\n React.useEffect(() => {\n if(events.size === 0) {\n window.addEventListener('resize', onResize, true);\n }\n\n events.add(handle);\n\n return () => {\n events.delete(handle);\n\n if(events.size === 0) {\n window.removeEventListener('resize', onResize, true);\n }\n };\n }, []);\n\n return size;\n};\n","export function validatePasswordComplexity(password: string = '') {\n if(password.length < 8) {\n return 'Password must be at least 8 characters';\n }\n\n return '';\n}\n","import styled from 'styled-components';\n\nexport const StyledInstructions = styled.div`margin-bottom: 1em; font-style: italic; color: #555; font-size: 1.2em; line-height: 1.1;`;\n","import * as React from 'react';\r\nimport { Link, useHistory } from 'react-router-dom';\r\nimport { useFormState } from 'react-use-form-state';\r\n\r\nimport { Spinner, Section, SectionHeader, Button } from 'web-shared/components';\r\nimport { auth } from 'web-shared/store';\r\nimport { StyledInstructions } from './instructions';\r\n\r\ninterface FormFields {\r\n userName: string;\r\n password: string;\r\n remember: boolean;\r\n}\r\ninterface Props {\r\n title: string;\r\n skipRedirect?: boolean;\r\n showOnlineBankingNote?: boolean;\r\n}\r\nexport const LoginForm: React.FC = ({ title, skipRedirect, showOnlineBankingNote }) => {\r\n const history = useHistory();\r\n\r\n // See if the remember option was checked\r\n let remember_default = false;\r\n try {\r\n remember_default = localStorage.getItem('rememberLogin') === 'true';\r\n } catch(err) { }\r\n\r\n const [state, setState] = React.useState({\r\n busy: false,\r\n error: '',\r\n });\r\n\r\n const [formState, { checkbox, email, password, label }] = useFormState({\r\n remember: remember_default,\r\n }, {\r\n withIds: true,\r\n onBlur: e => e.target.classList.add('modified'),\r\n });\r\n\r\n async function handleSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n const { userName, password, remember } = formState.values;\r\n\r\n setState(() => ({ busy: true, error: '' }));\r\n\r\n try {\r\n const response = await auth.login(userName, password, remember);\r\n\r\n if(response.isError) {\r\n setState({ busy: false, error: response.errorMessage });\r\n if(response.expiredUrl) {\r\n history.replace(response.expiredUrl);\r\n }\r\n return;\r\n }\r\n\r\n if(!skipRedirect) {\r\n setState({ busy: false, error: '' });\r\n\r\n // Redirect\r\n const { from, search } = history.location.state || {};\r\n if(search)\r\n from.search = search;\r\n history.replace(from || '/');\r\n }\r\n } catch(ex) {\r\n const error = 'Unable to contact the login server.';\r\n setState({ busy: false, error: error });\r\n }\r\n }\r\n\r\n return

    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n {title || 'Welcome Back!'}\r\n \r\n Please enter your email address and password below. If you can't remember your password, select the \"I forgot my password\" button below.\r\n \r\n {showOnlineBankingNote ? \r\n (please note: this is not your online banking login and password)\r\n : null}\r\n
    \r\n\r\n {state.error ?
    \r\n
    {state.error}
    \r\n
    : null}\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n};\r\n","import * as React from 'react';\nimport { RouteChildrenProps } from 'react-router-dom';\n\nimport { auth } from 'web-shared/store';\n\nconst LogoffPage: React.FC = () => {\n React.useEffect(() => {\n if(!history) {\n throw new Error('Router component not found!');\n }\n\n auth.logoff();\n\n // Return to the previous page\n history.back();\n });\n\n return null;\n};\n\nexport default LogoffPage;\n","import * as React from 'react';\nimport { RouteChildrenProps } from 'react-router-dom';\n\nimport { Section, NonIdealState } from 'web-shared/components';\n\nconst NotFoundPage: React.FC = () => {\n return
    \n \n\n \n
    ;\n};\n\nexport default NotFoundPage;\n","import {\r\n clearLoginData, getTokenStorage, getToken, getLocalStorage, postForm,\r\n RxStore, clearBranchLoginData, getBranchUserToken, LoginData, setBranchLoginData, setLoginData, getLoginData, gaLogin,\r\n} from 'web-shared/lib';\r\nimport { Bugsnag } from '@bugsnag/js';\r\n\r\nexport type AuthCallback = (isAuthenticated: boolean) => void;\r\nexport type TokenResponseError = {\r\n error: string;\r\n error_description: string;\r\n error_uri?: string;\r\n};\r\nexport interface LoginErrorResponse {\r\n isError: true;\r\n errorMessage: string;\r\n expiredUrl?: string;\r\n}\r\n\r\ntype AuthState = {\r\n admin: boolean;\r\n globalAdmin: boolean;\r\n viewDemographics: boolean;\r\n name: string;\r\n userId: number;\r\n clientId: number;\r\n userName: string;\r\n expires?: string;\r\n token?: string;\r\n emailVerified: boolean;\r\n lenderAssisted?: boolean;\r\n\r\n branchUser: string;\r\n branchLoginModalOpen: boolean;\r\n ui: {\r\n actions: {};\r\n };\r\n};\r\n\r\ninterface UpdateUserParams { email?: string; name?: string; verified?: boolean; }\r\n\r\nclass AuthService extends RxStore {\r\n private onAuthChangeCallback?: AuthCallback;\r\n private bugsnagClient?: Bugsnag.Client;\r\n\r\n constructor(initialState: AuthState) {\r\n super(initialState, 'Auth');\r\n }\r\n initialize(bugsnagClient: Bugsnag.Client | undefined, onAuthChange?: AuthCallback) {\r\n this.bugsnagClient = bugsnagClient;\r\n this.onAuthChangeCallback = onAuthChange;\r\n\r\n // Check for user auth\r\n this.update(s => {\r\n const loginData = getLoginData();\r\n if(getToken(loginData)) {\r\n const name = loginData.name;\r\n const userName = loginData.userName;\r\n const userId = loginData.id;\r\n\r\n s.name = name || '';\r\n s.userName = userName || '';\r\n s.userId = parseInt(userId || '0', 10);\r\n s.clientId = parseInt(loginData.ClientId, 10);\r\n s.admin = loginData.Admin === 'true';\r\n s.globalAdmin = loginData.GlobalAdmin === 'true';\r\n s.viewDemographics = loginData.ViewDemographics === 'true';\r\n s.expires = loginData[\".expires\"];\r\n s.token = loginData.access_token;\r\n s.lenderAssisted = loginData.LenderAssisted === 'true';\r\n\r\n if(this.bugsnagClient) {\r\n this.bugsnagClient.user = {\r\n id: userId,\r\n name: name,\r\n email: userName,\r\n };\r\n }\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(true);\r\n }\r\n\r\n // Check for branch auth\r\n if(getBranchUserToken()) {\r\n const storage = getLocalStorage();\r\n s.branchUser = storage.getItem('branchUser') || '';\r\n }\r\n }, 'initialize');\r\n }\r\n\r\n async login(userName: string, password: string, remember: boolean): Promise {\r\n // Remove any current auth\r\n clearLoginData();\r\n\r\n // Contact the token server\r\n const result = await postForm('/api/token', {\r\n grant_type: 'password',\r\n username: userName,\r\n password: password,\r\n });\r\n\r\n if(result.isError === true) {\r\n clearLoginData();\r\n return {\r\n isError: true,\r\n errorMessage: result.payload.error_description,\r\n expiredUrl: result.payload.error_uri,\r\n };\r\n }\r\n\r\n const { payload } = result;\r\n\r\n // Store results in local/session storage\r\n setLoginData(payload, remember);\r\n\r\n\r\n // Mark this client as having logged in successfully\r\n localStorage.setItem('successful-login', 'true');\r\n\t\tgaLogin();\r\n\r\n this.update(s => {\r\n s.name = payload.name;\r\n s.userName = userName;\r\n s.userId = parseInt(payload.id, 10);\r\n s.clientId = parseInt(payload.ClientId, 10);\r\n s.admin = payload.Admin === 'true';\r\n s.globalAdmin = payload.GlobalAdmin === 'true';\r\n s.viewDemographics = payload.ViewDemographics === 'true';\r\n s.expires = payload[\".expires\"];\r\n s.token = payload.access_token;\r\n s.lenderAssisted = payload.LenderAssisted === 'true';\r\n }, 'login');\r\n\r\n // Set APM user details\r\n if(this.bugsnagClient) {\r\n this.bugsnagClient.user = {\r\n id: payload.id,\r\n name: payload.name,\r\n email: userName,\r\n };\r\n }\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(true);\r\n\r\n return payload;\r\n }\r\n logoff() {\r\n this.update(s => {\r\n s.name = '';\r\n s.userName = '';\r\n s.userId = 0;\r\n s.clientId = 0;\r\n s.admin = false;\r\n s.globalAdmin = false;\r\n s.viewDemographics = false;\r\n s.expires = undefined;\r\n s.token = undefined;\r\n s.lenderAssisted = undefined;\r\n }, 'logoff');\r\n\r\n this.onAuthChangeCallback && this.onAuthChangeCallback(false);\r\n\r\n // Remove any current token\r\n clearLoginData();\r\n }\r\n\r\n async branchLogin(userName: string, password: string) {\r\n // Contact the token server\r\n const result = await postForm('/api/token?type=signup', {\r\n grant_type: 'password',\r\n username: userName,\r\n password: password,\r\n });\r\n\r\n if(result.isError === true) {\r\n clearBranchLoginData();\r\n return {\r\n isError: true,\r\n errorMessage: result.payload.error_description,\r\n expiredUrl: result.payload.error_uri,\r\n };\r\n }\r\n\r\n // Set login info\r\n setBranchLoginData(result.payload);\r\n\r\n // Update application state\r\n this.update(s => { s.branchUser = userName; }, 'branchLogin');\r\n\r\n return { error: '' };\r\n }\r\n branchLogoff() {\r\n this.update(s => {\r\n s.branchLoginModalOpen = false;\r\n s.branchUser = '';\r\n }, 'branchLogoff');\r\n\r\n clearBranchLoginData();\r\n }\r\n\r\n toggleBranchLoginModal(visible: boolean) {\r\n this.update(s => { s.branchLoginModalOpen = visible; }, 'toggleBranchLoginModal');\r\n }\r\n\r\n updateUser({ email, name }: UpdateUserParams) {\r\n const tokenStorage = getTokenStorage();\r\n this.update(s => {\r\n if(email !== undefined) {\r\n tokenStorage.setItem('userName', email);\r\n s.userName = email;\r\n }\r\n if(name !== undefined) {\r\n tokenStorage.setItem('name', name);\r\n s.name = name;\r\n }\r\n }, 'updateUser');\r\n }\r\n}\r\nexport const auth = new AuthService({\r\n admin: false,\r\n globalAdmin: false,\r\n name: '',\r\n userId: 0,\r\n clientId: 0,\r\n userName: '',\r\n emailVerified: false,\r\n viewDemographics: false,\r\n\r\n branchUser: '',\r\n branchLoginModalOpen: false,\r\n ui: {\r\n actions: {},\r\n },\r\n});\r\n","import { RxStore } from 'web-shared/lib';\n\nexport interface HeaderLink {\n name: string;\n href: string;\n isHidden?: boolean;\n}\n\nexport interface UIState {\n name: string;\n pageTitle: string;\n\n hideLoginLinks: boolean;\n headerLinks: HeaderLink[];\n}\n\nclass UIService extends RxStore {\n constructor(initialState: UIState) {\n super(initialState, 'UI');\n }\n initialize(appName: string) {\n this.update(s => { s.name = appName; });\n }\n setPageTitle(title: string) {\n this.update(s => { s.pageTitle = title; });\n }\n setHeaderLinks(p: { links: HeaderLink[]; hideLogin: boolean }) {\n this.setState({\n hideLoginLinks: p.hideLogin,\n headerLinks: p.links,\n });\n }\n}\n\nexport const ui = new UIService({\n name: '',\n pageTitle: '',\n\n hideLoginLinks: false,\n headerLinks: [] as HeaderLink[],\n});\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tresult = fn();\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"web-frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"4\":\"b3c99c4d2e71e319077a\",\"20\":\"c52ebb8a9f5f2dd0165e\",\"46\":\"750876e3b8cfd0f56506\",\"47\":\"7091d982a392ddb24c1d\",\"51\":\"8f2e041bb2f7c66e3f34\",\"107\":\"6dff8aa56e480918eb9c\",\"120\":\"ec08877935232f636701\",\"155\":\"2d82c2e123a15f38dc27\",\"199\":\"3d7bd882fc5dc1bac46e\",\"205\":\"310b345dca61df20bfea\",\"209\":\"df3cf6af0e4a58e16150\",\"271\":\"8b4f3df7213c940cf15e\",\"272\":\"2a294bf89584d03ef9ca\",\"336\":\"c775d40bd10eb1d012ea\",\"344\":\"df7a77dc5052e371da99\",\"351\":\"1c36399337c0d165d39f\",\"409\":\"780105b52e8e6fbf71db\",\"416\":\"974c56980f3fccf61604\",\"479\":\"eaf90c441351a6d20c84\",\"534\":\"5b3df1f2724a33e34fa8\",\"542\":\"9dc817641f9e9b124f7b\",\"549\":\"35a6b77d7950ee19462b\",\"635\":\"2c6f61f7318717e51770\",\"637\":\"cddf1eb0d10428e907ae\",\"643\":\"a6beec15a896bc80cff5\",\"661\":\"b8439716118fae1572e0\",\"667\":\"ebc57328a0345f0a86d6\",\"698\":\"a9a07a898bd42e0cd8d8\",\"728\":\"6a89ba62b76295897f61\",\"739\":\"20eeb7c27d62d5307f72\",\"784\":\"0f74388de5cc2c6be2ba\",\"786\":\"bb73742b0e5e50f0ea01\",\"844\":\"a030b4c0401cbd6d8f35\",\"890\":\"9f044c1141ca83905f3f\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/build/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\t__webpack_require__.O();\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb_frontend\"] = self[\"webpackChunkweb_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [216], () => (__webpack_require__(96848)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}