{"version":3,"file":"main.2ddbcdcd079d46e8.js","mappings":"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","names":["ShareiconsComponent","constructor","apiResources","this","currentUrl","window","location","href","ngOnInit","_this","etec","getByKey","share","i0","selectors","$localize","CommonModule","ShareButtonsModule","i2","shareReplay","configOrBufferSize","windowTime","scheduler","bufferSize","refCount","Infinity","connector","ReplaySubject","resetOnError","resetOnComplete","resetOnRefCountZero","retry","configOrCount","config","count","delay","resetOnSuccess","identity","operate","source","subscriber","innerSub","soFar","subscribeForRetry","syncUnsub","subscribe","createOperatorSubscriber","value","next","undefined","err","resub","unsubscribe","notifier","timer","innerFrom","notifierSubscriber","complete","error","Headers","ApiService","http","loading","environment","lang","localStorage","getItem","handleError","errorMessage","ErrorEvent","message","status","console","log","logIn","logInFirst","logInAsync","setWithExpiry","authResult","now","Date","item","Token","expiry","getTime","setItem","JSON","stringify","getWithExpiry","itemStr","parse","removeItem","logout","isLoggedIn","isLoggedOut","menuGet","cashMenu$","getList","pipe","servicesGet","cashServices$","listName","get","baseUrl","catchError","getListById","id","getListTopN","n","isAsc","filterName","filterValue","ID","GetListMaxID","getListOrder","GetActivePollAnswer","getListWithTwoConditionsTopN","filterName1","filterValue1","filterName2","filterValue2","filterOperation1","condition","filterOperation2","GetListsItemsFilterd","getListsItemsFilterdOrderd","orderField","checkService","serviceId","putVisitingCount","itemId","putStatusItem","putPollData","pollChiceId","putDowoadFile","fullName","mobile","emailAddress","purpose","email","getIPAddress","factory","LoadingService","BehaviorSubject","_loading","asObservable","_isArabic","show","hide","setLang","NotificationService","toastr","showSuccess","title","success","showError","showInfo","info","showWarning","warning","ResourcesService","apiServices","resourceKey","searchResult","resourceStorage","_resources","arr","firstValueFrom","hasConfig","Promise","resolve","reject","SafeSubscriber","defaultValue","EmptyError","forEach","element","ItemFields","ResourceKey","toLowerCase","ResourceValue","clearResource","production","imgLocalUrl","imgBaseUrl","imgPublicUrl","imptempPublicUrl","tarteebUrl","maxFileSize","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","target","eventName","options","resultSelector","isFunction","mapOneOrManyArgs","add","remove","isEventTarget","addEventListener","removeEventListener","map","methodName","handler","isNodeStyleEventEmitter","addListener","removeListener","toCommonHandlerRegistry","isJQueryStyleEventEmitter","on","off","isArrayLike","mergeMap","subTarget","TypeError","Observable","args","length","isObject","obj","Object","extend","src","keys","key","ssrDocument","body","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","hash","host","hostname","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","getWindow","win","Dom7","Array","items","super","makeReactive","proto","__proto__","defineProperty","set","arrayFlat","res","el","isArray","push","arrayFilter","prototype","filter","call","$","selector","context","html","trim","indexOf","toCreate","tempParent","innerHTML","i","qsa","a","nodeType","arrayUnique","uniqueArray","fn","noTrigger","split","shortcut","name","eventHandler","trigger","Methods","addClass","classes","classNames","c","classList","removeClass","hasClass","className","contains","toggleClass","toggle","attr","attrs","arguments","getAttribute","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","events","j","event","dom7LiveListeners","proxyListener","dom7Listeners","handlers","dom7proxy","splice","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","top","scrollY","scrollTop","clientTop","left","scrollX","scrollLeft","clientLeft","css","props","prop","each","index","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","removeChild","writable","nextTick","o","toString","slice","isNode","node","HTMLElement","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","s","overflow","support","deviceCached","browser","getSupport","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","transitionEmit","runCallbacks","direction","step","activeIndex","previousIndex","emit","onTouchStart","touchEventsData","touches","enabled","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwipingClass","shadowRoot","path","noSwipingSelector","noSwiping","closestElement","base","__closestFrom","assignedSlot","getRootNode","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","assign","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","rtlTranslate","rtl","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","abs","touchMoveStopPropagation","nested","stopPropagation","startTranslate","getTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","updateProgress","setTranslate","onTouchEnd","slidesGrid","touchEndTime","timeDiff","pathTree","composedPath","updateClickedSlide","lastClickTime","destroyed","currentPos","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","rewind","isBeginning","virtual","slides","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","snapGrid","updateSlides","slidesPerView","centeredSlides","autoplay","running","paused","run","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","translatesDiff","dummyEventAttached","dummyEventListener","method","touchEvents","device","domMethod","swiperMethod","start","passiveListeners","passive","move","end","cancel","updateOnWindowResize","ios","android","isGridEnabled","grid","rows","defaults","init","initialSlide","resizeObserver","createElements","width","height","url","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopFillGroupWithBlank","loopPreventsSlide","maxBackfaceHiddenSlides","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","priority","self","eventsListeners","once","onceHandler","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","_len2","_key2","update","$el","clientWidth","clientHeight","parseInt","Number","isNaN","size","getDirectionLabel","property","marginRight","getDirectionPropertyValue","label","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","replace","virtualSize","marginLeft","marginBottom","marginTop","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","mt","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","ceil","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","realIndex","activeSlide","nextSlide","prevSlide","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","skip","initialized","slideFound","clickedSlide","clickedIndex","getSwiperTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionStart","initial","Error","indexAsNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","cloneNode","loopDestroy","moving","isLocked","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","sort","b","wasLocked","lastSlideIndex","addClasses","suffixes","prepareClasses","entries","prefix","resultClasses","autoheight","centered","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","getDevice","overrides","calcDevice","_temp","platform","ua","screenWidth","screenHeight","match","ipad","ipod","iphone","windows","macos","os","getBrowser","calcBrowser","isSafari","isWebView","test","modules","__modules__","mod","extendParams","bind","swiperParams","passedParams","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","wrapper","destroy","deleteInstance","cleanStyles","deleteProps","object","static","newDefaults","module","m","installModule","prototypeGroup","protoMethod","use","Resize","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","Observer","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","disabled","disabledClass","tagName","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","position","total","paginationType","firstIndex","lastIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scale","scaleX","scaleY","render","paginationHTML","numberOfBullets","Autoplay","timeout","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","stop","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","attachMouseEvents","detachMouseEvents","effectTarget","effectParams","$slideEl","transformEl","EffectFade","fadeEffect","crossFade","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","tx","ty","slideOpacity","opacity","effectVirtualTransitionEnd","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","DIR_DOCUMENT","InjectionToken","providedIn","DIR_DOCUMENT_FACTORY","inject","DOCUMENT","RTL_LOCALE_PATTERN","_resolveDirectionality","rawValue","language","Directionality","_document","change","EventEmitter","htmlDir","ngOnDestroy","ɵfac","ɵprov","Dir","_dir","_isInitialized","previousValue","_rawDir","ngAfterContentInit","ɵdir","provide","useExisting","BidiModule","ɵmod","ɵinj","ctx_r17","isShowEl","coerceBooleanProperty","nativeElement","ignoreNgOnChanges","paramsList","getParams","rest","allowedParams","SwiperSlideDirective","template","class","autoplayDelay","slideData","isActive","isPrev","isNext","isVisible","isDuplicate","ngClass","zoom","_zoom","_classNames","_hasClass","some","SwiperComponent","_ngZone","elementRef","_changeDetectorRef","_platformId","showNavigation","showPagination","showScrollbar","s__beforeBreakpoint","s__containerClasses","s__slideClass","s__swiper","s_activeIndexChange","s_afterInit","s_autoplay","s_autoplayStart","s_autoplayStop","s_autoplayPause","s_autoplayResume","s_beforeDestroy","s_beforeInit","s_beforeLoopFix","s_beforeResize","s_beforeSlideChangeStart","s_beforeTransitionStart","s_breakpoint","s_changeDirection","s_click","s_doubleTap","s_doubleClick","s_destroy","s_fromEdge","s_hashChange","s_hashSet","s_imagesReady","s_init","s_keyPress","s_lazyImageLoad","s_lazyImageReady","s_loopFix","s_momentumBounce","s_navigationHide","s_navigationShow","s_observerUpdate","s_orientationchange","s_paginationHide","s_paginationRender","s_paginationShow","s_paginationUpdate","s_progress","s_reachBeginning","s_reachEnd","s_realIndexChange","s_resize","s_scroll","s_scrollbarDragEnd","s_scrollbarDragMove","s_scrollbarDragStart","s_setTransition","s_setTranslate","s_slideChange","s_slideChangeTransitionEnd","s_slideChangeTransitionStart","s_slideNextTransitionEnd","s_slideNextTransitionStart","s_slidePrevTransitionEnd","s_slidePrevTransitionStart","s_slideResetTransitionStart","s_slideResetTransitionEnd","s_sliderMove","s_sliderFirstMove","s_slidesLengthChange","s_slidesGridLengthChange","s_snapGridLengthChange","s_snapIndexChange","s_tap","s_toEdge","s_touchEnd","s_touchMove","s_touchMoveOpposite","s_touchStart","s_transitionEnd","s_transitionStart","s_update","s_zoomChange","s_swiper","s_lock","s_unlock","_activeSlides","Subject","containerClasses","slidesChanges","calcLoopedSlides","swiperRef","runOutsideAngular","of","detectChanges","updateVirtualSlides","virtualData","currentVirtualData","from","lazy","load","_a","_b","_c","currentNext","_navigation","currentPrev","_prevElRef","_pagination","_paginationElRef","scrollbar","_scrollbar","_scrollbarElRef","_virtual","updateSwiper","prevElRef","_setElement","nextElRef","_nextElRef","scrollbarElRef","paginationElRef","zoomContainerClass","containerClass","ref","updateObj","updateInitSwiper","ngAfterViewInit","childrenSlidesInit","initSwiper","slidesEl","changes","isSwiperActive","emitter","_containerClasses","_slideClasses","updated","virtualSlide","virtualIndex","isVirtualEnabled","extendWith","cache","renderExternal","renderExternalUpdate","isPlatformBrowser","ngOnChanges","changedParams","thumbs","updateParameter","controller","control","newValue","currentValue","slidesPerViewParams","breakpointOnlyParams","isCurrentParamObj","PLATFORM_ID","ɵcmp","dirIndex","_t","ctx","_c0","_c1","_c2","_c3","ngContentSelectors","_c5","i1","SwiperModule","LatestnewsComponent","takeUntil","destroy$","latestNews","isLoad","newsId","ItemId","newsDate","NewsDate","newsTitle","NewsTitle","newsDetails","cutString","NewsDetails","newsUrl","NewsFile","Url","NewsImage","NewsImageThumbnail","IsActive1","NewsCode","NewsKeyword","_lang","str","output","concat","more","EtecNews","RelatedlinksComponent","relatedService","Relatedlinks","getRelatedLinks","RelatedLinkName","RelatedLinkTarget","suggestedlinks","BrowseSite","StatisticsComponent","statistics","numbersText","EtecinNumbersNumbers","msg","EtecinNumbersTitle","etecinnumbers","CarouselComponent","carouselService","getCarosal","HomeSliderTitle","head","Message","HomeSliderDetails","HomeSliderBackground","link","HomeSliderLink","active","carousels","getConfig","defaultTheme","ConfigurationName","ConfigurationValue","isEvent","CookieService","platformId","documentIsAccessible","escapedName","RegExp","encodedURIComponent","decodeURIComponent","check","encodeURIComponent","getCookieRegExp","cookie","result","exec","safeDecodeURIComponent","getAll","cookies","currentCookie","cookieName","cookieValue","expiresOrOptions","domain","secure","sameSite","expires","cookieString","toUTCString","warn","delete","expiresDate","deleteAll","hasOwnProperty","SurvayComponent","formBuilder","cookieService","answer","UntypedFormGroup","UntypedFormControl","pollList","pollItemId","isDone","getCookie","showResult","form","group","Validators","f","controls","initialPoll","submitted","ShowSurvayOptions","ShowSurvayResult","isshow","submit","invalid","getResult","setCookie","pollid","Answers","PollChoices","LookupValue","answerElement","round","PollAnswers","PollChoiceName","PollChoiceIdPercentFormatted","vote","voteresult","selectananswer","opinionpoll","ProductsonhomeComponent","router","FormControl","route","product","ServiceCode","getTopServices","centers","GUID","serviceTitle","Title","serviceName","ServiceCenterId","LookupId","ServiceCenterName","elm","CenterShortName","ServiceCenterIcon","CenterLogoIcon","ServiceDescription","serviceIconUrl","serviceLevel","serviceVisitCount","VisitingCount","serviceDetailsFileUrl","serviceKeyword","ServiceKeyword","serviceRegistrationLink","DetailsButtonLink","serviceRegistrationTitle","DetailsButtonLabel","serviceSectorId","ServiceSectorId","ShowDetailsButton","personalServices","businessServices","valuesPersonal","iconUrl","filteredOptionsP","myControlP","valueChanges","startWith","_filter","ServiceCategoryId","valuesbusiness","filteredOptionsB","myControlB","_filterB","Sector1","ServiceSectorName","Sector2","option","includes","putVisitNo","navigateUrl","navigateByUrl","displayFn","service","ourService","HomeComponent","loader","actRoute","isRoute","changeLang","reload","_this2","setTitle","RouteApiService","getMediaCenter","mediaCenterActive","setMediaCenter","mediaCenterActiveTab","getService","setService","setCss","attribute","argsOrArgArray","race","sources","raceInit","subscriptions","closed","noop","zip","popResultSelector","buffers","completed","sourceIndex","every","buffer","shift","EMPTY","defaultCompare","withLatestFrom","inputs","project","otherValues","hasValue","ready","values","right","bottom","getOppositePlacement","placement","matched","getBasePlacement","getOppositeVariationPlacement","basePlacements","viewport","popper","variationPlacements","reduce","acc","placements","modifierPhases","ownerDocument","defaultView","isElement","Element","isHTMLElement","isShadowRoot","ShadowRoot","getDocumentElement","includeScale","rect","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","getNodeName","getParentNode","isScrollParent","_getComputedStyle","overflowY","overflowX","getScrollParent","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","offsetParent","getOffsetParent","getContainingBlock","isFirefox","currentNode","contain","willChange","rootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","getViewportRect","getInnerBoundingClientRect","getDocumentRect","winScroll","scrollWidth","scrollHeight","getVariation","getMainAxisFromPlacement","computeOffsets","offsets","reference","basePlacement","variation","commonX","commonY","mainAxis","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","state","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","popperRect","rects","elements","clippingClientRect","getClippingRect","mainClippingParents","getClippingParents","clippingParents","clipperElement","clippingRect","accRect","contextElement","referenceClientRect","popperOffsets","strategy","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","multiply","phase","flip","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","getExpandedFallbackPlacements","oppositePlacement","computeAutoPlacement","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","referenceRect","checksMap","Map","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","_loop","_i","fittingPlacement","reset","requiresIfExists","within","mathMax","mathMin","getLayoutRect","clientRect","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","getAltAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrow","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","modifiers_arrow","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","center","centerOffset","_options$element","requires","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","getNodeScroll","getHTMLElementScroll","order","modifiers","visited","Set","modifier","dep","has","depModifier","debounce","pending","then","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","orderModifiers","mergeByName","merged","existing","runModifierEffects","_ref3","_ref3$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","unsetSides","mapToStyles","_Object$assign2","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","roundOffsetsByDPR","dpr","devicePixelRatio","createPopper","_options$scroll","_options$resize","resize","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","applyStyles","initialStyles","margin","isString","isDefined","reflow","animation","transitionTimerDelayMs","noopFn","runningTransitions","ngbRunTransition","zone","startFn","runningTransition","transition$","endFn","transitionProperty","runInZone","finishTransition$","stop$","endWith","transitionDurationMs","getTransitionDurationMs","transitionDelay","transitionEnd$","timer$","NgbConfig","NgbAccordionModule","NgbAlertModule","NgbCarouselModule","NgbCollapseModule","Key","Tab","Enter","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","isContainedIn","array","matchesSelectorIfAny","isMobile","maxTouchPoints","FOCUSABLE_ELEMENTS_SELECTOR","getFocusableBoundaryElements","tabIndex","placementSeparator","spacesRegExp","startPrimaryPlacement","endPrimaryPlacement","startSecondaryPlacement","endSecondaryPlacement","popperStartPrimaryPlacement","popperEndPrimaryPlacement","popperStartSecondaryPlacement","popperEndSecondaryPlacement","getPopperOptions","baseClass","placementVals","hasAuto","findIndex","popperPlacements","_placement","getPopperClassPlacement","bsClassRegExp","popperElement","popperPlacement","getBootstrapBaseClassPlacement","primary","secondary","newPrimary","classnames","newSecondary","classname","arg","NgbDatepickerModule","FormsModule","NgbNavbar","NgbDropdownModule","ContentRef","nodes","viewRef","componentRef","PopupService","_type","_injector","_viewContainerRef","_renderer","_applicationRef","_windowRef","_contentRef","open","content","_getContentRef","createComponent","injector","projectableNodes","onStable","take","windowRef","close","tap","hostView","detachView","TemplateRef","createEmbeddedView","attachView","rootNodes","createText","NgbModalBackdrop","_el","_zone","NgbActiveModal","dismiss","reason","NgbModalRef","_windowCmptRef","_backdropCmptRef","_beforeDismiss","_closed","_dismissed","_hidden","dismissEvent","_resolve","_reject","componentInstance","dismissed","hidden","shown","_removeModalElements","_dismiss","isPromise","windowTransition$","backdropTransition$","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_elRef","_closed$","_elWithFocus","backdrop","keyboard","fullscreenClass","fullscreen","_show","_disableEventHandling","transitions$","_dialogEl","_restoreFocus","_enableEventHandling","_setFocus","defaultPrevented","_bumpBackdrop","preventClose","switchMap","autoFocusable","firstFocusable","focus","elWithFocus","elementToFocus","_c31","hostVars","ScrollBar","scrollbarWidth","bodyStyle","actualPadding","NgbModalStack","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_scrollBarRestoreFn","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","_activeInstances","activeWindowCmpt","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","first","last","shiftKey","lastFocusedElement","ngbFocusTrap","_revertAriaHidden","_setAriaHidden","_restoreScrollBar","scrollBarRestoreFn","_hideScrollBar","moduleCFR","contentInjector","container","renderer","createRenderer","activeModal","contentRef","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","_applyBackdropOptions","changeDetectorRef","activeInstances","dismissAll","hasOpenModals","resolveComponentFactory","create","windowInstance","optionName","backdropInstance","_createFromTemplateRef","_createFromString","_createFromComponent","$implicit","component","createTextNode","contentCmptFactory","modalContentInjector","Injector","providers","useValue","componentNativeEl","scrollable","parentElement","sibling","clear","unregisterModalRef","ngbWindowCmpt","onDestroy","NgbModalConfig","_ngbConfig","_animation","NgbModal","_moduleCFR","_modalStack","_config","combinedOptions","NgbModalModule","NgbNavModule","NgbPaginationModule","Trigger","isManual","DEFAULT_ALIASES","hover","delayOrNoop","NgbPopoverModule","NgbProgressbarModule","NgbRatingModule","NgbTimepickerModule","NgbToastModule","NgbTooltipConfig","autoClose","triggers","disableTooltip","openDelay","closeDelay","nextId","NgbTooltipWindow","NgbTooltip","_elementRef","viewContainerRef","_changeDetector","applicationRef","_ngbTooltipWindowId","_positioning","ngbPositioning","popperInstance","positioningOption","popperOptions","updatePopperOptions","createPopperLite","hostElement","targetElement","tooltipClass","_popupService","ngbTooltip","_ngbTooltip","markForCheck","appendToBody","_zoneSubscription","ngbAutoClose","closed$","insideElements","ignoreElements","insideSelector","wrapAsyncForMobile","escapes$","mouseDowns$","closeableClicks$","shouldClose","isOpen","_unregisterListenersFn","listenToTriggers","isOpenedFn","openFn","closeFn","parsedTriggers","parseTriggers","aliases","trimmedTriggers","triggerPair","alias","manualTriggers","subscription","observeTriggers","listeners","toggleFn","listen","unsubscribeFn","triggerDelay","input$","filteredInput$","currentlyOpen","delayedOpen$","delayedClose$","merge","NgbTooltipModule","ARIA_LIVE_DELAY_FACTORY","NgbTypeaheadModule","NgbOffcanvasModule","NGB_MODULES","NgbModule","SERVICESECTOR","ProductsComponent","apiRoute","apiRersources","qiyas","Ncaaa","Ncsee","Masar","NCMAA","nacademy","personal","business","response","tab","sectorFilter","sectorAll","centerStatus","Personal","Business","ServiceName","serviceTagId","ServiceTagId","IsHiddenFromServiceList","responseService","filterChange","tagsNumber","selectedTags","selectedCenter","tagsStaus","tags","ServiceTagName","filterAll","centerId","getServiceByType","tagsAll","getCenter","getStructureTags","showCount","changeCategry","allCategoryToggle","changeCenter","changeTage","_this3","home","all","servicesof","Individuals","Institutions","Centers","ServiceType","Category","PageTitle","MenuName","EtecFullName","CenterDetailsComponent","centerService","getCenterBusiness","cId","businssType","ResponsbilityETEC","reverse","AboutCenterComponent","getCenterBusinessDetailTypes","CenterBDetailTypeList","TypeOrder","centerName","CenterLeaderComponent","CenterServicesComponent","changeUrl","centerCode","toLocaleLowerCase","getUrl","dynamicUrl","findItems","people","categoryid","p","cateogry","categoryitems","haveCateogry","noServices","cid","getCenterCode","CenterCode","ComboboxComponent","filteredList","selectedIndex","outSideIndex","inputItem","getFilteredList","listHidden","selectItem","ind","Item","onKeyPress","toggleListDisplay","scrollIntoView","sender","AccreditationresultComponent","FillTypeAccrediationDDL","updateTitle","getConfigurations","ShowExpireAcrediationResult","institutionAccrediation","Today","getTimezoneOffset","selectedTabinstitution","selectedItemCategory","HaveInstitutionsItems","Itemsinstitution","viewItemsinstitution","CenterName","Link","OrganizationName","OrganizationId","OrganizationProgramName","OrganizationDegreeProgramName","OrgTypeName","OrgTypeId","AccTypeName","formatDate","AccTo","AccTypeId","AccFrom","IsActive","AccreditationresultsSearch","SortItemsinstitution","SortItemsprograms","ProgramsAccrediation","selectedTabPrograms","Itemsprograms","viewItemsprograms","CenterId","OrganizationProgramId","OrganizationDegreeProgramId","expired","HaveProgramsItems","changeRatio","selectedItemAccrediation","selectedIteminstitution","ShowItems","category","org","AccType","Program","programs","FillinstitutionDDL","Typeofaccreditation","nameofuniversity","LabelTitle","LabelTitle2","OrganizationType","DateAccreditation","DegreeName","ProgramName","accreditationCategory","AccreditationResults","full","onChangeOrganazation","selectedItemAccType","selectedItemProgram","onChangeTypeAccrediation","onChangeCategory","outsideIndex","FillProgramsDDL","Organazation","TypeAccrediation","CentersComponent","snapshot","re","cloneCenterLeaderObj","centerLeader","centerLeaderId","centerLeaderPosition","CentersLeaderPositionId","centerLeaderPrefixId","CentersLeaderPrefixId","centerLeaderName","CentersLeaderName","centerLeaderPortrait","CentersLeaderPortrait","centerLeaderCurriculumVite","CentersLeaderCurriculumVitae","Sequence","aboutcenter","ceo","EstablishingComponent","getCenterResponsibilities","centerDescription","CenterDescription","centerVision","CenterVision","centerVisionIcon","centerMission","CenterMission","centerMissionIcon","centerOrgnizationalStructureUrl","centerMainImageCoverUrl","centerParenetId","cloneObj","CenterResponsibilityId","CenterResponsibilityTitle","CenterResponsibility","BoardComponent","boardMembers","getLeaders","IsCenterCEO","IsChairman","IsBoardMember","allMembers","cEOonly","__assign","zoomSettings","infiniteZoom","actualSize","showZoomInOutIcons","actualSizeIcons","zoomIn","zoomOut","enableZoomAfter","zoomPluginStrings","viewActualSize","Zoom","$LG","core","settings","buildTemplates","zoomIcons","getIdName","outer","$toolbar","enableZoom","_speed","zoomableTimeout","isImageSlide","getSlideItem","setZoomEssentials","enableZoomOnSlideItemLoad","LGel","lGEvents","getDragCords","getSwipeCords","getDragAllowedAxises","scaleDiff","$image","allowX","containerRect","allowY","$content","zoomImage","reposition","resetToMax","originalY","offsetX","offsetY","positionChanged","dragAllowedAxises","possibleSwipeCords","getPossibleSwipeDragCords","_x","_y","scaleVal","isBeyondPossibleLeft","minX","isBeyondPossibleRight","maxX","isBeyondPossibleTop","minY","isBeyondPossibleBottom","maxY","setZoomStyles","setZoomImageSize","resetImageTranslate","imageReset","actualSizeScale","getCurrentImageActualSizeScale","naturalWidth","naturalHeight","ZOOM_TRANSITION_DURATION","$imageWrap","$dummyImage","setActualSize","zoomInProgress","currentItem","galleryItems","prevScale","getScale","setPageCords","beginZoom","getNaturalWidth","getActualSizeScale","getPageCords","cords","pageCords","manageActualPixelClassNames","resetZoom","tapped","$target","lgOpened","touchAction","_LGel","setZoomSwipeStyles","lgId","zoomDrag","pinchZoom","zoomSwipe","$actualSize","$item","getTouchDistance","startDist","pinchStarted","initScale","$inner","endDist","distance","_scale","EPSILON","touchendZoom","startCoords","endCoords","touchDuration","distanceXnew","distanceYnew","speedX","speedY","getZoomSwipeCords","getSlideType","mediaContainerPosition","imgRect","imageHeight","imageWidth","valueOf","endTime","isDragging","closeGallery","fullscreenSettings","fullScreen","fullscreenPluginStrings","toggleFullscreen","FullScreen","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","isFullScreen","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","lightGalleryCoreSettings","mode","easing","licenseKey","startClass","backdropDuration","startAnimationDuration","zoomFromOrigin","hideBarsDelay","showBarsAfter","slideDelay","supportLegacyBrowser","allowMediaOverlap","videoMaxSize","loadYouTubePoster","defaultCaptionHeight","ariaLabelledby","ariaDescribedby","resetScrollPosition","hideScrollbar","closable","swipeToClose","closeOnTap","showCloseIcon","showMaximizeIcon","escKey","keyPress","trapFocus","slideEndAnimation","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","numberOfSlideItemsInDom","selectWithin","nextHtml","prevHtml","iframeWidth","iframeHeight","iframeMaxWidth","iframeMaxHeight","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","dynamic","dynamicEl","extraProps","exThumbImage","mobileSettings","plugins","strings","toggleMaximize","previousSlide","playVideo","mediaLoadingFailed","lgQuery","cssVenderPrefixes","_getSelector","firstElement","_getFirstEl","generateUUID","r","random","substring","_each","func","_setCssVendorPrefix","cssProperty","group1","toUpperCase","charAt","isEventMatched","eventNamespace","wrap","hasAttribute","eventListeners","customEvent","fetch","insertAdjacentHTML","empty","bodyMarginLeft","paddingTop","paddingBottom","initLgPolyfills","initCustomEvent","defaultDynamicOptions","convertToData","g","utils","spacing","defaultLgSize","lgSize","isResponsiveSizes","wWidth","size_1","cWidth","cHeight","maxWidth","maxHeight","imageSize","wHeight","elWidth","elHeight","elStyle","borderLeft","borderTop","altAttr","imgMarkup","sourceTag","LightGallery","lGalleryOn","lgBusy","currentItemsInDom","prevScrollTop","bodyPaddingRight","isDummyImageRemoved","dragOrSwipeEnabled","generateSettings","buildModules","getItems","normalizeSettings","validateLicense","addSlideVideoInfo","buildStructure","triggerPosterClick","openGalleryOnItemClick","_loop_1","this_1","$element","uuid","openGallery","plugin","getSlideItemId","manageSingleSlideClassName","$container","subHtmlCont","containerClassName","closeIcon","maximizeIcon","$lgComponents","$backdrop","outerClassNames","refreshOnResize","hideBars","manageCloseGallery","initModules","__slideVideoInfo","getMediaContainerPosition","currentImageSize","resizeVideoSlide","imgStyle","getDummyImgStyles","lgVideoStyle","getVideoContStyle","updateControls","_index","galleryItem","itemIndex","organizeSlideItems","loadContent","updateCurrentCounter","dynamicElements","availableDynamicOptions","__spreadArrays","il","jl","specified","dynamicAttr","alt","thumb","subHtml","shouldHideScrollbar","bodyRect","resetScrollBar","itemsToBeInsertedToDom","getItemsToBeInsertedToDom","addHtml","setMediaContainerPosition","currentSlide_1","captionHeight","thumbContainer","hideBarTimeout","initPictureFill","$img","picturefill","counterHtml","subHtmlUrl","fL","currentSlide","getDummyImageContent","$currentSlide","$currentItem","_dummyImgSrc","dummyImgContent","setImgMarkup","imgContent","currentGalleryItem","isFirstSlideWithZoomAnimation","onSlideObjectLoad","$slide","isHTML5VideoWithoutPoster","onLoad","onError","mediaObject","img","onLgObjectLoad","isFirstSlide","triggerSlideItemLoad","poster","isHTML5VIdeo","html5","youtube","vimeo","wistia","video","rec","_html5Video","responsive","srcDyItms","srcItms","rsWidth","rsSrc","_src","videoInfo","iframe","videoSize","markup","iframeTitle","dummyImg","_poster","videoContStyle","playVideoString","_isVideo","html5Video","hasPoster","loadContentOnFirstSlideLoad","numberOfItems","possibleNumberOfItems","prevIndexItem","_element","idx","numberOfExistingItems","getPreviousSlideIndex","currentItemId","setDownloadValue","downloadUrl","$download","makeSlideAnimation","currentSlideItem","previousSlideItem","fromTouch","fromThumb","numberOfGalleryItems","previousSlideItem_1","arrowDisable","touchPrev","touchNext","updateCounterTotal","touchMove","distanceX","distanceY","allowSwipe","gutter","touchEnd","triggerClick","distanceAbs","goToNextSlide","goToPrevSlide","isPosterElement","isSwiping","manageSwipeClass","isDraging","_touchNext","_touchPrev","keyCode","$prev","$next","xValue","yValue","lastCall","deltaY","isSlideElement","playButton","invalidateItems","preventScroll","focusableEls","display","visibility","firstFocusableEl","lastFocusableEl","mousedown","force","top_4","destroyModules","removeTimeout","refresh","destroyGallery","closeTimeout","LightgalleryComponent","lgInitialized","ngAfterViewChecked","registerEvents","LG","lightGallery","onAfterAppendSlide","onInit","onHasVideo","onContainerResize","onAfterAppendSubHtml","onBeforeOpen","onAfterOpen","onSlideItemLoad","onBeforeSlide","onAfterSlide","onPosterClick","onDragStart","onDragMove","onDragEnd","onBeforeNextSlide","onBeforePrevSlide","onBeforeClose","onAfterClose","onRotateLeft","onRotateRight","onFlipHorizontal","onFlipVertical","LightgalleryModule","OrganizationalchartComponent","fourceAutoply","thumbnail","keypress","rotateLeft","flipHorizontal","flipVertical","lgFullscreen","lgZoom","VisionComponent","ourvalue","mission","vision","CeoComponent","etecceo","etecLeaderName","etecLeaderPrefixId","EtecComponent","activeTab","CenterValues","CenterMoreDetails","CenterOrganizationalStructure","centerOrgUrl","getEtecName","foundation","visionmission","etecboard","organizationalchart","NgxPrintDirective","_printStyle","useExistingCss","printDelay","_styleSheetFile","printStyle","returnStyleValues","styleSheetFile","cssList","linkTagFn","cssFileName","valueArr","returnStyleSheetLinkTags","getElementTag","tag","outerHTML","getFormData","checked","defaultChecked","getHtmlContents","printContents","printSectionId","innards","txt","print","popupWin","links","baseTag","write","printTitle","ɵngcc0","hostBindings","rf","NgxPrintModule","NewsComponent","Meta","AllNews","relatedNews","getNewsById","getRelatedNews","updateTag","relatednews","news","ContactUsComponent","captcha","resolved","captchaResponse","send","unfiedNumber","mailAdderess","locationName","BeneficiarySupport","workinghoursCU","looktoserveyou","workinghours","serviceAvailability","contactNumber","USupportPlatform","twittrEtec","responseTime","immediate","ETECemail","workingDay","InfographicComponent","modalService","ariaLabelledBy","closeResult","getDismissReason","getMediaCenterFile","MediaCenterCategory","MCFileName","MCFileLink","MCFileThumbnails","MCFilesDetails","MediaOrder","Infographics","InfographicsSearch","showItems","SelectValue","optionSelected","searchText","ascalph","descalph","ascdatealph","datedescalph","orderby","searchtxt","SpinnerComponent","VideolibraryComponent","_sanitizer","sanitizer","bypassSecurityTrustResourceUrl","getMediaCenterFiles","getThumbnail","MediaCenterVideos","MediaCenterVideosSearch","pop","showLoading","videoTitle","stopVideo","IdentityguidelineComponent","getMediaCenterCategory","ImageLinkguidePDF","LinkguidePDF","Identityguidelines","logodownload","etecidguide","ctx_r4","ctx_r6","AllnewsComponent","LastID","listname","firsttime","IsAsc","Total","TotalCount","getNews","Result","allNews","newsSearch","getNews2","fillResources","PublicationsandreleasesComponent","getMediaFiles","Publications","PublicationsSearch","reportdownload","reportsearch","MediacenterComponent","isNews","isInfographic","isVideolibrary","isFlyers","isIdguide","infographic","MediaCenter","News","flyers","videolibrary","idguide","ProductAccreditationComponent","productId","Product","getServiceGoals","Goals","ServiceGoalNumber","ServiceGoalName","getServiceContent","Content","ServiceContentTitle","ServiceContentDetailes","ServiceContentDetails","ServiceContentIcon","getServiceSteps","Steps","ServiceStepsDetails","getServicePrerequirements","Prerequirements","ServicePrerequirementsDetails","ProductQiyasComponent","getServiceNotes","Notes","serviceNoteDetailes","ServiceNoteDetails","serviceNoteTitle","ServiceNoteTitle","getServiceAudnices","Audnices","serviceAudienceId","ServiceAudienceId","serviceAudienceName","ServiceAudienceName","GoalsComponent","AudienceComponent","TargetedSectorComponent","StepsComponent","ContentComponent","NotesComponent","PrerequirementsComponent","TestTimetableComponent","period","testType","sex","earlyRegistrationPeriod","TestPeriod","FaqListComponent","ServiceDetailsComponent","_location","tabUrl","ServiceCategoryId_x003a_ServiceC","serviceSector","ServiceCategory","showServiceRegistration","RelatedEServiceGuide","serviceSectorURL","getServiceTabs","getRelatedEServiceGuid","getServiceStructureTags","clearActiveTabs","serviceAllTabs","IsExist","goalsShow","ListName","audnicesShow","serviceTargetedSectorShow","stepsShow","contentShow","notesShow","prerequirementsShow","serviceDoumentShow","serviceVideoShow","testTimeTableShow","faqListShow","getActiveTabByDefault","getActiveTabFromUrl","goalsActive","audnicesActive","serviceTargetedSectorActive","getServiceTargetedSector","stepsActive","contentActive","notesActive","prerequirementsActive","serviceDoumentActive","getServiceDoument","serviceVideoActive","getVideos","testTimeTableActive","getTestTimetable","faqListActive","getFaq","relatedServiceGuidActive","showTabs","ServiceGuid","_currentUrl","ServiceDoument","DocumentName","DocumentName_x0020_","ServiceDocument","ServiceDocumentWord","ServiceDocumentCategory","DocumentCategory","ServiceDocumentOrder","DocumentOrder","hasCategory","tagsStatus","ServiceDoumentResponse","TestTimeTable","ServiceTargetedSector","faqList","ServiceId","FAQQuestion","FAQAnswer","ServiceVideo","ServiceMediaOrder","ServiceVideoResponse","ServiceMediaCategory","videoHasCategory","videoTags","videoTagsStatus","tagId","tagImage","TagImage","scrollToElement","MyProp","block","getVideo","MediaLinkName","MediaLink","getActiveTab","servicedocuments","relatedServiceGuide","getTagsResult","changeTageVideo","videoTagsAll","filterChangeVideo","videoSelectedTags","getVideoTagsResult","searchText2","_this4","servicegoal","serviceaudience","servicesteps","serviceprerequirments","infoAboutService","ServiceTargetedSectorsTitle","videos","timetable","faq","notes","DataComponent","getResearchReportList","RRType","reasearchList","reasearchList2","reasearchList3","reasearchListSearch","reasearchList2Search","reasearchList3Search","getsiteMenu","citationDetails","mTitle","modalData","modalTitle","onChangeAuthor","Author","Year","onChangeYear","FillAuthorsDDL","Authors","NameAR","NameEN","FillYearsDDL","Years","showCount1","RRName","search2","showCount2","search3","showCount3","reportquotes","details","select","nocontent","Reports","TechnicalReports","PublishedReports","researchreward","PublicResearchComponent","ReportsComponent","ReportsResearchComponent","ScientificActivityComponent","getScientificActivitieList","ActivityType","getSiteMenu","conv","LecturesAndDiscussions","PrivcayComponent","PublicContentDetails","privacypolicy","NotfoundComponent","code404","pagenotexists","redirectMessage","interval","asyncScheduler","finalize","timerString","WorkshopComponent","getResearchAndReports","ConferenceComponent","FAQComponent","getNonServiceFaq","RelatednewsComponent","keywords","ConnectComponent","apiService","DynamicDocumentComponent","_ContentDocuments","_ContentDocumentsResponse","OdatagroupComponent","getOpenDataCategory","OdatarequestComponent","DynamicnavComponent","childWithDocs","chilContentList","childWithOutDocs","CustomServiceComponent","PageComponent","PublicContentTitle","HasSubContent","HasCustomContent","RouteParameter","ContentCode","hasCustomContent","customDocumentList","hasSubContent","isService","_routeParameter","ContentOrder","activeId","ServicecatalogComponent","serviceGuid","getServiceGuid","EServiceOrder","ServiceStructureTag","getSorted","getServiceGuidFilter","ServiceGuidIcon","ServiceGuideTitle","ServicecatalogdetailsComponent","serviceGuideDescription","serviceGuideRequirements","serviceGuideSupportChannel","serviceGuideSteps","serviceGuideTargetedGroup","serviceGuideAvailabilityTime","serviceGuideAlternativeChannels","serviceGuideCompletionTime","jumpToService","Guid","getCatalog","getServiceChannel","channel$","getChannelById","zoomPosition","ScrollTotopComponent","_e","scrollToTop","CenterServiceCatalogComponent","centerNameStr","DynamicCenterComponent","activeSection","getChildData","_dynamicUrl","services","centerLogo","CenterLogo","CenterMainImageCover","centerIconUrl","getCenterTabs","getServiceCenter","CenterTabs","cenetrservices","cenetrservicesCategory","catalogCount","GreatingsComponent","downloadImage","domtoimage","dataUrl","imageUrl","getBase64ImageFromURL","base64data","base64Image","click","catch","crossOrigin","getBase64Image","canvas","getContext","drawImage","toDataURL","fileExtensionValidator","validExt","forbidden","fileExt","ext","inValidExt","fileSizeValidator","maxSize","file","fileSizeExceeded","ResearcherComponent","FormGroup","nationalId","degree","degreeDate","spciality","workOn","role","resumeText","anyConflict","researchDate","localGUID","myForm","upload","isCorrectSize","files","formData","FormData","post","reportProgress","HttpEventType","loaded","alert","throwError","toPromise","patchValue","educationdata","getRawValue","showCompareChange","finish","showCompare","ResearcherListComponent","localEducationList","educationList","educationListChange","removeResearcher","guid","ResearchDetailsComponent","major","subField","specialization","suggestedDuration","summary","summary2","summary3","crypto","randomUUID","OnlyNumbers","$event","regex","ResearchPrizeComponent","fb","getStep","firstStep","TranscriptsComponent","branch","announcePeriod","announceNumber","startDate","contactName","contactMobile","description","transcriptList","OpenDataAllComponent","SEFComponent","needRefresh","SEFRegistrationComponent","token_key","first_name","last_name","phone","company","queryParams","token","requiredfield","invalidemail","mobilenumber","invalidmobilenumber","isView","isRegistered","registered","setValue","onSubmit","isSuccess","messageEnglish","hasFile","isCorrectExt","SEFBadgeComponent","routes","redirectTo","pathMatch","loadComponent","OpenDataComponent","__webpack_require__","PersonalInfoComponent","AppRoutingModule","RouterModule","scrollPositionRestoration","not","pred","thisArg","durationSelector","lastValue","durationSubscriber","AbstractLoaderDirective","SkChasingDotsComponent","decls","SkCubeGridComponent","SkDoubleBounceComponent","SkRotatingPlaneComponent","SkSpinnerPulseComponent","SkThreeBounceComponent","SkWanderingCubesComponent","SkWaveComponent","Spinkit","skChasingDots","skCubeGrid","skDoubleBounce","skRotatingPlane","skSpinnerPulse","skThreeBounce","skWanderingCubes","skWave","PendingRequestsInterceptor","_pendingRequests","_pendingRequestsStatus$","_filteredUrlPatterns","_filteredMethods","_filteredHeaders","_forceByPass","pendingRequestsStatus$","pendingRequests","filteredUrlPatterns","filteredMethods","httpMethods","filteredHeaders","forceByPass","shouldBypassUrl","shouldBypassMethod","req","shouldBypassHeader","headers","shouldBypass","urlWithParams","intercept","handle","PendingRequestsInterceptorProvider","HTTP_INTERCEPTORS","multi","SpinnerVisibilityService","pendingRequestsInterceptor","_visibility$","visibility$","NgHttpLoaderComponent","spinnerVisibility","spinkit","visibleUntil","debounceDelay","entryComponent","extraDuration","minDuration","backdropBackgroundColor","spinner","initIsvisibleObservable","nullifySpinnerIfEntryComponentIsDefined","initFilters","showSpinner$","hideSpinner$","partition","predicate","h","isVisible$","getVisibilityTimer$","distinctUntilChanged","comparator","keySelector","previousKey","currentKey","updateExpirationDelay","initFilteredUrlPatterns","initFilteredMethods","initFilteredHeaders","showSpinner","i3","NgHttpLoaderModule","ngModule","AppComponent","localeId","resources","changeDetector","metaTagService","loading$","prepareDocument","_darkMode","font","getMetaData","Tag","Value","IsSocial","addTag","AOS","onActivate","setInterval","clearInterval","ngAfterContentChecked","LOCALE_ID","ThemeMenuComponent","ChangeToDark","dark","ChangeToEvent","subItem_r33","subItem_r69","HeaderComponent","apiRouter","headerClass","_value","isHome","endsWith","getMenu","menuId","menuName","menULink","MenuLink","menuSubLink","menuVisitTotal","parentMenuId","ParentMenuId","er","isProducation","eventTheme","ifHasChild","menuItem","routeUrl","Change","darkTheme","increaseFont","root","normalFont","decreaseFont","darkMoode","demo","ImportantlinksComponent","ImportantLinkService","getRelatedLink","ImportantLinks","FooterComponent","notificationService","_appService","currentDate","getFullYear","isAgree","getCookiefooter","validator","ETEC","cookiedisclaimer","SubscribeText","EtecFooterDescription","emailtxt","ok","CopyRights","NewsLitter","importantLinks","Center","FollowUson","ServicesforIndividuals","ServicesforBusinesses","setCookiefooter","agree","sendSubscribtion","Order","AuthInterceptorInterceptor","request","idToken","cloned","clone","invalidTimingValue","exp","ɵRuntimeError","ngDevMode","isBrowser","process","optimizeGroupPlayer","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","normalizeKeyframes$1","driver","normalizer","keyframes","preStyles","postStyles","errors","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","animationFailed","listenOnPlayer","player","onStart","copyAnimationEvent","onDone","phaseName","makeAnimationEvent","triggerName","fromState","toState","totalTime","_data","getOrSetDefaultValue","parseTimelineCommand","command","separatorPos","_contains","elm1","elm2","_query","_documentElement","getParentElement","elem","_CACHED_BODY","_IS_WEBKIT","containsElement","invokeQuery","NoopAnimationDriver","validateStyleProperty","getBodyNode","containsVendorPrefix","matchesElement","_selector","query","computeStyle","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","resolveTimingValue","_convertTimeValueToMS","unit","resolveTiming","timings","allowNegativeValues","parseTimeExpression","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","copyObj","destination","convertToMap","styleMap","copyStyles","backfill","getStyleAttributeString","writeStyleAttribute","styleAttrValue","startsWith","camelCaseToDashCase","setStyles","formerStyles","camelProp","dashCaseToCamelCase","eraseStyles","normalizeAnimationEntry","steps","sequence","PARAM_REGEX","extractStyleParams","interpolateParams","original","localVal","invalidParamValue","iteratorToArray","iterator","done","DASH_CASE_REGEXP","input","visitDslNode","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","parseTransitionExpr","transitionValue","expressions","parseInnerTransitionStr","eventStr","parseAnimationAlias","invalidTransitionAlias","invalidExpression","expr","separator","makeLambdaFromStates","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","buildAnimationAst","metadata","warnings","AnimationAstBuilderVisitor","build","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","transitions","invalidTrigger","definitions","def","stateDef","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","sub","invalidState","metadataName","matchers","normalizeAnimationOptions","furthestTime","innerAst","timingAst","constructTimingAst","makeTimingAst","strValue","ast","currentAnimateTimings","styleMetadata","isEmpty","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","metadataStyles","styleTuple","collectedEasing","styleData","tuple","collectedEntry","updateCollectedStyle","invalidParallelAnimation","firstStart","firstEnd","secondStart","secondEnd","validateStyleParams","invalidStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","limit","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","normalizeSelector","hasAmpersand","optional","originalSelector","invalidStagger","currentTransition","unsupportedCSSPropertiesFound","normalizeParams","createTimelineInstruction","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","buildAnimationTimelines","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","delayNextStep","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","_applyAnimationRefDelays","animationsRefsOptions","animationRefOptions","animationDelay","animationDelayValue","instruction","instructionTimings","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","incrementTime","hasCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","paramsToUpdate","_copyOptions","oldParams","newTime","fork","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","results","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_localTimelineStyles","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","flattenStyles","allStyles","allProperties","getFinalKeyframe","properties","details1","details0","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","oldOffset","decimalPoints","mult","pow","AnimationStyleNormalizer","DIMENSIONAL_PROP_SET","WebAnimationsStyleNormalizer","propertyName","userProvidedProperty","normalizedProperty","strVal","valAndSuffixMatch","invalidCssUnitValue","createTransitionInstruction","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","oneOrMoreTransitionsMatch","matchFns","buildStyles","stateName","styler","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","applyParamDefaults","queriedElementsList","userParams","AnimationStateStyles","defaultParams","combinedParams","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","stateMap","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","register","registerFailed","_buildPlayer","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","_getPlayer","missingPlayer","baseEvent","play","restart","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","_engine","_triggers","_queue","_elementListeners","_hostClassName","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","k1","k2","reportError","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","deregister","entry","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","markedForDestroy","d0","d1","elementContainsData","containsData","TransitionAnimationEngine","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","ancestor","ancestorNs","registerTrigger","_fetchNamespace","stateValue","isElementNode","markElementAsDisabled","isHostElement","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","flush","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","parentPlayer","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","beforeDestroy","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","flattenGroupPlayers","finalPlayers","_flattenGroupPlayersRecur","wrappedPlayer","deleteOrUnsetInMap","currentValues","_player","_containsRealPlayer","_queuedCallbacks","callbacks","triggerCallback","_queueEvent","hasStarted","getPosition","cloakElement","oldValue","valuesMap","elementPropsMap","defaultStyle","cloakVals","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","triggerBuildFailed","buildTrigger","onInsert","onRemove","disableAnimations","action","eventPhase","SpecialCasedStyles","_startStyles","_endStyles","_state","initialStylesByElement","_initialStyles","WeakMap","filterNonAnimatableStyles","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_started","_destroyed","_originalOnDoneFns","_originalOnStartFns","currentSnapshot","_duration","_delay","_onFinish","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","_convertKeyframesToObject","kfs","frame","fromEntries","methods","WebAnimationsDriver","validateAnimatableStyleProperty","playerOptions","previousStyles","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","normalizeKeyframes","balancePreviousStylesIntoKeyframes","startingKeyframe","missingStyleProps","specialStyles","packageNonAnimatableStyles","startStyles","endStyles","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","_nextAnimationId","encapsulation","ViewEncapsulation","issueAnimationCommand","BrowserAnimationFactory","AnimationFactory","_id","RendererAnimationPlayer","_command","_listen","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","promise","BaseAnimationRenderer","animationTriggers","AnimationRenderer","begin","_scheduleCountTask","scheduleListenerCallback","destroyNode","namespace","createComment","refChild","isMove","oldChild","selectRootElement","selectorOrNode","preserveContent","nextSibling","setStyle","flags","removeStyle","resolveElementFromTarget","parseTriggerCallbackName","dotIndex","SHARED_ANIMATION_PROVIDERS","useClass","ɵAnimationStyleNormalizer","useFactory","instantiateDefaultStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵAnimationEngine","InjectableAnimationEngine","appRef","RendererFactory2","instantiateRendererFactory","deps","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ANIMATION_MODULE_TYPE","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","imports","BrowserModule","faTelegramPlane","iconName","icon","faEllipsisH","faSms","shareIcons","ShareIconsModule","iconLibrary","addIcons","FontAwesomeModule","TextFieldModule","coerceArray","coerceCssPixelValue","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_platform","_matchMedia","noopMatchMedia","WEBKIT","BLINK","createEmptyStyleRule","sheet","insertRule","media","BreakpointObserver","_mediaMatcher","_queries","_destroySubject","isMatched","splitQueries","mediaQuery","_registerQuery","mql","observables","observable","stateObservable","combineLatest","debounceTime","dueTime","activeTask","lastTime","emitWhenIdle","targetTime","schedule","breakpointStates","queries","a1","a2","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","_breakpointSubscription","_hasCheckedHighContrastMode","_applyBodyHighContrastModeCssClasses","getHighContrastMode","testElement","backgroundColor","documentWindow","computedStyle","computedColor","bodyClasses","MATERIAL_SANITY_CHECKS","MATERIAL_SANITY_CHECKS_FACTORY","MatCommonModule","highContrastModeDetector","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","_isTestEnvironment","ErrorStateMatcher","isErrorState","touched","MatRippleModule","MatPseudoCheckboxModule","MatOptionModule","MutationObserverFactory","ObserversModule","MatFormFieldModule","MatInputModule","animationFrameProvider","timestamp","Subscription","AnimationFrameScheduler","AsyncScheduler","_active","flushId","_scheduled","actions","execute","AnimationFrameAction","AsyncAction","work","requestAsyncId","recycleAsyncId","nextHandle","activeHandles","findAndClearHandle","Immediate","setImmediate","cb","clearImmediate","immediateProvider","AsapScheduler","AsapAction","auditTime","audit","isComplete","endDuration","cleanupDuration","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","scrollContainers","elementScrolled","scrollableReference","scrolled","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","_getWindow","coerceElement","elementOrRef","ElementRef","scrollableElement","getElementRef","ViewportRuler","ngZone","_change","_changeListener","_viewportSize","getViewportSize","_updateViewportSize","scrollPosition","getViewportScrollPosition","documentRect","throttleTime","CdkScrollableModule","ScrollingModule","Portal","_attachedHost","detach","isAttached","setAttachedHost","ComponentPortal","componentFactoryResolver","TemplatePortal","templateRef","DomPortal","DomPortalOutlet","BasePortalOutlet","_isDisposed","attachDomPortal","hasAttached","_attachedPortal","portal","attachComponentPortal","attachTemplatePortal","_invokeDisposeFn","dispose","setDisposeFn","_disposeFn","outletElement","_componentFactoryResolver","_appRef","_defaultInjector","anchorNode","replaceChild","componentFactory","viewCount","_getComponentRootNode","viewContainer","PortalModule","scrollBehaviorSupported","supportsScrollBehavior","BlockScrollStrategy","_viewportRuler","_previousHTMLStyles","_isEnabled","_canBeEnabled","_previousScrollPosition","htmlStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","CloseScrollStrategy","_scrollDispatcher","_scrollSubscription","_detach","_overlayRef","overlayRef","stream","_initialScrollPosition","updatePosition","NoopScrollStrategy","isElementScrolledOutsideView","containerBounds","isElementClippedByScrolling","scrollContainerRect","RepositionScrollStrategy","scrollThrottle","overlayRect","overlayElement","ScrollStrategyOptions","OverlayConfig","scrollStrategy","panelClass","hasBackdrop","backdropClass","disposeOnNavigation","configKeys","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","overlays","_keydownEvents","keydownEvents","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_getEventTarget","_clickListener","_outsidePointerEvents","outsidePointerEvents","_addEventListeners","IOS","_cursorOriginalValue","i1$1","OverlayContainer","_containerElement","getContainerElement","_createContainer","oppositePlatformContainers","OverlayRef","_portalOutlet","_host","_pane","_keyboardDispatcher","_outsideClickDispatcher","_animationsDisabled","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_scrollStrategy","_positionStrategy","positionStrategy","backdropElement","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_toggleClasses","detachBackdrop","detachmentResult","_detachContentWhenStable","_disposeScrollStrategy","backdropClick","attachments","detachments","updatePositionStrategy","sizeConfig","setDirection","addPanelClass","removePanelClass","getDirection","updateScrollStrategy","minWidth","minHeight","enablePointer","pointerEvents","showingClass","backdropToDetach","_backdropTimeout","cssClasses","isAdd","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","connectedTo","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_resizeSubscription","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","positions","_validatePositions","_boundingBox","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","_containerRect","originRect","viewportRect","flexibleFits","fallback","pos","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","fit","score","weight","_previousPushAmount","extendStyles","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","withPositions","withViewportMargin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","_origin","withDefaultOffsetX","withDefaultOffsetY","withTransformOriginOn","_transformOriginSelector","originX","_isRtl","endX","originY","overlayStartX","overlayStartY","overlayX","overlayY","rawOverlayRect","overlay","getRoundedBoundingClientRect","_getOffset","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","horizontalFit","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","previousHeight","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","horizontalStyleProperty","originBounds","overlayBounds","scrollContainerBounds","isOriginClipped","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","currentOverflow","cssClass","units","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_alignItems","_xPosition","_xOffset","_width","_height","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","xPosition","xOffset","OverlayPositionBuilder","global","flexibleConnectedTo","nextUniqueId","Overlay","scrollStrategies","_positionBuilder","_directionality","_animationsModuleType","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","ApplicationRef","i5","i6","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY","OverlayModule","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY","MatAutocompleteModule","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY","MatSelectModule","AppModule","bootstrap","HttpClientModule","Ng2SearchPipeModule","ReactiveFormsModule","ToastrModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","exports","__esModule","default","u","d","w","startEvent","throttleDelay","disableMutationObserver","O","atob","tablet","S","isSupported","readyState","refreshHard","M","leading","maxWait","trailing","l","Symbol","NaN","Function","dataset","aos","WebKitMutationObserver","MozMutationObserver","addedNodes","removedNodes","subtree","vendor","opera","configurable","anchor","anchorPlacement","util","newUtil","escape","string","parseExtension","mimeType","extension","mimes","WOFF","JPEG","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","svg","dataAsUrl","isDataUrl","canvasToBlob","toBlob","binaryString","binaryArray","Uint8Array","charCodeAt","Blob","resolveUrl","implementation","createHTMLDocument","getAndEncode","impl","cacheBust","placeholder","XMLHttpRequest","onreadystatechange","fail","encoder","FileReader","onloadend","readAsDataURL","ontimeout","responseType","imagePlaceholder","uid","fourRandomChars","ms","asArray","arrayLike","escapeXhtml","makeImage","uri","leftBorder","px","rightBorder","topBorder","bottomBorder","styleProperty","inliner","newInliner","URL_REGEX","inlineAll","nothingToInline","shouldProcess","readUrls","urls","inline","urlAsRegex","fontFaces","newFontFaces","resolveAll","readAll","webFonts","webFont","cssStrings","styleSheets","getCssRules","cssRules","selectWebFontRules","rule","CSSRule","FONT_FACE_RULE","rules","newWebFont","webFontRule","cssText","parentStyleSheet","newImages","inlineBackground","background","inlined","getPropertyPriority","HTMLImageElement","newImage","toSvg","toPng","draw","toJpeg","quality","toPixelData","getImageData","copyOptions","embedFonts","inlineImages","applyOptions","bgcolor","makeSvgDataUri","XMLSerializer","serializeToString","xhtml","foreignObject","domNode","newCanvas","fillStyle","fillRect","makeNodeCopy","HTMLCanvasElement","cloneChildren","cloneChildrenInOrder","childClone","processClone","cloneStyle","copyStyle","copyProperties","clonePseudoElements","clonePseudoElement","styleElement","formatPseudoElementStyle","formatCssText","formatCssProperties","formatProperty","copyUserInput","HTMLTextAreaElement","HTMLInputElement","fixSvg","SVGElement","SVGRectElement","styleNode","Ng2SearchPipe","term","toCompare","checkInside","ɵpipe","pure","getValue","_subscribe","hasError","thrownError","_throwIfClosed","lift","operator","observerOrNext","isSubscriber","Subscriber","isObserver","isSubscription","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","copy","_checkFinalizedStatuses","adjustedBufferSize","ObjectUnsubscribedError","createErrorClass","_super","currentObservers","subject","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","arrRemove","COMPLETE_NOTIFICATION","createNotification","kind","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_error","_complete","_bind","ConsumerObserver","partialObserver","handleUnhandledError","captureError","reportUnhandledError","notification","onStoppedNotification","timeoutProvider","defaultErrorHandler","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","onUnhandledError","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","popScheduler","argsArgArrayOrObject","combineLatestInit","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","createObject","executeSchedule","concatAll","mergeAll","defer","observableFactory","observeOn","subscribeOn","scheduleAsyncIterable","asyncIterator","scheduled","isInteropObservable","scheduleObservable","scheduleArray","schedulePromise","isAsyncIterable","isIterable","scheduleIterable","Symbol_iterator","return","isReadableStreamLike","scheduleReadableStreamLike","readableStreamLikeToAsyncGenerator","createInvalidObservableTypeError","fromInteropObservable","obs","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","iterable","fromReadableStreamLike","readableStream","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_1","__awaiter","__asyncValues","e_1_1","concurrent","popNumber","errorOrErrorFactory","errorFactory","intervalOrScheduler","intervalDuration","isScheduler","due","isValidDate","onNext","onComplete","onFinalize","OperatorSubscriber","shouldUnsubscribe","handledResult","concatMap","delayWhen","delayDurationSelector","subscriptionDelay","mapTo","ii","mergeInternals","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","wrapperSource","connection","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","conn","dest","handleReset","innerSubscriber","innerIndex","outerIndex","seen","tapObserver","isUnsub","Action","intervalProvider","_scheduler","_execute","errorValue","errored","Scheduler","schedulerActionCtor","SchedulerAction","async","getSymbolIterator","getPrototypeOf","objectProto","getKeys","isPOJO","createImpl","ctorFunc","stack","isRoot","errorThrown","parentSubscription","repeat","scheduleSubscription","__asyncGenerator","reader","getReader","__await","read","releaseLock","hasLift","liftedSource","callOrApply","fns","adopt","verb","q","settle","resume","__values","tokens","stateChangeExpr","animateChild","scheduleMicroTask","_position","_onStart","triggerMicrotask","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","hasV8BreakIterator","Intl","v8BreakIterator","supportsPassiveEvents","Platform","EDGE","TRIDENT","chrome","CSS","FIREFOX","ANDROID","SAFARI","PlatformModule","normalizePassiveListenerOptions","supportsPassiveEventListeners","scrollToFunction","__karma__","jasmine","jest","Mocha","_DOM","getDOM","setRootDomAdapter","adapter","DomAdapter","PlatformLocation","historyGo","relativePosition","useBrowserPlatformLocation","ɵɵinject","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_init","_history","getBaseHrefFromDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","port","newPath","supportsState","forward","getState","createBrowserPlatformLocation","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","normalizeQueryParams","LocationStrategy","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","includeHash","externalUrl","HashLocationStrategy","Location","locationStrategy","_subject","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","browserBaseHref","_stripIndexHtml","ev","isCurrentPathEqualTo","_stripBaseHref","baseHref","_notifyUrlChangeListeners","onUrlChange","fnIndex","onThrow","onReturn","createLocation","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","Decimal","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLocaleDateFormat","locale","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","getLocaleTimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","getLocaleNumberSymbol","symbol","checkFullData","extractTime","hours","minutes","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","format","timezone","date","toDate","isDate","createDate","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","getNamedFormat","parts","part","dateTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","reverseValue","addDateMinutes","setMinutes","getMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","formatter","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","year","month","newDate","getLocaleId","formatValue","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","num","digits","minusSign","negWrap","neg","strNum","String","getDatePart","getMonth","getDate","getHours","getSeconds","getMilliseconds","getDay","formatFractionalSeconds","milliseconds","localeMinus","extended","getDateTranslation","getLocaleMonthNames","formStyle","months","getLocaleDayNames","days","currentHours","currentMinutes","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","getLocaleDayPeriods","amPm","getLocaleEraNames","erasData","getThursdayThisWeek","datetime","monthBased","nbDaysBefore1stDayOfMonth","today","thisThurs","firstThurs","getFirstThursdayOfYear","firstDayOfYear","THURSDAY","requestedTimezoneOffset","parseCookieValue","cookieStr","eqIndex","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","klass","_removeClasses","_applyClasses","ɵisListLikeIterable","ngDoCheck","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","record","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","NgComponentOutlet","ngComponentOutlet","ngComponentOutletNgModule","ngComponentOutletNgModuleFactory","ngModuleFactory","_componentRef","ngComponentOutletInjector","parentInjector","_moduleRef","createNgModule","getParentInjector","ngModuleRef","ngComponentOutletContent","NgModuleRef","NgForOfContext","ngForOf","even","odd","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_trackByFn","ngForTemplate","_applyChanges","forEachOperation","adjustedPreviousIndex","currentIndex","applyViewChange","ilen","forEachIdentityChange","NgIf","_context","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","SwitchView","_templateRef","_created","enforceState","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","useDefault","NgSwitchCase","_view","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","invalidPipeArgumentError","SubscribableStrategy","createSubscription","updateLatestValue","PromiseStrategy","_promiseStrategy","_subscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","SlicePipe","supports","PLATFORM_BROWSER_ID","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","getElementsByName","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","nextNode","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","scrollRestorationDescriptor","getScrollRestorationProperty","XhrFactory","HttpHandler","HttpBackend","HttpHeaders","normalizedNames","lazyUpdate","lazyInit","line","maybeSetNormalizedName","op","lcName","copyFrom","applyUpdate","other","toDelete","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","HttpParams","cloneFrom","fromString","fromObject","paramParser","rawParams","codec","param","eqIdx","appendAll","eKey","HttpContext","isArrayBuffer","ArrayBuffer","isBlob","isFormData","HttpRequest","third","fourth","withCredentials","mightHaveBody","qIdx","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setHeaders","setParams","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","statusText","HttpHeaderResponse","HttpResponse","HttpErrorResponse","addBody","HttpClient","events$","res$","jsonp","callbackParam","patch","put","HttpInterceptorHandler","interceptor","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","xhr","setRequestHeader","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","getResponseUrl","responseURL","getResponseHeader","responseText","originalBody","sentHeaders","onDownProgress","progressEvent","lengthComputable","partialText","onUpProgress","DONE","abort","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","getToken","ɵparseCookieValue","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpInterceptingHandler","backend","chain","interceptors","reduceRight","HttpClientXsrfModule","withOptions","XhrFactory$1","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","before","after","__forward_ref__","forwardRef","forwardRefFn","resolveForwardRef","isForwardRef","RuntimeError","code","formatRuntimeError","renderStringify","throwProviderNotFoundError","injectorName","actual","expected","comparison","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","isInjectable","field","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","SkipSelf","Optional","_injectImplementation","setInjectImplementation","previous","injectRootLimpMode","notFoundValue","injectableDef","noSideEffects","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","None","ShadowDom","_global","globalThis","WorkerGlobalScope","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","componentDefCount","ɵɵdefineComponent","componentDefinition","standalone","declaredInputs","providersResolver","vars","consts","hostAttrs","contentQueries","outputs","exportAs","onPush","changeDetection","directiveDefs","pipeDefs","dependencies","getStandaloneInjector","viewQuery","features","setInput","schemas","tView","feature","invertObject","extractDirectiveDef","nonNull","getPipeDef$1","ɵɵsetComponentScope","directives","pipes","getComponentDef","getDirectiveDef","ɵɵdefineNgModule","declarations","transitiveCompileScopes","ɵɵsetNgModuleScope","scope","ngModuleDef","getNgModuleDef","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefinePipe","pipeDef","isStandalone","throwNotFound","isLView","isLContainer","isContentQueryHost","tNode","isComponentHost","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","SimpleChange","firstChange","isFirstChange","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","definition","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","store","SIMPLE_CHANGES_STORE","previousChange","ngInherit","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","nodeIndex","slotValue","viewAttachedToChangeDetector","getConstant","resetPreOrderHookFlags","updateTransplantedViewCount","lContainer","amount","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","getBindingsEnabled","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","getCurrentParentTNode","isParent","setCurrentTNode","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","nextBindingIndex","incrementBindingIndex","setInI18nBlock","isInI18nBlock","inI18n","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentDirectiveDef","tData","getCurrentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","currentLFrame","childLFrame","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceHTML","namespaceHTMLInternal","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","hooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","hook","directive","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","setUpAttributes","native","namespaceURI","attrVal","isAnimationProp","isNameOnlyAttributeMarker","marker","mergeHostAttrs","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","parentData","footer","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","isFactory","throwCyclicDependencyError","depPath","stringifyForError","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","PARAMETERS","makeParamDecorator","parentClass","metaCtor","makeMetadataCtor","propName","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","parameters","ngMetadataName","annotationCls","_desc","flatten","deepForEach","addToArray","removeFromArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","keyValueArrayGet","_arrayIndexOfSorted","middle","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","getInjectImplementation","skipSelf","injectArgs","types","meta","flag","getInjectFlag","attachInjectFlag","decorator","policy$1","policy","setDocument","trustedHTMLFromString","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy","trustedHTMLFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","actualType","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","getInertBodyHelper","defaultDoc","inertDocumentHelper","InertDocumentHelper","isDOMParserAvailable","DOMParser","parseFromString","DOMParserHelper","getInertBodyElement","inertDocument","inertHtml","inertBodyElement","templateEl","inertBody","documentMode","stripCustomNsAttrs","elAttrs","childNode","Node","ELEMENT_NODE","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","sets","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","buf","sanitizeChildren","traverseContent","startElement","TEXT_NODE","chars","nodeValue","endElement","checkClobberedElement","elAttr","lower","encodeEntities","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","SecurityContext","NONE","HTML","STYLE","SCRIPT","URL","RESOURCE_URL","ɵɵsanitizeHtml","getSanitizer","sanitize","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","ENVIRONMENT_INITIALIZER","INJECTOR","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","ɵproviders","internalImportProvidersFrom","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","provider","defType","injDef","cmpDef","importTypesWithProviders","imported","defProviders","USE_VALUE$1","isValueProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","getNullInjector","EnvironmentInjector","R3Injector","scopes","records","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","runInContext","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","resolveInjectorInitializers","initializers","initializer","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","typeName","ngModuleType","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","isImportedNgModuleProviders","ComponentFactory$1","_NullComponentFactoryResolver","noComponentFactoryError","ERROR_COMPONENT","ComponentFactoryResolver$1","NULL","injectElementRef","createElementRef","unwrapElementRef","Renderer2","injectRenderer2","nodeAtIndex","Sanitizer","Version","minor","VERSION","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","getOriginalError","ERROR_ORIGINAL_ERROR","ErrorHandler","_console","originalError","_findOriginalError","COMMENT_DISALLOWED","COMMENT_DELIMITER","TRACKED_LVIEWS","uniqueIdCounter","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","maybeUnwrapFn","Important","DashCase","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","applyContainer","parentRElement","applyView","updateTextNode","createCommentNode","escapeCommentText","createElementNode","detachMovedView","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","removeIndex","indexInContainer","viewToDetach","declarationLContainer","removedLView","removeViewFromContainer","lQueries","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","cleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","instanceCleanupFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","getInsertInFrontOfRNodeWithNoI18n","_processI18nInsertBefore","setI18nHandling","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","nativeParent","nativeRemoveChild","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","writeDirectStyle","writeDirectClass","classIndexOf","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isInlineTemplate","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","chunk","stringifyCSSSelector","currentChunk","valueOrMarker","attrValue","NO_CHANGE","ɵɵadvance","delta","selectIndexInternal","checkNoChangesMode","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","ɵɵdirectiveInject","ɵɵinvalidFactory","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","refreshContentQueries","queryStartIdx","directiveDefIdx","createLView","tHostNode","rendererFactory","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","allocExpando","numSlotsToAlloc","initialValue","allocIdx","renderView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","staticViewQueries","components","renderChildComponents","hostLView","renderComponent","incompleteFirstPass","refreshView","setBindingIndex","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","movedLView","refreshEmbeddedViews","embeddedLView","embeddedTView","processHostBindingOpCodes","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","refreshChildComponents","refreshComponent","firstUpdatePass","prevSelectedIndex","isUpdatePhase","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","setInputsFromAttrs","invokeDirectivesHostBindings","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","saveResolvedLocalsInData","viewData","localRefExtractor","localIndex","getOrCreateComponentTView","createTView","constsOrFactory","initialViewLength","createViewBlueprint","expandoStartIndex","directiveRegistry","pipeRegistry","storeCleanupWithContext","getOrCreateLViewCleanup","getOrCreateTViewCleanup","generatePropertyAliases","inputAliasMap","propStore","internalName","initializeInputAndOutputAliases","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","elementPropertyInternal","nativeOnly","dataValue","inputData","setInputsForProperty","markDirtyIfOnPush","mapPropName","viewIndex","childComponentLView","resolveDirectives","localRefs","hasDirectives","findDirectiveDefMatches","registry","markAsComponentHost","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","cacheMatchingLocalNames","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","componentView","addToViewTree","elementAttributeInternal","setElementAttribute","initialInputData","inputsToStore","createLContainer","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","markViewDirty","detectChangesInternal","notifyErrorHandler","viewQueryFn","errorHandler","textBindingInternal","computeStaticStyling","writeToHost","collectNativeNodes","lNode","lViewInAContainer","lViewFirstChildTNode","nodesInSlot","ViewRef$1","_cdRefInjectingView","_attachedToViewContainer","viewRefs","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","renderDetachView","attachToAppRef","RootViewRef","ComponentFactoryResolver","componentDef","ComponentFactory","toRefArray","nonMinified","templateName","ChainedInjector","componentType","stringifyCSSSelectorList","selectorList","isBoundToModule","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","hostRNode","locateHostElement","elementOrSelector","getNamespace","rootFlags","rootTView","rootLView","tElementNode","createRootComponentView","viewRenderer","extractAttrsAndClassesFromSelector","nodesforSlot","createRootComponent","hostFeatures","instantiateRootComponent","rootTNode","LifecycleHooksFeature","ComponentRef","ComponentRef$1","_rootLView","ɵɵInheritDefinitionFeature","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","getOwnPropertyNames","isListLikeIterable","isJsObject","updateBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","ɵɵattribute","interpolation1","v0","interpolation2","v1","interpolation3","v2","ɵɵattributeInterpolate1","interpolatedValue","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","comment","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","isClassBased","ɵɵelementStart","getNamespace$1","elementStartFirstCreatePass","elementStart","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","isObservable","ɵɵlistener","listenerFn","useCapture","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","executeListenerWithErrorHandling","profiler","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","returnValue","ɵɵnextContext","level","nextContextImpl","walkUpViews","nestingLevel","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate2","ɵɵpropertyInterpolate3","markDuplicates","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","isMap","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","ch","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","parseStyle","ɵɵclassMap","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","newKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","bindings","setTemplateHeadTStylingKey","collectResidual","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","staticKeyValueArray","setTStylingRangePrev","markDuplicateOfResidualStyling","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","ɵɵtextInterpolate","ɵɵtextInterpolate1","interpolated","ɵɵtextInterpolate2","ɵɵtextInterpolate3","ɵɵclassMapInterpolate1","ɵɵclassMapInterpolate2","ɵɵhostProperty","ɵɵsyntheticHostProperty","loadComponentRenderer","currentDef","unwrapLView","localeEn","plural","LOCALE_DATA","findLocaleData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","getLocalePluralCase","LocaleDataIndex","PluralCase","ng","common","locales","LocaleId","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","ExtraData","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","SHIFT","APPEND_EAGERLY","COMMENT","LOCALE_ID$1","setLocaleId","assertDefined","tNodeInsertBeforeIndex","i18nParent","anchorRNode","addTNodeAndUpdateInsertBeforeIndex","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","getTIcu","createTNodePlaceholder","getCurrentICUCaseIndex","tIcu","currentCase","currentCaseLViewIndex","getParentFromIcuCreateOpCode","mergedCode","getRefFromIcuCreateOpCode","changeMask","changeMaskCounter","applyMutableOpCodes","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","insertInFrontOf","refIdx","caseIndex","anchorIdx","commentValue","commentNodeIndex","elementNodeIndex","applyUpdateOpCodes","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","mask","getCaseIndex","icuExpression","bindingValue","cases","resolvedCase","getPluralCase","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","loadIcuContainerVisitor","_stack","_removes","enterIcu","icuContainerIteratorNext","removeOpCode","icuContainerIteratorStart","BINDING_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","createTNodeAndAddOpCode","existingTNodes","createOpCodes","isICU","i18nNodeIdx","ensureIcuContainerVisitorLoaded","setTNodeInsertBeforeIndex","assertEqual","i18nStartFirstCreatePassProcessTextNode","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","removeInnerTemplateTranslation","tagMatched","inTemplate","icuStart","bindingMask","addUpdateIcuSwitch","mainBinding","setTIcu","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","parseICUBlock","pattern","icuType","i18nParseTextIntoPartsAndICU","binding","blocks","prevPos","braceStack","braces","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","depth","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","ɵɵi18nStart","messageIndex","subTemplateIndex","i18nStartFirstCreatePass","parentTNodeIndex","existingTNodeStack","getTranslationForTemplate","isRootTemplateMessage","msgParts","replaceNgsp","isClosing","tI18n","applyCreateOpCodes","isComment","appendNow","ɵɵi18n","ɵɵi18nEnd","ɵɵi18nExp","setMaskBit","hasChange","ɵɵi18nApply","applyI18n","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","multiFactory","factoryFn","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","_parent","_bootstrapComponents","destroyCbs","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","createEnvironmentInjector","debugName","StandaloneService","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","ɵɵpureFunction0","slotOffset","pureFn","getBinding","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","bindingRoot","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","v3","_wrapInTimeout","EventEmitter_","isAsync","__isAsync","nextFn","errorFn","completeFn","symbolIterator","_results","QueryList","_emitDistinctChangesOnly","dirty","_changesDetected","_changes","toArray","resultsTree","identityAccessor","newResultFlat","arrayEquals","valueA","valueB","notifyOnChanges","setDirty","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","createTemplateRef","ViewContainerRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","indexOrOptions","insert","componentFactoryOrType","isComponentFactory","isType","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","insertView","containerLength","trackMovedView","addViewToContainer","parentNativeNode","getOrCreateViewRefs","viewRefsArr","detachedView","commentNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","track","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","isCreationMode","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","ɵɵloadQuery","loadQueryInternal","ɵɵtemplateRefExtractor","APP_INITIALIZER","ApplicationInitStatus","appInits","donePromise","rej","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_ID","_appIdRandomProviderFactory","_randomChar","fromCharCode","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","getGlobalLocale","DEFAULT_CURRENCY_CODE","ModuleWithComponentFactories","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","Zone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","AsyncStackTaggingZoneSpec","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","invoke","isAngularZone","onInvokeTask","task","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","runGuarded","NoopNgZone","TESTABILITY","TESTABILITY_GETTER","_testabilityGetter","Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","setTestabilityGetter","getter","addToWindow","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","using","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","NgProbeToken","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","PlatformRef","runPlatformInitializers","inits","createPlatformInjector","assertPlatform","requiredToken","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","ngZoneToUse","getNgZoneOptions","ngZoneEventCoalescing","ngZoneRunCoalescing","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","destroyListeners","objs","_exceptionHandler","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","tick","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","compRef","_loadComponent","NG_DEV_MODE","warnIfDestroyed","_devMode","ChangeDetectorRef","injectChangeDetectorRef","createViewRef","isPipe","DefaultIterableDifferFactory","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","collection","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","IterableDiffers","copied","defaultKeyValueDiffersFactory","KeyValueDiffers","kv","platformCore","ApplicationModule","coerceToBoolean","BaseControlValueAccessor","onChange","onTouched","registerOnTouched","registerOnChange","setDisabledState","isDisabled","BuiltInControlValueAccessor","NG_VALUE_ACCESSOR","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","writeValue","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrueValidator","required","emailValidator","minLength","minLengthValidator","minlength","requiredLength","actualLength","maxLength","maxLengthValidator","patternValidator","nullValidator","regexStr","requiredPattern","actualValue","validators","compose","composeAsync","maxlength","isPresent","toObservable","mergeErrors","arrayOfErrors","executeValidators","normalizeValidators","isValidatorFn","validate","presentValidators","composeValidators","forkJoin","remainingCompletions","remainingEmissions","composeAsyncValidators","mergeValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","valid","pristine","untouched","statusChanges","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","errorCode","getError","ControlContainer","formDirective","NgControl","valueAccessor","AbstractControlStatus","cd","_cd","isUntouched","isPristine","isValid","isInvalid","isPending","isSubmitted","NgControlStatus","NgControlStatusGroup","VALID","INVALID","PENDING","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","coerceToValidator","pickAsyncValidators","asyncValidators","coerceToAsyncValidator","assertControlPresent","isGroup","assertAllValuesPresent","_forEachChild","AbstractControl","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","validatorFn","asyncValidatorFn","updateOn","_updateOn","setValidators","setAsyncValidators","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","markAsTouched","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","markAsDirty","markAsPristine","_updatePristine","markAsPending","emitEvent","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","updateValueAndValidity","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","currPath","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","_reduceChildren","_syncPendingControls","subtreeUpdated","_reduceValue","initValue","FormRecord","controlPath","setUpControl","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","updateControl","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","model","syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onReset","resetForm","removeListItem","isFormControlState","formState","_onChange","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","formControlBinding$1","NgModel","resolvedPromise","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","_checkParentType","disabledValue","ɵcoerceToBoolean","ɵNgNoValidate","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","isFormControl","cleanUpFormContainer","controlNameBinding","FormControlName","_ngModelWarningConfig","_added","_ngModelWarningSent","_ngModelWarningSentOnce","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_optionMap","_idCounter","_compareWith","valueString","_getOptionId","_getOptionValue","_registerOption","_extractId$1","NgSelectOption","_select","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","optionSelectedStateSetter","ids","opt","_setSelected","selected","selectedOptions","_extractId","ɵNgSelectMultipleOption","AbstractValidatorDirective","_validator","inputName","normalizeInput","_enabled","createValidator","REQUIRED_VALIDATOR","RequiredValidator","MAX_LENGTH_VALIDATOR","MaxLengthValidator","toInteger","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","FormArray","at","_registerControl","removeAt","isAbstractControlOptions","FormBuilder","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","UntypedFormBuilder","controlsConfig","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","ɵsetRootDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","DocumentFragment","getBaseElementHref","baseElement","relativePath","urlParsingNode","pathName","resetBaseElement","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","appInitializerFactory","transitionId","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","manager","_plugins","_findPluginFor","addGlobalEventListener","getZone","EventManagerPlugin","SharedStylesHost","_stylesSet","addStyles","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","NAMESPACE_URIS","xlink","xml","xmlns","math","COMPONENT_REGEX","compId","decoratePreventDefault","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","isTemplateNode","namespaceUri","setAttributeNS","removeAttributeNS","removeProperty","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","hostEl","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","altKey","ctrlKey","metaKey","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","fullKeyCode","keycode","modifierGetter","matchEventFullKeyCode","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","initDomAdapter","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","testabilities","didWork","decrement","didWork_","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","providersAlreadyPresent","_dom","forceCreation","_getOrCreateElement","addTags","getTag","attrSelector","getTags","_parseSelector","_setMetaElementAttributes","removeTag","removeTagElement","_containsAttributes","_getMetaKeyMap","META_KEYS_MAP","createMeta","httpEquiv","getTitle","newTitle","createTitle","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","bypassSecurityTrustHtml","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","_refCount","refCounter","sharedConnection","_connection","connect","ConnectableObservable","subjectFactory","getSubject","_teardown","higherOrderRefCount","defaultIfEmpty","throwIfEmpty","defaultErrorFactory","hasDefaultValue","scanInternals","accumulator","seed","hasSeed","emitOnNext","emitBeforeComplete","hasState","scan","takeLast","PRIMARY_OUTLET","RouteTitleKey","ParamsAsMap","convertToParamMap","defaultUrlMatcher","segments","segmentGroup","hasChildren","posParams","segment","consumed","shallowEqual","equalArraysOrString","aSorted","bSorted","wrapIntoObservable","ɵisObservable","pathCompareMap","equalSegmentGroups","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","subset","containsSegmentGroup","paramCompareMap","equalParams","containsParams","ignored","containsTree","paths","fragment","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","queryParamMap","_queryParamMap","DEFAULT_SERIALIZER","serialize","UrlSegmentGroup","serializePaths","UrlSegment","parameterMap","_parameterMap","serializePath","as","bs","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","serializeQueryParams","strParams","encodeUriQuery","encodeUriFragment","encodeURI","mapChildrenIntoArray","childOutlet","encodeUriString","encodeUriSegment","decode","decodeQuery","serializeMatrixParams","SEGMENT_RE","matchSegments","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","remaining","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","createRoot","rootCandidate","tt","squashSegmentGroup","newChildren","childCandidate","mergeTrivialChildren","isUrlTree","createUrlTree","urlTree","commands","nav","computeNavigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","outlets","segmentPath","urlPart","partIndex","toRoot","createTreeUsingPathIndex","lastPathIndex","startingPosition","findStartingPosition","Position","createPositionApplyingDoubleDots","ci","dd","isMatrixParams","_urlSegment","processChildren","updateSegmentGroupChildren","updateSegmentGroup","_lastPathIndex","isCommandWithOutlets","oldRoot","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","newRoot","oldSegment","newSegment","cmdWithOutlet","prefixedWith","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","curr","compare","slicedCommands","createNewSegmentGroup","getOutlets","outlet","createNewSegmentChildren","RouterEvent","NavigationStart","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","NavigationCancel","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","Tree","_root","pathFromRoot","findNode","siblings","findPath","cc","TreeNode","nodeChildrenAsMap","RouterState","setRouterState","createEmptyState","rootComponent","createEmptyStateSnapshot","activated","ActivatedRouteSnapshot","RouterStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","paramMap","_paramMap","inheritedParamsDataResolve","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","urlSegment","correctedLastPathIndex","_correctedLastPathIndex","serializeNode","advanceActivatedRoute","nextSnapshot","shallowEqualArrays","equalParamsAndUrlSegments","equalUrlParams","equalSegments","createNode","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","NAVIGATION_CANCELING_ERROR","redirectingNavigationError","urlSerializer","redirect","navigationBehaviorOptions","navigationCancelingError","redirectUrl","cancellationCode","isRedirectingNavigationCancelingError$1","isNavigationCancelingError$1","OutletContext","resolver","ChildrenOutletContexts","attachRef","contexts","onChildOutletCreated","childName","getOrCreateContext","onChildOutletDestroyed","onOutletDeactivated","onOutletReAttached","NG_DEV_MODE$7","RouterOutlet","parentContexts","_activatedRoute","activateEvents","deactivateEvents","activateWith","isActivated","activatedRoute","activatedRouteData","cmp","deactivate","resolverOrInjector","childContexts","OutletInjector","isComponentFactoryResolver","ɵEmptyOutletComponent","getOrCreateRouteInjectorIfNeeded","currentInjector","standardizeConfig","loadChildren","getOutlet","sortByMatchingOutlets","sortedConfig","getClosestRouteInjector","_loadedInjector","ActivateRoutes","futureState","currState","forwardEvent","activate","futureRoot","currRoot","deactivateChildRoutes","activateChildRoutes","futureNode","currNode","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","future","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","activateRoutes","stored","cmpFactoryResolver","CanActivate","CanDeactivate","getAllRouteGuards","getChildRouteGuards","getTokenOrFunctionIdentity","tokenOrFunction","ɵisInjectable","futurePath","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","isEmptyError","INITIAL_VALUE","prioritizedGuardValue","redirectIfUrlTree","noMatch$1","consumedSegments","remainingSegments","positionalParamSegments","matchWithChecks","runCanMatchGuards","canMatch","canMatchObservables","injectionToken","guard","isCanMatch","matcher","slicedSegments","relativeLinkResolution","containsEmptyPathMatchesWithNamedOutlets","emptyPathMatch","createChildrenForEmptyPaths","primarySegment","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","isImmediateMatch","rawSegment","noLeftoversInUrl","NG_DEV_MODE$6","NoMatch$1","AbsoluteRedirect","absoluteRedirect","newTree","ApplyRedirects","configLoader","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","noMatchError","expandChildren","expandSegment","childOutlets","sortedRoutes","expandedChild","last$1","expandSegmentAgainstRoute","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","lineralizeSegments","newSegments","rawSegmentGroup","_loadedRoutes","cfg","getChildConfig","routerConfig","childInjector","childConfig","splitSegmentGroup","matchedOnOutlet","cs","runCanLoadGuards","canLoad","canLoadObservables","isCanLoad","shouldLoadResult","canLoadFails","applyRedirectCreateUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","NoMatch","Recognizer","rootComponentType","recognize","processSegmentGroup","freeze","routeState","inheritParamsAndData","routeNode","processSegment","outletChildren","takeWhile","inclusive","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","localeCompare","processSegmentAgainstRoute","matchResult","pathIndexShift","getPathIndexShift","getData","_loadedComponent","getSourceSegmentGroup","getResolve","hasEmptyPathConfig","mergedNodes","duplicateEmptyPathNode","resultNode","mergedNode","hasStaticTitle","switchTap","nextResult","TitleStrategy","buildTitle","pageTitle","getResolvedTitleForRoute","DefaultTitleStrategy","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ROUTER_CONFIGURATION","ROUTES","RouterConfigLoader","compiler","componentLoaders","childrenLoaders","onLoadStartListener","loadRunner","onLoadEndListener","loadModuleFactoryOrRoutes","factoryOrRoutes","rawRoutes","requireStandaloneComponents","NG_DEV_MODE$3","UrlHandlingStrategy","DefaultUrlHandlingStrategy","shouldProcessUrl","extract","newUrlPart","wholeUrl","defaultMalformedUriErrorHandler","exactMatchOptions","subsetMatchOptions","setupRouter","defaultTitleStrategy","titleStrategy","urlHandlingStrategy","Router","assignExtraOptionsToRouter","malformedUriErrorHandler","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","navigated","lastSuccessfulId","afterPreactivation","triggerEvent","ɵConsole","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","routerState","targetPageId","currentRawUrl","extractedUrl","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","overallTransitionState","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","serializeUrl","applyRedirects","applyRedirects$1","finalUrl","serializer","recognize$1","newObservableError","skipLocationChange","setBrowserUrl","routesRecognized","navStart","replaceUrl","guardsStart","checkGuards","runCanDeactivateChecks","futureRSS","currRSS","runCanDeactivate","currARS","canDeactivate","canDeactivateObservables","closestInjector","isCanDeactivate","isBoolean","runCanActivateChecks","fireChildActivationStart","fireActivationStart","runCanActivateChild","futureARS","canActivateChildGuardsMapped","getCanActivateChild","canActivateChild","guardsMapped","isCanActivateChild","runCanActivate","canActivate","canActivateObservables","isCanActivate","guardsEnd","restoreHistory","cancelNavigationTransition","resolveStart","dataResolved","resolveData","canActivateChecksResolved","runResolve","resolveNode","getDataKeys","getOwnPropertySymbols","getResolver","resolvedData","resolveEnd","loadComponents","loaders","loadedComponent","createRouterState","navCancel","mergedTree","scheduleNavigation","navError","ee","resetRootComponentType","initialNavigation","setUpLocationChangeListener","locationSubscription","stateCopy","parseUrl","getCurrentNavigation","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","navigate","validateCommands","matchOptions","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","_preserveFragment","_skipLocationChange","_replaceUrl","onChanges","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","RouterLinkWithHref","updateTargetUrlAndHref","PreloadingStrategy","RouterPreloader","preloadingStrategy","setUpPreloading","processRoutes","injectorForCurrentRoute","injectorForChildren","preloadConfig","loadedChildren$","recursiveLoadChildren$","loadComponent$","ROUTER_SCROLLER","RouterScroller","viewportScroller","lastId","lastSource","restoredId","anchorScrolling","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","routerFeature","ɵkind","provideRoutes","getBootstrapListener","bootstrappedComponentRef","bootstrapDone","BOOTSTRAP_DONE","INITIAL_NAVIGATION","ROUTER_PRELOADER","withPreloading","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","rootRoute","routerNgProbeToken","provideForRootGuard","useHash","scrollOffset","provideInitialNavigation","ROUTER_INITIALIZER","locationInitialized","initNavigation","afterNextNavigation","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","_defineProperties","descriptor","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_arr","_n","_d","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_arrayLikeToArray","_iterableToArray","iter","_nonIterableSpread","arr2","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","performance","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","_ref$userAgent","WINDOW","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","NAMESPACE_IDENTIFIER","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","Proxy","PREFIX_TO_STYLE","fa","fas","far","fal","fat","fad","fab","fak","fass","STYLE_TO_PREFIX","solid","regular","light","thin","duotone","brands","kit","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","normal","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","prefixes","RESERVED_CLASSES","FontAwesomeConfig","coerce","getAttrConfig","_default","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_onChangeCb","meaninglessTransform","rotate","flipX","flipY","classArray","htmlEscape","joinStyles","styleName","transformIsMeaningful","dcp","drc","fp","rc","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","insertCss","headChildren","beforeChild","InjectCSS","mixout","beforeDOMElementCreation","beforeI2svg","shims","functions","domready","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","attributeName","iconFromMapping","mapping","doScroll","thisContext","bindInternal4","toHex","unicode","decoded","ucs2decode","extra","normalizeIcons","icons","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","isReserved","lookup","reducer","hasRegular","autoFetchSvg","shimLookups","shim","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","family","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","canonical","aliasIconName","Library","_classCallCheck","Constructor","_createClass","protoProps","staticProps","_pullDefinitions","longPrefix","_normalized$key","_hooks","defaultProviderKeys","chainHooks","hookFns","hookFn","callProvided","findIconDefinition","iconLookup","library","i2svg","watch","autoReplaceSvgRoot","autoReplace","api","noAuto","_icon","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","abstract","makeInlineSvgAbstract","_params$icons","main","maskId","titleId","_params$watchable","watchable","isUploadedIcon","attrClass","viewBox","uploadedIconWidthStyle","asSymbol","asIcon","makeLayersTextAbstract","_params$watchable2","transformForCss","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","styleString","makeLayersCounterAbstract","styles$1","asFoundIcon","vectorData","missingIconResolutionMixin","findIcon","maybeNotifyMissing","noop$1","preamble","perf","noop$2","isWatched","convertSVG","abstractObj","_params$ceFn","ceFn","mutators","mutation","nodeAsComment","nest","forSvg","splitClasses","toNode","newInnerHTML","performOperationSync","perform","callbackFunction","mutator","getMutator","disableObservation","enableObservation","mo","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","mutationRecord","hasPrefixAndIcon","_getCanonicalIcon","hasBeenReplaced","styleParser","classParser","existingPrefix","existingIconName","innerText","byLigature","ligature","attributesParser","extraAttributes","focusable","parseMeta","parser","_classParser","extraClasses","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","htmlClassList","hclAdd","hclRemove","prefixesDomQuery","candidates","resolvedMutations","onNode","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","LayersText","generateLayersText","computedFontSize","fontSize","boundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","fontWeight","_content","_hexValueFromContent","hexValueFromContent","cleaned","codePoint","codePointAt","second","isPrependTen","isDoubled","isSecondary","hexValue","isV4","iconIdentifier","iconName4","byOldUnicode","oldUnicode","newUnicode","blankMeta","processable","_unwatched","parseTransformString","ALL_SPACE","fillBlack","registerPlugins","nextPlugins","mixoutsTo","tk","sk","pseudoElements2svg","unwatch","parseNodeAttributes","generateAbstractTransformGrouping","innerTranslate","innerScale","innerRotate","inner","maskData","generateAbstractMask","explicitMaskId","mainPath","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","reduceMotion","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","symbolData","parse$1","faClassList","spin","pulse","fixedWidth","border","inverse","pull","stackItemSize","FaConfig","fallbackIcon","FaIconLibrary","addIconPacks","packs","pack","getIconDefinition","FaStackItemSizeDirective","FaStackComponent","FaIconComponent","stackItem","faWarnIfIconSpecMissing","iconToBeRendered","buildParams","renderIcon","iconSpec","isIconLookup","faNormalizeIconSpec","faWarnIfIconDefinitionMissing","classOpts","parsedTransform","a11yRole","renderedIcon","renderedIconHTML","PendingCopy","textarea","_textarea","readOnly","successful","currentFocus","setSelectionRange","execCommand","Clipboard","pendingCopy","beginCopy","ClipboardModule","SHARE_BUTTONS_CONFIG","SharerMethod","Anchor","Window","mergeDeep","it","linkInDescription","SHARE_BUTTONS","facebook","ariaLabel","color","twitter","via","linkedin","pinterest","reddit","tumblr","mix","viber","paramsFunc","vk","telegram","messenger","whatsapp","xing","sms","printPage","successText","successIcon","copyToClipboard","clipboard","updater","ShareService","sharerMethod","sharerTarget","windowObj","windowFuncName","theme","include","exclude","autoSetMeta","windowWidth","windowHeight","moreButtonIcon","lessButtonIcon","moreButtonAriaLabel","lessButtonAriaLabel","config$","setConfig","windowSize","addButton","Ne","ShareDirective","_meta","_clipboard","_share","_updater","opened","shareButton","getParamsFromMetaTags","getParamsFromInputs","_shareButtonChanged","shareButtonName","_createShareButton","_urlChanged","getValidUrl","fallbackUrl","_getMetaTagContent","_buttonClass","metaUsingProperty","metaUsingName","twitterAccount","sharerLink","_finalUrl","_serializeParams","debug","linkElement","popUpWindow","openWindow","opener","pollTimer","paramFunc","paramValue","urlParam","ShareModule","ShareButton","showIcon","showText","buttonClass","ShareButtonModule","_r6","ctx_r5","ctx_r7","_r9","ctx_r8","ExpandButton","ShareButtons","_state$","includedButtons","excludedButtons","userButtons","selectedButtons","expanded","shownCount","_configSub$","state$","btn","moreIcon","lessIcon","moreAriaLabel","lessAriaLabel","updateState","ctx_r1","ctx_r2","ctx_r3","newestOnTop","ToastRef","duplicatesCount","_afterClosed","_activate","_manualClose","_resetTimeout","_countDuplicate","manualClose","manualClosed","timeoutReset","countDuplicate","afterClosed","isInactive","afterActivate","onDuplicate","resetTimeout","ToastPackage","toastId","toastType","toastRef","_onTap","_onAction","triggerTap","tapToDismiss","onTap","triggerAction","onAction","TOAST_CONFIG","DomPortalHost","BasePortalHost","_hostDomElement","_portalHost","_paneElements","positionClass","overlayContainer","_createOverlayRef","getPaneElement","_createPortalHost","ToastrService","currentlyActive","toasts","toastrConfig","iconClasses","override","_preBuildNotification","applyConfig","toast","_findToast","activeToast","maxOpened","findDuplicate","resetOnDuplicate","countDuplicates","includeTitleDuplicates","hasDuplicateTitle","onActivateTick","_buildNotification","toastComponent","duplicate","resetTimeoutOnDuplicate","timeOut","preventDuplicates","previousToastMessage","keepInactive","autoDismiss","sanitizedMessage","enableHtml","toastPackage","toastInjector","ins","onShown","onHidden","DefaultGlobalConfig","closeButton","disableTimeOut","extendedTimeOut","progressBar","toastClass","titleClass","messageClass","easeTime","progressAnimation","payload","Toast","toastrService","toastClasses","originalTimeout","activateToast","sub1","sub2","sub3","displayStyle","intervalId","outsideTimeout","hideTime","outsideInterval","tapToast","stickAround","delayedHideToast","runInsideAngular","ToastNoAnimationModule","asyncGeneratorStep"],"sourceRoot":"webpack:///","sources":["./src/app/components/shareicons/shareicons.component.ts","./src/app/components/shareicons/shareicons.component.html","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/retry.js","./src/app/services/api.service.ts","./src/app/services/loading.service.ts","./src/app/services/notification.service.ts","./src/app/services/resources.service.ts","./node_modules/rxjs/dist/esm/internal/firstValueFrom.js","./src/environments/environment.prod.ts","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/ssr-window/ssr-window.esm.js","./node_modules/dom7/dom7.esm.js","./node_modules/swiper/shared/dom.js","./node_modules/swiper/shared/utils.js","./node_modules/swiper/shared/get-support.js","./node_modules/swiper/shared/get-device.js","./node_modules/swiper/shared/get-browser.js","./node_modules/swiper/core/transition/transitionEmit.js","./node_modules/swiper/core/events/onTouchStart.js","./node_modules/swiper/core/events/onTouchMove.js","./node_modules/swiper/core/events/onTouchEnd.js","./node_modules/swiper/core/events/onResize.js","./node_modules/swiper/core/events/onClick.js","./node_modules/swiper/core/events/onScroll.js","./node_modules/swiper/core/events/index.js","./node_modules/swiper/core/breakpoints/setBreakpoint.js","./node_modules/swiper/core/defaults.js","./node_modules/swiper/core/moduleExtendParams.js","./node_modules/swiper/core/core.js","./node_modules/swiper/core/events-emitter.js","./node_modules/swiper/core/update/index.js","./node_modules/swiper/core/update/updateSize.js","./node_modules/swiper/core/update/updateSlides.js","./node_modules/swiper/core/update/updateAutoHeight.js","./node_modules/swiper/core/update/updateSlidesOffset.js","./node_modules/swiper/core/update/updateSlidesProgress.js","./node_modules/swiper/core/update/updateProgress.js","./node_modules/swiper/core/update/updateSlidesClasses.js","./node_modules/swiper/core/update/updateActiveIndex.js","./node_modules/swiper/core/update/updateClickedSlide.js","./node_modules/swiper/core/translate/index.js","./node_modules/swiper/core/translate/getTranslate.js","./node_modules/swiper/core/translate/setTranslate.js","./node_modules/swiper/core/translate/minTranslate.js","./node_modules/swiper/core/translate/maxTranslate.js","./node_modules/swiper/core/translate/translateTo.js","./node_modules/swiper/core/transition/index.js","./node_modules/swiper/core/transition/setTransition.js","./node_modules/swiper/core/transition/transitionStart.js","./node_modules/swiper/core/transition/transitionEnd.js","./node_modules/swiper/core/slide/index.js","./node_modules/swiper/core/slide/slideTo.js","./node_modules/swiper/core/slide/slideToLoop.js","./node_modules/swiper/core/slide/slideNext.js","./node_modules/swiper/core/slide/slidePrev.js","./node_modules/swiper/core/slide/slideReset.js","./node_modules/swiper/core/slide/slideToClosest.js","./node_modules/swiper/core/slide/slideToClickedSlide.js","./node_modules/swiper/core/loop/index.js","./node_modules/swiper/core/loop/loopCreate.js","./node_modules/swiper/core/loop/loopFix.js","./node_modules/swiper/core/loop/loopDestroy.js","./node_modules/swiper/core/grab-cursor/index.js","./node_modules/swiper/core/grab-cursor/setGrabCursor.js","./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","./node_modules/swiper/core/breakpoints/index.js","./node_modules/swiper/core/breakpoints/getBreakpoint.js","./node_modules/swiper/core/check-overflow/index.js","./node_modules/swiper/core/classes/index.js","./node_modules/swiper/core/classes/addClasses.js","./node_modules/swiper/core/classes/removeClasses.js","./node_modules/swiper/core/images/index.js","./node_modules/swiper/core/images/loadImage.js","./node_modules/swiper/core/images/preloadImages.js","./node_modules/swiper/core/modules/resize/resize.js","./node_modules/swiper/core/modules/observer/observer.js","./node_modules/swiper/shared/create-element-if-not-defined.js","./node_modules/swiper/modules/navigation/navigation.js","./node_modules/swiper/shared/classes-to-selector.js","./node_modules/swiper/modules/pagination/pagination.js","./node_modules/swiper/modules/autoplay/autoplay.js","./node_modules/swiper/shared/effect-target.js","./node_modules/swiper/modules/effect-fade/effect-fade.js","./node_modules/swiper/shared/effect-init.js","./node_modules/swiper/shared/effect-virtual-transition-end.js","./node_modules/@angular/cdk/fesm2020/bidi.mjs","./node_modules/swiper/angular/fesm2015/swiper_angular.mjs","./src/app/components/latestnews/latestnews.component.html","./src/app/components/latestnews/latestnews.component.ts","./src/app/components/relatedlinks/relatedlinks.component.html","./src/app/components/relatedlinks/relatedlinks.component.ts","./src/app/components/statistics/statistics.component.html","./src/app/components/statistics/statistics.component.ts","./src/app/components/carousel/carousel.component.html","./src/app/components/carousel/carousel.component.ts","./node_modules/ngx-cookie-service/fesm2020/ngx-cookie-service.mjs","./src/app/components/survay/survay.component.html","./src/app/components/survay/survay.component.ts","./src/app/components/productsonhome/productsonhome.component.html","./src/app/components/productsonhome/productsonhome.component.ts","./src/app/components/home/home.component.ts","./src/app/components/home/home.component.html","./src/app/services/route-api.service.ts","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/observable/race.js","./node_modules/rxjs/dist/esm/internal/observable/never.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","./node_modules/@popperjs/core/lib/enums.js","./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","./node_modules/@popperjs/core/lib/utils/math.js","./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","./node_modules/@popperjs/core/lib/dom-utils/contains.js","./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","./node_modules/@popperjs/core/lib/utils/getVariation.js","./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","./node_modules/@popperjs/core/lib/utils/computeOffsets.js","./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","./node_modules/@popperjs/core/lib/utils/detectOverflow.js","./node_modules/@popperjs/core/lib/modifiers/flip.js","./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","./node_modules/@popperjs/core/lib/utils/within.js","./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","./node_modules/@popperjs/core/lib/utils/getAltAxis.js","./node_modules/@popperjs/core/lib/modifiers/arrow.js","./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","./node_modules/@popperjs/core/lib/utils/orderModifiers.js","./node_modules/@popperjs/core/lib/utils/debounce.js","./node_modules/@popperjs/core/lib/createPopper.js","./node_modules/@popperjs/core/lib/utils/mergeByName.js","./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","./node_modules/@popperjs/core/lib/popper-lite.js","./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2020/ng-bootstrap.mjs","./node_modules/rxjs/dist/esm/internal/operators/endWith.js","./src/app/components/products/products.component.html","./src/app/components/products/products.component.ts","./src/app/components/center-details/center-details.component.html","./src/app/components/center-details/center-details.component.ts","./src/app/components/centers/about-center/about-center.component.html","./src/app/components/centers/about-center/about-center.component.ts","./src/app/components/center-leader/center-leader.component.html","./src/app/components/center-leader/center-leader.component.ts","./src/app/components/center-services/center-services.component.html","./src/app/components/center-services/center-services.component.ts","./src/app/components/combobox/combobox.component.html","./src/app/components/combobox/combobox.component.ts","./src/app/components/accreditationresult/accreditationresult.component.html","./src/app/components/accreditationresult/accreditationresult.component.ts","./src/app/components/centers/centers.component.ts","./src/app/components/centers/centers.component.html","./src/app/components/establishing/establishing.component.html","./src/app/components/establishing/establishing.component.ts","./src/app/components/board/board.component.html","./src/app/components/board/board.component.ts","./node_modules/lightgallery/plugins/zoom/lg-zoom.es5.js","./node_modules/lightgallery/plugins/fullscreen/lg-fullscreen.es5.js","./node_modules/lightgallery/lightgallery.es5.js","./node_modules/lightgallery/angular/fesm2020/lightgallery-angular.mjs","./src/app/components/organizationalchart/organizationalchart.component.html","./src/app/components/organizationalchart/organizationalchart.component.ts","./src/app/components/vision/vision.component.html","./src/app/components/vision/vision.component.ts","./src/app/components/ceo/ceo.component.html","./src/app/components/ceo/ceo.component.ts","./src/app/components/eteccenters/etec/etec.component.ts","./src/app/components/eteccenters/etec/etec.component.html","./node_modules/ngx-print/__ivy_ngcc__/fesm2015/ngx-print.js","./src/app/components/news/news.component.html","./src/app/components/news/news.component.ts","./src/app/components/contact-us/contact-us.component.ts","./src/app/components/contact-us/contact-us.component.html","./src/app/components/infographic/infographic.component.html","./src/app/components/infographic/infographic.component.ts","./src/app/components/spinner/spinner.component.ts","./src/app/components/spinner/spinner.component.html","./src/app/components/videolibrary/videolibrary.component.html","./src/app/components/videolibrary/videolibrary.component.ts","./src/app/components/identityguideline/identityguideline.component.html","./src/app/components/identityguideline/identityguideline.component.ts","./src/app/components/allnews/allnews.component.html","./src/app/components/allnews/allnews.component.ts","./src/app/components/publicationsandreleases/publicationsandreleases.component.html","./src/app/components/publicationsandreleases/publicationsandreleases.component.ts","./src/app/components/mediacenter/mediacenter.component.html","./src/app/components/mediacenter/mediacenter.component.ts","./src/app/components/product-accreditation/product-accreditation.component.html","./src/app/components/product-accreditation/product-accreditation.component.ts","./src/app/components/product-qiyas/product-qiyas.component.html","./src/app/components/product-qiyas/product-qiyas.component.ts","./src/app/components/service/goals/goals.component.html","./src/app/components/service/goals/goals.component.ts","./src/app/components/service/audience/audience.component.html","./src/app/components/service/audience/audience.component.ts","./src/app/components/service/targeted-sector/targeted-sector.component.html","./src/app/components/service/targeted-sector/targeted-sector.component.ts","./src/app/components/service/steps/steps.component.html","./src/app/components/service/steps/steps.component.ts","./src/app/components/service/content/content.component.html","./src/app/components/service/content/content.component.ts","./src/app/components/service/notes/notes.component.html","./src/app/components/service/notes/notes.component.ts","./src/app/components/service/prerequirements/prerequirements.component.html","./src/app/components/service/prerequirements/prerequirements.component.ts","./src/app/components/service/test-timetable/test-timetable.component.html","./src/app/components/service/test-timetable/test-timetable.component.ts","./src/app/components/service/faq-list/faq-list.component.html","./src/app/components/service/faq-list/faq-list.component.ts","./src/app/components/service-details/service-details.component.html","./src/app/components/service-details/service-details.component.ts","./src/app/components/reports/data/data.component.html","./src/app/components/reports/data/data.component.ts","./src/app/components/reports/public-research/public-research.component.ts","./src/app/components/reports/public-research/public-research.component.html","./src/app/components/reports/reports/reports.component.ts","./src/app/components/reports/reports/reports.component.html","./src/app/components/reports/reports-research/reports-research.component.ts","./src/app/components/reports/reports-research/reports-research.component.html","./src/app/components/reports/scientific-activity/scientific-activity.component.html","./src/app/components/reports/scientific-activity/scientific-activity.component.ts","./src/app/components/shared/privcay/privcay.component.ts","./src/app/components/shared/privcay/privcay.component.html","./src/app/components/shared/notfound/notfound.component.ts","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./src/app/components/shared/notfound/notfound.component.html","./src/app/components/reports/workshop/workshop.component.html","./src/app/components/reports/workshop/workshop.component.ts","./src/app/components/reports/conference/conference.component.ts","./src/app/components/reports/conference/conference.component.html","./src/app/components/shared/faq/faq.component.html","./src/app/components/shared/faq/faq.component.ts","./src/app/components/relatednews/relatednews.component.html","./src/app/components/relatednews/relatednews.component.ts","./src/app/components/connect/connect.component.ts","./src/app/components/dynamic-document/dynamic-document.component.html","./src/app/components/dynamic-document/dynamic-document.component.ts","./src/app/components/reports/odatagroup/odatagroup.component.html","./src/app/components/reports/odatagroup/odatagroup.component.ts","./src/app/components/reports/odatarequest/odatarequest.component.ts","./src/app/components/reports/odatarequest/odatarequest.component.html","./src/app/components/dynamicnav/dynamicnav.component.html","./src/app/components/dynamicnav/dynamicnav.component.ts","./src/app/custom-service/custom-service.component.html","./src/app/custom-service/custom-service.component.ts","./src/app/page/page.component.html","./src/app/page/page.component.ts","./src/app/components/service-catalog/servicecatalog/servicecatalog.component.html","./src/app/components/service-catalog/servicecatalog/servicecatalog.component.ts","./src/app/components/service-catalog/servicecatalogdetails/servicecatalogdetails.component.html","./src/app/components/service-catalog/servicecatalogdetails/servicecatalogdetails.component.ts","./src/app/lightgallery/lightgallery.component.ts","./src/app/lightgallery/lightgallery.component.html","./src/app/components/scroll-totop/scroll-totop.component.html","./src/app/components/scroll-totop/scroll-totop.component.ts","./src/app/components/center-service-catalog/center-service-catalog.component.html","./src/app/components/center-service-catalog/center-service-catalog.component.ts","./src/app/components/dynamic-center/dynamic-center.component.html","./src/app/components/dynamic-center/dynamic-center.component.ts","./src/app/components/greatings/greatings.component.ts","./src/app/components/greatings/greatings.component.html","./src/app/file-extension-validator.directive.ts","./src/app/forms/researcher/researcher.component.html","./src/app/forms/researcher/researcher.component.ts","./src/app/forms/researcher-list/researcher-list.component.html","./src/app/forms/researcher-list/researcher-list.component.ts","./src/app/forms/research-details/research-details.component.html","./src/app/forms/research-details/research-details.component.ts","./src/app/forms/research-prize/research-prize.component.ts","./src/app/forms/research-prize/research-prize.component.html","./src/app/components/transcripts/transcripts.component.html","./src/app/components/transcripts/transcripts.component.ts","./src/app/components/reports/open-data-all/open-data-all.component.html","./src/app/components/reports/open-data-all/open-data-all.component.ts","./src/app/components/sef/sef.component.html","./src/app/components/sef/sef.component.ts","./src/app/components/sefregistration/sefregistration.component.html","./src/app/components/sefregistration/sefregistration.component.ts","./src/app/components/sefbadge/sefbadge.component.html","./src/app/components/sefbadge/sefbadge.component.ts","./src/app/app-routing.module.ts","./node_modules/rxjs/dist/esm/internal/util/not.js","./node_modules/rxjs/dist/esm/internal/operators/debounce.js","./node_modules/ng-http-loader/fesm2020/ng-http-loader.mjs","./node_modules/rxjs/dist/esm/internal/observable/partition.js","./src/app/app.component.ts","./src/app/app.component.html","./src/app/components/theme-menu/theme-menu.component.html","./src/app/components/theme-menu/theme-menu.component.ts","./src/app/components/header/header.component.html","./src/app/components/header/header.component.ts","./src/app/components/importantlinks/importantlinks.component.html","./src/app/components/importantlinks/importantlinks.component.ts","./src/app/components/footer/footer.component.html","./src/app/components/footer/footer.component.ts","./src/app/auth-interceptor.interceptor.ts","./node_modules/@angular/animations/fesm2020/browser.mjs","./node_modules/@angular/platform-browser/fesm2020/animations.mjs","./node_modules/@fortawesome/free-brands-svg-icons/index.mjs","./node_modules/@fortawesome/free-solid-svg-icons/index.mjs","./node_modules/ngx-sharebuttons/fesm2020/ngx-sharebuttons-icons.mjs","./node_modules/@angular/cdk/fesm2020/text-field.mjs","./node_modules/@angular/cdk/fesm2020/coercion.mjs","./node_modules/@angular/cdk/fesm2020/layout.mjs","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/@angular/cdk/fesm2020/a11y.mjs","./node_modules/@angular/material/fesm2020/core.mjs","./node_modules/@angular/cdk/fesm2020/observers.mjs","./node_modules/@angular/material/fesm2020/form-field.mjs","./node_modules/@angular/material/fesm2020/input.mjs","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/@angular/cdk/fesm2020/scrolling.mjs","./node_modules/@angular/cdk/fesm2020/portal.mjs","./node_modules/@angular/cdk/fesm2020/overlay.mjs","./node_modules/@angular/material/fesm2020/autocomplete.mjs","./node_modules/@angular/material/fesm2020/select.mjs","./src/app/app.module.ts","./src/main.ts","./node_modules/aos/dist/aos.js","./node_modules/dom-to-image/src/dom-to-image.js","./node_modules/ng2-search-filter/__ivy_ngcc__/ng2-search-filter.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2020/animations.mjs","./node_modules/@angular/cdk/fesm2020/platform.mjs","./node_modules/@angular/common/fesm2020/common.mjs","./node_modules/@angular/common/fesm2020/http.mjs","./node_modules/@angular/core/fesm2020/core.mjs","./node_modules/@angular/forms/fesm2020/forms.mjs","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@angular/router/fesm2020/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","./node_modules/@fortawesome/angular-fontawesome/fesm2020/angular-fontawesome.mjs","./node_modules/@angular/cdk/fesm2020/clipboard.mjs","./node_modules/ngx-sharebuttons/fesm2020/ngx-sharebuttons.mjs","./node_modules/ngx-sharebuttons/fesm2020/ngx-sharebuttons-button.mjs","./node_modules/ngx-sharebuttons/fesm2020/ngx-sharebuttons-buttons.mjs","./node_modules/ngx-toastr/fesm2020/ngx-toastr.mjs","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { ShareButtonsModule } from 'ngx-sharebuttons/buttons';\r\n\r\n@Component({\r\n selector: 'app-shareicons',\r\n templateUrl: './shareicons.component.html',\r\n styleUrls: ['./shareicons.component.css'],\r\n standalone:true,\r\n imports:[CommonModule,ShareButtonsModule]\r\n})\r\nexport class ShareiconsComponent implements OnInit {\r\n\r\n public currentUrl : string ;\r\n @Input() dynamicUrl: string ;\r\n etec ='';\r\n share ='';\r\n\r\n constructor(private apiResources: ResourcesService) {this.currentUrl = window.location.href; }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n this.etec = await this.apiResources.getByKey(\"EtecFullName\");\r\n this.share = await this.apiResources.getByKey(\"share\");\r\n }\r\n\r\n}\r\n","\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{{share}} \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 { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n let bufferSize;\n let refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n ({ bufferSize = Infinity, windowTime = Infinity, refCount = false, scheduler } = configOrBufferSize);\n }\n else {\n bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity;\n }\n return share({\n connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nimport { timer } from '../observable/timer';\nimport { innerFrom } from '../observable/innerFrom';\nexport function retry(configOrCount = Infinity) {\n let config;\n if (configOrCount && typeof configOrCount === 'object') {\n config = configOrCount;\n }\n else {\n config = {\n count: configOrCount,\n };\n }\n const { count = Infinity, delay, resetOnSuccess: resetOnSuccess = false } = config;\n return count <= 0\n ? identity\n : operate((source, subscriber) => {\n let soFar = 0;\n let innerSub;\n const subscribeForRetry = () => {\n let syncUnsub = false;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (resetOnSuccess) {\n soFar = 0;\n }\n subscriber.next(value);\n }, undefined, (err) => {\n if (soFar++ < count) {\n const resub = () => {\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n else {\n syncUnsub = true;\n }\n };\n if (delay != null) {\n const notifier = typeof delay === 'number' ? timer(delay) : innerFrom(delay(err, soFar));\n const notifierSubscriber = createOperatorSubscriber(subscriber, () => {\n notifierSubscriber.unsubscribe();\n resub();\n }, () => {\n subscriber.complete();\n });\n notifier.subscribe(notifierSubscriber);\n }\n else {\n resub();\n }\n }\n else {\n subscriber.error(err);\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n subscribeForRetry();\n }\n };\n subscribeForRetry();\n });\n}\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { Login } from '../models/Login';\r\n \r\nimport { ListResponse } from '../models/ListResponse';\r\nimport { retry, catchError, tap, shareReplay, map } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ServicesResponse } from '../models/ServicesResponse';\r\nimport { LoadingService } from './loading.service';\r\n\r\nconst httpOption = {\r\n header: new Headers({\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n 'Access-Control-Allow-Origin': '*',\r\n })\r\n}\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiService {\r\n public first: string = \"\";\r\n public prev: string = \"\";\r\n public next: string = \"\";\r\n public last: string = \"\";\r\n\r\n private baseUrl = environment.baseUrl;\r\n private cashMenu$: Observable;\r\n private cashServices$: Observable;\r\n\r\n private lang: string = 'ar';\r\n\r\n constructor(private http: HttpClient, private loading: LoadingService) {\r\n //this.logIn();\r\n\r\n this.lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n // if (this.isLoggedOut()) {\r\n // this.logIn();\r\n // }\r\n }\r\n\r\n /** utilities */\r\n handleError(error: HttpErrorResponse) {\r\n let errorMessage = 'Unknown error!';\r\n //console.log(errorMessage);\r\n if (error.error instanceof ErrorEvent) {\r\n // Client-side errors\r\n errorMessage = `Error: ${error.error.message}`;\r\n } else {\r\n // Server-side errors\r\n\r\n if (error.status === 401) {\r\n console.log('Error');\r\n this.logIn();\r\n }\r\n errorMessage = `Error Code: ${error.status}\\\\nMessage: ${error.message}`;\r\n }\r\n\r\n //return throwError(errorMessage);\r\n return errorMessage;\r\n }\r\n\r\n\r\n logInFirst() {\r\n // const url = `${this.baseUrl}/Login/Authenticate`;\r\n // const params = new HttpParams()\r\n // .set('username', environment.apiUsername)\r\n // .set('password', environment.apiPassword);\r\n\r\n // return this.http.post(url, params.toString(),\r\n // {\r\n // headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\r\n // });\r\n }\r\n\r\n logIn() {\r\n // const url = `${this.baseUrl}/Login/Authenticate`;\r\n // const params = new HttpParams()\r\n // .set('username', environment.apiUsername)\r\n // .set('password', environment.apiPassword);\r\n\r\n // let tokenString = this.http.post(url, params.toString(),\r\n // {\r\n // headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\r\n // })\r\n // .subscribe((res: any) => {\r\n // this.setWithExpiry(res);\r\n // });\r\n\r\n // return true;\r\n }\r\n\r\n async logInAsync() {\r\n // if (this.isLoggedOut()) {\r\n // const url = `${this.baseUrl}/Login/Authenticate`;\r\n // const params = new HttpParams()\r\n // .set('username', environment.apiUsername)\r\n // .set('password', environment.apiPassword);\r\n\r\n // let tokenString = await firstValueFrom(this.http.post(url, params.toString(),\r\n // {\r\n // headers: { 'Content-Type': 'application/x-www-form-urlencoded' }\r\n // }));\r\n\r\n // this.setWithExpiry(tokenString);\r\n // }\r\n }\r\n\r\n // private setSession(authResult: any) {\r\n // const expireAt = moment().add(120, 'second');\r\n\r\n // localStorage.setItem('id_token', authResult.Token);\r\n // localStorage.setItem('expire_at', JSON.stringify(expireAt.valueOf()));\r\n // }\r\n\r\n private setWithExpiry(authResult: any) {\r\n const now = new Date();\r\n\r\n const item = {\r\n value: authResult.Token,\r\n expiry: now.getTime() + 10000\r\n }\r\n\r\n\r\n localStorage.setItem('id_token', authResult.Token);\r\n localStorage.setItem('expire_at', JSON.stringify(item));\r\n }\r\n\r\n private getWithExpiry() {\r\n const itemStr = localStorage.getItem('expire_at');\r\n if (!itemStr) {\r\n return false;\r\n }\r\n\r\n const item = JSON.parse(itemStr);\r\n const now = new Date();\r\n\r\n if (now.getTime() > item.expiry) {\r\n localStorage.removeItem('expire_at');\r\n localStorage.removeItem('expire_at');\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n logout() {\r\n localStorage.removeItem('id_token');\r\n localStorage.removeItem('expire_at');\r\n }\r\n\r\n isLoggedIn() {\r\n return this.getWithExpiry();\r\n }\r\n\r\n isLoggedOut() {\r\n return !this.isLoggedIn();\r\n }\r\n\r\n // getExpiration() {\r\n // const expiration = localStorage.getItem('expire_at');\r\n // const expireAt = JSON.stringify(expiration);\r\n // //console.log(moment(expireAt));\r\n // return moment(expireAt);\r\n // }\r\n\r\n\r\n /* Main api functions */\r\n get menuGet() {\r\n if (!this.cashMenu$) {\r\n this.cashMenu$ = this.getList('sitemenu').pipe(\r\n shareReplay(10)\r\n );\r\n }\r\n return this.cashMenu$;\r\n }\r\n\r\n /* Main api functions */\r\n get servicesGet() {\r\n if (!this.cashServices$) {\r\n this.cashServices$ = this.getList('Services').pipe(\r\n shareReplay(10)\r\n );\r\n }\r\n return this.cashServices$;\r\n }\r\n\r\n /** get any list data by name */\r\n getList(listName: string): Observable {\r\n const url = `${this.baseUrl}/GetListsItems?listName=${listName}&lang=${this.lang}&siteName=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n\r\n /** get any list item by list name and itemId */\r\n getListById(listName: string, id: number): Observable {\r\n const url = `${this.baseUrl}/GetItemById?listName=${listName}&id=${id}&lang=${this.lang}&siteName=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n\r\n /** get topN data from list by name and N*/\r\n getListTopN(listName: string, n: number, isAsc: boolean, filterName: string, filterValue: any,ID?:number) {\r\n\r\n //const url = `${this.baseUrl}/GetListsItemsFilterd?listName=${listName}&count=${n}&IsAsc=${isAsc}&filterName=${filterName}&filterValue=${filterValue}&lang=${this.lang}`;\r\n const url = `${this.baseUrl}/GetListsItemsFilterdPaging?listName=${listName}&count=${n}&IsAsc=${isAsc}&filterName=${filterName}&filterValue=${filterValue}&lang=${this.lang}&Id=${ID}&siteName=${this.lang}`;\r\n// \r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n /** get Max item ID from list data by name */ \r\n GetListMaxID(listName: string): Observable {\r\n const url = `${this.baseUrl}/GetListMaxID?listName=${listName}&lang=${this.lang}&siteName=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n /** get topN data from list by name and Order the result by filterName*/\r\n getListOrder(listName: string, n: number, isAsc: boolean, filterName: string) {\r\n\r\n const url = `${this.baseUrl}/GetListsItemsOrder?listName=${listName}&count=${n}&IsAsc=${isAsc}&orderField=${filterName}&lang=${this.lang}&siteName=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n\r\n /** get active poll answers with percentage */ \r\n GetActivePollAnswer(): Observable {\r\n const url = `${this.baseUrl}/GetPollAnswers?listName=PollAnswers&lang=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n\r\n /** get topN data from list by name and two conditions with order */\r\n getListWithTwoConditionsTopN(listName: string, n: number, isAsc: boolean, filterName1: string, filterValue1: any, filterName2: string, filterValue2: any,\r\n filterOperation1: string, condition: string, filterOperation2: string) {\r\n\r\n const url = `${this.baseUrl}/GetListsItemsFilterdNew?listName=${listName}&count=${n}&IsAsc=${isAsc}&filterName=${filterName1}&filterValue=${filterValue1}&filterOperation=${filterOperation1}&condition=${condition}&filterName2=${filterName2}&filterValue2=${filterValue2}&filterOperation2=${filterOperation2}&lang=${this.lang}&siteName=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n /** get topN data from list by name and Order the result by filterName*/\r\n GetListsItemsFilterd(listName: string, n: number, isAsc: boolean, filterName: string,filterValue: string) {\r\n\r\n const url = `${this.baseUrl}/GetListsItemsFilterd?listName=${listName}&count=${n}&IsAsc=${isAsc}&filterName=${filterName}&filterValue=${filterValue}&lang=${this.lang}&siteName=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n /** get topN data from list by name and two conditions with order by specific column*/\r\n getListsItemsFilterdOrderd(listName: string, n: number, isAsc: boolean, orderField: string, filterName1: string, filterValue1: any, filterName2: string, filterValue2: any,\r\n filterOperation1: string, condition: string, filterOperation2: string) {\r\n\r\n const url = `${this.baseUrl}/GetListsItemsFilterdOrderd?listName=${listName}&count=${n}&IsAsc=${isAsc}&orderField=${orderField}&filterName=${filterName1}&filterValue=${filterValue1}&filterOperation=${filterOperation1}&condition=&filterName2=${filterName2}&filterValue2=${filterValue2}&filterOperation2=${filterOperation2}&lang=${this.lang}&siteName=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n\r\n /** get service list tabs by serviceID */\r\n checkService(serviceId: number): Observable {\r\n const url = `${this.baseUrl}/CheckService?serviceId=${serviceId}&lang=${this.lang}&siteName=${this.lang}`;\r\n\r\n return this.http.get(url).pipe(retry(3), catchError(this.handleError));\r\n }\r\n\r\n\r\n /** Update visiting count */\r\n putVisitingCount(listName: string, itemId: string) {\r\n const url = `${this.baseUrl}/UpdateVistingCount?listName=${listName}&id=${itemId}&lang=${this.lang}&siteName=${this.lang}`;\r\n return this.http.get(url).pipe(retry(1), catchError(this.handleError));;\r\n }\r\n\r\n /** update item status */\r\n putStatusItem(listName: string, itemId: number, status: boolean) {\r\n const url = `${this.baseUrl}/ChangeItemStatus?listName=${listName}&id=${itemId}&status=${status}&lang=${this.lang}&siteName=${this.lang}`;\r\n this.http.get(url).pipe(retry(1), catchError(this.handleError));\r\n }\r\n\r\n /** save poll action */\r\n putPollData(itemId: number, pollChiceId: string) {\r\n const url = `${this.baseUrl}/PostPoll?listName=PollAnswers&pollId=${itemId}&pollChoiceId=${pollChiceId}&lang=${this.lang}&siteName=${this.lang}`;\r\n return this.http.get(url).pipe(retry(1), catchError(this.handleError));\r\n }\r\n\r\n /** save poll action */\r\n putDowoadFile(fullName: string, mobile: string, emailAddress: string, purpose: string) {\r\n const url = `${this.baseUrl}/PostDownloadedFilesPersonalInformations?listName=DownloadedFilesPersonalInformations&FullName=${fullName}&MobileNumber=${mobile}&EmailAddress=${emailAddress}&Purpose=${purpose}&lang=${this.lang}&siteName=${this.lang}`;\r\n return this.http.get(url).pipe(retry(1), catchError(this.handleError));\r\n }\r\n\r\n /** save poll action */\r\n subscribe(email: string) {\r\n if (this.isLoggedOut()) {\r\n this.logIn();\r\n }\r\n\r\n const url = `${this.baseUrl}/PostNewsLetterSubscriber?listName=NewsLetterSubscribers&email=${email}&lang=${this.lang}&siteName=${this.lang}`;\r\n return this.http.get(url).pipe(retry(1), catchError(this.handleError));\r\n }\r\n public getIPAddress() {\r\n return this.http.get(\"http://api.ipify.org/?format=json\");\r\n }\r\n\r\n}","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoadingService {\r\nprivate _loading = new BehaviorSubject(false);\r\npublic readonly loading$ = this._loading.asObservable();\r\n\r\nprivate _isArabic = new BehaviorSubject(true);\r\npublic readonly isArabic$ = this._isArabic.asObservable();\r\n\r\n constructor() { }\r\n\r\n show(){\r\n this._loading.next(true);\r\n }\r\n\r\n hide(){\r\n this._loading.next(false);\r\n }\r\n\r\n setLang(lang: string){\r\n if(lang){\r\n localStorage.setItem('lang', lang);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n\r\n constructor(private toastr: ToastrService) { }\r\n \r\n showSuccess(message: string, title: string){\r\n this.toastr.success(message, title)\r\n }\r\n \r\n showError(message: string, title: string){\r\n this.toastr.error(message, title)\r\n }\r\n \r\n showInfo(message: string, title: string){\r\n this.toastr.info(message, title)\r\n }\r\n \r\n showWarning(message: string, title: string){\r\n this.toastr.warning(message, title)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ResourcesList } from '../models/ResourcesList';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { ApiService } from './api.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class ResourcesService {\r\n\r\n public _resources: ResourcesList[] = [];\r\n\r\n constructor(private apiServices: ApiService) { }\r\n\r\n async getByKey(resourceKey: string): Promise {\r\n \r\n let searchResult = 'not set';\r\n\r\n if (!this.getWithExpiry()) {\r\n this.apiServices.logInAsync();\r\n const arr: ResourcesList[] = await firstValueFrom(this.apiServices.getList('Resources'));\r\n this._resources = arr;\r\n this.setWithExpiry(JSON.stringify(arr)); \r\n }\r\n else {\r\n const resourceStorage = localStorage.getItem('resources');\r\n this._resources = JSON.parse(resourceStorage!);\r\n }\r\n\r\n this._resources.forEach(element => {\r\n if (element.ItemFields.ResourceKey?.toLowerCase() == resourceKey.toLowerCase()) {\r\n searchResult = element.ItemFields.ResourceValue;\r\n }\r\n });\r\n\r\n return searchResult;\r\n }\r\n\r\n\r\n setWithExpiry(authResult: string) {\r\n const now = new Date();\r\n\r\n const item = {\r\n value: 'token',\r\n expiry: now.getTime() + 100000\r\n }\r\n\r\n localStorage.setItem('resources', authResult);\r\n localStorage.setItem('resources_expire_at', JSON.stringify(item));\r\n }\r\n\r\n getWithExpiry() {\r\n const itemStr = localStorage.getItem('resources_expire_at');\r\n if (!itemStr) {\r\n return false;\r\n }\r\n\r\n const item = JSON.parse(itemStr);\r\n const now = new Date();\r\n\r\n if (now.getTime() > item.expiry) {\r\n localStorage.removeItem('resources_expire_at');\r\n localStorage.removeItem('resources');\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n clearResource(){\r\n localStorage.removeItem('resources_expire_at');\r\n localStorage.removeItem('resources');\r\n }\r\n\r\n}","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n const hasConfig = typeof config === 'object';\n return new Promise((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: () => {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n","export const environment = {\r\n production: true,\r\n baseUrl: 'https://spapi.etec.gov.sa:1443/api/List', // for production live\r\n //baseUrl: 'https://beta.etec.gov.sa:1443/api/List', // for beat\r\n // apiUsername: 'admin',\r\n // apiPassword: 'P@ssw0rd',\r\n imgLocalUrl: 'http://localhost:4200/',\r\n imgBaseUrl: 'http://10.10.99.211/',\r\n imgPublicUrl:'https://spapi.etec.gov.sa:2443/',\r\n //imgPublicUrl:'https://beta.etec.gov.sa:2443/',\r\n //imgPublicUrl:'https://cdn.etec.gov.sa/',\r\n imptempPublicUrl:'http://mediapathurl.com/',\r\n //tarteebUrl:'https://capi.etec.gov.sa:4443/tarteeb/',\r\n tarteebUrl:'https://seaapi.etec.gov.sa/tarteeb/ResearchPrize/',\r\n maxFileSize: 3072000\r\n};\r\n","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'];\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'];\nconst jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n const [add, remove] = isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler) => target[methodName](eventName, handler, options))\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget) => fromEvent(subTarget, eventName, options))(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable((subscriber) => {\n const handler = (...args) => subscriber.next(1 < args.length ? args : args[0]);\n add(handler);\n return () => remove(handler);\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return (methodName) => (handler) => target[methodName](eventName, handler);\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformEl,\n allSlides\n } = _ref;\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-browser because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n/** Resolves a string value to a specific direction. */\nfunction _resolveDirectionality(rawValue) {\n const value = rawValue?.toLowerCase() || '';\n if (value === 'auto' && typeof navigator !== 'undefined' && navigator?.language) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDirectionality.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Directionality, deps: [{ token: DIR_DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nDirectionality.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Directionality, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Directionality, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() {\n return this._dir;\n }\n set dir(value) {\n const previousValue = this._dir;\n // Note: `_resolveDirectionality` resolves the language based on the browser's language,\n // whereas the browser does it based on the content of the element. Since doing so based\n // on the content can be expensive, for now we're doing the simpler matching.\n this._dir = _resolveDirectionality(value);\n this._rawDir = value;\n if (previousValue !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() {\n return this.dir;\n }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: Dir, selector: \"[dir]\", inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, host: { properties: { \"attr.dir\": \"_rawDir\" } }, providers: [{ provide: Directionality, useExisting: Dir }], exportAs: [\"dir\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Dir, decorators: [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir',\n }]\n }], propDecorators: { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BidiModule {\n}\nBidiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BidiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBidiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: BidiModule, declarations: [Dir], exports: [Dir] });\nBidiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BidiModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BidiModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n","import * as i0 from '@angular/core';\nimport { Directive, Input, EventEmitter, PLATFORM_ID, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Output, ViewChild, ContentChildren, HostBinding, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { isPlatformBrowser, CommonModule } from '@angular/common';\nimport Swiper from 'swiper';\nimport { Subject, of } from 'rxjs';\n\nfunction isObject(o) {\n return (typeof o === 'object' &&\n o !== null &&\n o.constructor &&\n Object.prototype.toString.call(o).slice(8, -1) === 'Object');\n}\nfunction isEnabled(val) {\n return typeof val !== 'undefined' && typeof val !== 'boolean' && val.enabled === true;\n}\nfunction isShowEl(val, obj, el) {\n return ((coerceBooleanProperty(val) === true && obj && !obj.el) ||\n !(typeof obj !== 'boolean' &&\n obj.el !== (el === null || el === void 0 ? void 0 : el.nativeElement) &&\n (typeof obj.el === 'string' || typeof obj.el === 'object')));\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src)\n .filter((key) => noExtend.indexOf(key) < 0)\n .forEach((key) => {\n if (typeof target[key] === 'undefined') {\n target[key] = src[key];\n return;\n }\n if (target[key] && !src[key]) {\n return;\n }\n if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__)\n target[key] = src[key];\n else\n extend(target[key], src[key]);\n }\n else {\n target[key] = src[key];\n }\n });\n}\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\nconst ignoreNgOnChanges = ['pagination', 'navigation', 'scrollbar', 'virtual'];\nfunction setProperty(val, obj = {}) {\n if (isObject(val)) {\n return val;\n }\n if (coerceBooleanProperty(val) === true) {\n return obj;\n }\n return false;\n}\n\n/* underscore in name -> watch for changes */\nconst paramsList = [\n 'init',\n 'enabled',\n '_direction',\n 'touchEventsTarget',\n 'initialSlide',\n '_speed',\n 'cssMode',\n 'updateOnWindowResize',\n 'resizeObserver',\n 'nested',\n 'focusableElements',\n '_width',\n '_height',\n 'preventInteractionOnTransition',\n 'userAgent',\n 'url',\n '_edgeSwipeDetection',\n '_edgeSwipeThreshold',\n '_freeMode',\n '_autoHeight',\n 'setWrapperSize',\n 'virtualTranslate',\n '_effect',\n 'breakpoints',\n '_spaceBetween',\n '_slidesPerView',\n 'maxBackfaceHiddenSlides',\n '_grid',\n '_slidesPerGroup',\n '_slidesPerGroupSkip',\n '_centeredSlides',\n '_centeredSlidesBounds',\n '_slidesOffsetBefore',\n '_slidesOffsetAfter',\n 'normalizeSlideIndex',\n '_centerInsufficientSlides',\n '_watchOverflow',\n 'roundLengths',\n 'touchRatio',\n 'touchAngle',\n 'simulateTouch',\n '_shortSwipes',\n '_longSwipes',\n 'longSwipesRatio',\n 'longSwipesMs',\n '_followFinger',\n 'allowTouchMove',\n '_threshold',\n 'touchMoveStopPropagation',\n 'touchStartPreventDefault',\n 'touchStartForcePreventDefault',\n 'touchReleaseOnEdges',\n 'uniqueNavElements',\n '_resistance',\n '_resistanceRatio',\n '_watchSlidesProgress',\n '_grabCursor',\n 'preventClicks',\n 'preventClicksPropagation',\n '_slideToClickedSlide',\n '_preloadImages',\n 'updateOnImagesReady',\n '_loop',\n '_loopAdditionalSlides',\n '_loopedSlides',\n '_loopFillGroupWithBlank',\n 'loopPreventsSlide',\n '_rewind',\n '_allowSlidePrev',\n '_allowSlideNext',\n '_swipeHandler',\n '_noSwiping',\n 'noSwipingClass',\n 'noSwipingSelector',\n 'passiveListeners',\n 'containerModifierClass',\n 'slideClass',\n 'slideBlankClass',\n 'slideActiveClass',\n 'slideDuplicateActiveClass',\n 'slideVisibleClass',\n 'slideDuplicateClass',\n 'slideNextClass',\n 'slideDuplicateNextClass',\n 'slidePrevClass',\n 'slideDuplicatePrevClass',\n 'wrapperClass',\n 'runCallbacksOnInit',\n 'observer',\n 'observeParents',\n 'observeSlideChildren',\n // modules\n 'a11y',\n 'autoplay',\n '_controller',\n 'coverflowEffect',\n 'cubeEffect',\n 'fadeEffect',\n 'flipEffect',\n 'creativeEffect',\n 'cardsEffect',\n 'hashNavigation',\n 'history',\n 'keyboard',\n 'lazy',\n 'mousewheel',\n '_navigation',\n '_pagination',\n 'parallax',\n '_scrollbar',\n '_thumbs',\n 'virtual',\n 'zoom',\n 'on',\n];\n\nconst allowedParams = paramsList.map((key) => key.replace(/_/, ''));\nfunction getParams(obj = {}) {\n const params = {\n on: {},\n };\n // const events = {};\n const passedParams = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map((key) => key.replace(/_/, ''));\n Object.keys(obj).forEach((key) => {\n const _key = key.replace(/^_/, '');\n if (allowedParams.indexOf(_key) >= 0) {\n if (isObject(obj[key])) {\n params[_key] = {};\n passedParams[_key] = {};\n extend(params[_key], obj[key]);\n extend(passedParams[_key], obj[key]);\n }\n else {\n params[_key] = obj[key];\n passedParams[_key] = obj[key];\n }\n }\n // else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n // events[`${_key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n // }\n else {\n rest[_key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach((key) => {\n if (params[key] === true)\n params[key] = {};\n if (params[key] === false)\n delete params[key];\n });\n return { params, passedParams, rest };\n}\n\nclass SwiperSlideDirective {\n constructor(template) {\n this.template = template;\n this.class = '';\n this.autoplayDelay = null;\n this.slideData = {\n isActive: false,\n isPrev: false,\n isNext: false,\n isVisible: false,\n isDuplicate: false,\n };\n }\n set ngClass(val) {\n this.class = [this.class || '', val].join(' ');\n }\n set zoom(val) {\n this._zoom = coerceBooleanProperty(val);\n }\n get zoom() {\n return this._zoom;\n }\n get classNames() {\n return this._classNames;\n }\n set classNames(val) {\n if (this._classNames === val) {\n return;\n }\n this._classNames = val;\n this.slideData = {\n isActive: this._hasClass(['swiper-slide-active', 'swiper-slide-duplicate-active']),\n isVisible: this._hasClass(['swiper-slide-visible']),\n isDuplicate: this._hasClass(['swiper-slide-duplicate']),\n isPrev: this._hasClass(['swiper-slide-prev', 'swiper-slide-duplicate-prev']),\n isNext: this._hasClass(['swiper-slide-next', 'swiper-slide-duplicate-next']),\n };\n }\n _hasClass(classNames) {\n return classNames.some((className) => this._classNames.indexOf(className) >= 0);\n }\n}\nSwiperSlideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperSlideDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nSwiperSlideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.11\", type: SwiperSlideDirective, selector: \"ng-template[swiperSlide]\", inputs: { virtualIndex: \"virtualIndex\", class: \"class\", ngClass: \"ngClass\", autoplayDelay: [\"data-swiper-autoplay\", \"autoplayDelay\"], zoom: \"zoom\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperSlideDirective, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[swiperSlide]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { virtualIndex: [{\n type: Input\n }], class: [{\n type: Input\n }], ngClass: [{\n type: Input\n }], autoplayDelay: [{\n type: Input,\n args: ['data-swiper-autoplay']\n }], zoom: [{\n type: Input\n }] } });\n\nclass SwiperComponent {\n constructor(_ngZone, elementRef, _changeDetectorRef, _platformId) {\n this._ngZone = _ngZone;\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._platformId = _platformId;\n this.slideClass = 'swiper-slide';\n this.wrapperClass = 'swiper-wrapper';\n this.showNavigation = true;\n this.showPagination = true;\n this.showScrollbar = true;\n this.s__beforeBreakpoint = new EventEmitter();\n this.s__containerClasses = new EventEmitter();\n this.s__slideClass = new EventEmitter();\n this.s__swiper = new EventEmitter();\n this.s_activeIndexChange = new EventEmitter();\n this.s_afterInit = new EventEmitter();\n this.s_autoplay = new EventEmitter();\n this.s_autoplayStart = new EventEmitter();\n this.s_autoplayStop = new EventEmitter();\n this.s_autoplayPause = new EventEmitter();\n this.s_autoplayResume = new EventEmitter();\n this.s_beforeDestroy = new EventEmitter();\n this.s_beforeInit = new EventEmitter();\n this.s_beforeLoopFix = new EventEmitter();\n this.s_beforeResize = new EventEmitter();\n this.s_beforeSlideChangeStart = new EventEmitter();\n this.s_beforeTransitionStart = new EventEmitter();\n this.s_breakpoint = new EventEmitter();\n this.s_changeDirection = new EventEmitter();\n this.s_click = new EventEmitter();\n this.s_doubleTap = new EventEmitter();\n this.s_doubleClick = new EventEmitter();\n this.s_destroy = new EventEmitter();\n this.s_fromEdge = new EventEmitter();\n this.s_hashChange = new EventEmitter();\n this.s_hashSet = new EventEmitter();\n this.s_imagesReady = new EventEmitter();\n this.s_init = new EventEmitter();\n this.s_keyPress = new EventEmitter();\n this.s_lazyImageLoad = new EventEmitter();\n this.s_lazyImageReady = new EventEmitter();\n this.s_loopFix = new EventEmitter();\n this.s_momentumBounce = new EventEmitter();\n this.s_navigationHide = new EventEmitter();\n this.s_navigationShow = new EventEmitter();\n this.s_observerUpdate = new EventEmitter();\n this.s_orientationchange = new EventEmitter();\n this.s_paginationHide = new EventEmitter();\n this.s_paginationRender = new EventEmitter();\n this.s_paginationShow = new EventEmitter();\n this.s_paginationUpdate = new EventEmitter();\n this.s_progress = new EventEmitter();\n this.s_reachBeginning = new EventEmitter();\n this.s_reachEnd = new EventEmitter();\n this.s_realIndexChange = new EventEmitter();\n this.s_resize = new EventEmitter();\n this.s_scroll = new EventEmitter();\n this.s_scrollbarDragEnd = new EventEmitter();\n this.s_scrollbarDragMove = new EventEmitter();\n this.s_scrollbarDragStart = new EventEmitter();\n this.s_setTransition = new EventEmitter();\n this.s_setTranslate = new EventEmitter();\n this.s_slideChange = new EventEmitter();\n this.s_slideChangeTransitionEnd = new EventEmitter();\n this.s_slideChangeTransitionStart = new EventEmitter();\n this.s_slideNextTransitionEnd = new EventEmitter();\n this.s_slideNextTransitionStart = new EventEmitter();\n this.s_slidePrevTransitionEnd = new EventEmitter();\n this.s_slidePrevTransitionStart = new EventEmitter();\n this.s_slideResetTransitionStart = new EventEmitter();\n this.s_slideResetTransitionEnd = new EventEmitter();\n this.s_sliderMove = new EventEmitter();\n this.s_sliderFirstMove = new EventEmitter();\n this.s_slidesLengthChange = new EventEmitter();\n this.s_slidesGridLengthChange = new EventEmitter();\n this.s_snapGridLengthChange = new EventEmitter();\n this.s_snapIndexChange = new EventEmitter();\n this.s_tap = new EventEmitter();\n this.s_toEdge = new EventEmitter();\n this.s_touchEnd = new EventEmitter();\n this.s_touchMove = new EventEmitter();\n this.s_touchMoveOpposite = new EventEmitter();\n this.s_touchStart = new EventEmitter();\n this.s_transitionEnd = new EventEmitter();\n this.s_transitionStart = new EventEmitter();\n this.s_update = new EventEmitter();\n this.s_zoomChange = new EventEmitter();\n this.s_swiper = new EventEmitter();\n this.s_lock = new EventEmitter();\n this.s_unlock = new EventEmitter();\n this._activeSlides = new Subject();\n this.containerClasses = 'swiper';\n this.slidesChanges = (val) => {\n this.slides = val.map((slide, index) => {\n slide.slideIndex = index;\n slide.classNames = this.slideClass || '';\n return slide;\n });\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n if (!this.virtual) {\n if (this.loopedSlides) {\n this.prependSlides = of(this.slides.slice(this.slides.length - this.loopedSlides));\n this.appendSlides = of(this.slides.slice(0, this.loopedSlides));\n }\n }\n else if (this.swiperRef && this.swiperRef.virtual) {\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.virtual.slides = this.slides;\n this.swiperRef.virtual.update(true);\n });\n }\n this._changeDetectorRef.detectChanges();\n };\n this.style = null;\n this.updateVirtualSlides = (virtualData) => {\n // TODO: type virtualData\n if (!this.swiperRef ||\n (this.currentVirtualData &&\n this.currentVirtualData.from === virtualData.from &&\n this.currentVirtualData.to === virtualData.to &&\n this.currentVirtualData.offset === virtualData.offset)) {\n return;\n }\n this.style = this.swiperRef.isHorizontal()\n ? {\n [this.swiperRef.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`,\n }\n : {\n top: `${virtualData.offset}px`,\n };\n this.currentVirtualData = virtualData;\n this._activeSlides.next(virtualData.slides);\n this._ngZone.run(() => {\n this._changeDetectorRef.detectChanges();\n });\n this._ngZone.runOutsideAngular(() => {\n this.swiperRef.updateSlides();\n this.swiperRef.updateProgress();\n this.swiperRef.updateSlidesClasses();\n if (isEnabled(this.swiperRef.params.lazy)) {\n this.swiperRef.lazy.load();\n }\n this.swiperRef.virtual.update(true);\n });\n return;\n };\n }\n set navigation(val) {\n var _a, _b, _c;\n const currentNext = typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? (_a = this._navigation) === null || _a === void 0 ? void 0 : _a.nextEl\n : null;\n const currentPrev = typeof this._navigation !== 'boolean' && this._navigation !== ''\n ? (_b = this._navigation) === null || _b === void 0 ? void 0 : _b.prevEl\n : null;\n this._navigation = setProperty(val, {\n nextEl: currentNext || null,\n prevEl: currentPrev || null,\n });\n this.showNavigation = !(coerceBooleanProperty(val) !== true ||\n (this._navigation &&\n typeof this._navigation !== 'boolean' &&\n this._navigation.prevEl !== ((_c = this._prevElRef) === null || _c === void 0 ? void 0 : _c.nativeElement) &&\n (this._navigation.prevEl !== null || this._navigation.nextEl !== null) &&\n (typeof this._navigation.nextEl === 'string' ||\n typeof this._navigation.prevEl === 'string' ||\n typeof this._navigation.nextEl === 'object' ||\n typeof this._navigation.prevEl === 'object')));\n }\n get navigation() {\n return this._navigation;\n }\n set pagination(val) {\n var _a;\n const current = typeof this._pagination !== 'boolean' && this._pagination !== ''\n ? (_a = this._pagination) === null || _a === void 0 ? void 0 : _a.el\n : null;\n this._pagination = setProperty(val, {\n el: current || null,\n });\n this.showPagination = isShowEl(val, this._pagination, this._paginationElRef);\n }\n get pagination() {\n return this._pagination;\n }\n set scrollbar(val) {\n var _a;\n const current = typeof this._scrollbar !== 'boolean' && this._scrollbar !== '' ? (_a = this._scrollbar) === null || _a === void 0 ? void 0 : _a.el : null;\n this._scrollbar = setProperty(val, {\n el: current || null,\n });\n this.showScrollbar = isShowEl(val, this._scrollbar, this._scrollbarElRef);\n }\n get scrollbar() {\n return this._scrollbar;\n }\n set virtual(val) {\n this._virtual = setProperty(val);\n }\n get virtual() {\n return this._virtual;\n }\n set config(val) {\n this.updateSwiper(val);\n const { params } = getParams(val);\n Object.assign(this, params);\n }\n set prevElRef(el) {\n this._prevElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'prevEl');\n }\n set nextElRef(el) {\n this._nextElRef = el;\n this._setElement(el, this.navigation, 'navigation', 'nextEl');\n }\n set scrollbarElRef(el) {\n this._scrollbarElRef = el;\n this._setElement(el, this.scrollbar, 'scrollbar');\n }\n set paginationElRef(el) {\n this._paginationElRef = el;\n this._setElement(el, this.pagination, 'pagination');\n }\n get activeSlides() {\n if (this.virtual) {\n return this._activeSlides;\n }\n return of(this.slides);\n }\n get zoomContainerClass() {\n return this.zoom && typeof this.zoom !== 'boolean'\n ? this.zoom.containerClass\n : 'swiper-zoom-container';\n }\n _setElement(el, ref, update, key = 'el') {\n if (!ref || !el)\n return;\n if (el.nativeElement) {\n if (ref[key] === el.nativeElement) {\n return;\n }\n ref[key] = el.nativeElement;\n }\n const updateObj = {};\n updateObj[update] = true;\n this.updateInitSwiper(updateObj);\n }\n ngOnInit() {\n const { params } = getParams(this);\n Object.assign(this, params);\n }\n ngAfterViewInit() {\n this.childrenSlidesInit();\n this.initSwiper();\n this._changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.s_swiper.emit(this.swiperRef);\n });\n }\n childrenSlidesInit() {\n this.slidesChanges(this.slidesEl);\n this.slidesEl.changes.subscribe(this.slidesChanges);\n }\n get isSwiperActive() {\n return this.swiperRef && !this.swiperRef.destroyed;\n }\n initSwiper() {\n const { params: swiperParams, passedParams } = getParams(this);\n Object.assign(this, swiperParams);\n this._ngZone.runOutsideAngular(() => {\n swiperParams.init = false;\n if (!swiperParams.virtual) {\n swiperParams.observer = true;\n }\n swiperParams.onAny = (eventName, ...args) => {\n const emitter = this[('s_' + eventName)];\n if (emitter) {\n emitter.emit([...args]);\n }\n };\n const _slideClasses = (_, updated) => {\n updated.forEach(({ slideEl, classNames }, index) => {\n const dataIndex = slideEl.getAttribute('data-swiper-slide-index');\n const slideIndex = dataIndex ? parseInt(dataIndex) : index;\n if (this.virtual) {\n const virtualSlide = this.slides.find((item) => {\n return item.virtualIndex && item.virtualIndex === slideIndex;\n });\n if (virtualSlide) {\n virtualSlide.classNames = classNames;\n return;\n }\n }\n if (this.slides[slideIndex]) {\n this.slides[slideIndex].classNames = classNames;\n }\n });\n this._changeDetectorRef.detectChanges();\n };\n const _containerClasses = (_, classes) => {\n setTimeout(() => {\n this.containerClasses = classes;\n });\n };\n Object.assign(swiperParams.on, {\n _containerClasses,\n _slideClasses,\n });\n const swiperRef = new Swiper(swiperParams);\n swiperRef.loopCreate = () => { };\n swiperRef.loopDestroy = () => { };\n if (swiperParams.loop) {\n swiperRef.loopedSlides = this.loopedSlides;\n }\n const isVirtualEnabled = isEnabled(swiperRef.params.virtual);\n if (swiperRef.virtual && isVirtualEnabled) {\n swiperRef.virtual.slides = this.slides;\n const extendWith = {\n cache: false,\n slides: this.slides,\n renderExternal: this.updateVirtualSlides,\n renderExternalUpdate: false,\n };\n extend(swiperRef.params.virtual, extendWith);\n extend(swiperRef.originalParams.virtual, extendWith);\n }\n if (isPlatformBrowser(this._platformId)) {\n this.swiperRef = swiperRef.init(this.elementRef.nativeElement);\n const isVirtualEnabled = isEnabled(this.swiperRef.params.virtual);\n if (this.swiperRef.virtual && isVirtualEnabled) {\n this.swiperRef.virtual.update(true);\n }\n this._changeDetectorRef.detectChanges();\n }\n });\n }\n ngOnChanges(changedParams) {\n this.updateSwiper(changedParams);\n this._changeDetectorRef.detectChanges();\n }\n updateInitSwiper(changedParams) {\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n this._ngZone.runOutsideAngular(() => {\n const { params: currentParams, pagination, navigation, scrollbar, virtual, thumbs, } = this.swiperRef;\n if (changedParams.pagination) {\n if (this.pagination &&\n typeof this.pagination !== 'boolean' &&\n this.pagination.el &&\n pagination &&\n !pagination.el) {\n this.updateParameter('pagination', this.pagination);\n pagination.init();\n pagination.render();\n pagination.update();\n }\n else {\n pagination.destroy();\n pagination.el = null;\n }\n }\n if (changedParams.scrollbar) {\n if (this.scrollbar &&\n typeof this.scrollbar !== 'boolean' &&\n this.scrollbar.el &&\n scrollbar &&\n !scrollbar.el) {\n this.updateParameter('scrollbar', this.scrollbar);\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n else {\n scrollbar.destroy();\n scrollbar.el = null;\n }\n }\n if (changedParams.navigation) {\n if (this.navigation &&\n typeof this.navigation !== 'boolean' &&\n this.navigation.prevEl &&\n this.navigation.nextEl &&\n navigation &&\n !navigation.prevEl &&\n !navigation.nextEl) {\n this.updateParameter('navigation', this.navigation);\n navigation.init();\n navigation.update();\n }\n else if (navigation.prevEl && navigation.nextEl) {\n navigation.destroy();\n navigation.nextEl = null;\n navigation.prevEl = null;\n }\n }\n if (changedParams.thumbs && this.thumbs && this.thumbs.swiper) {\n this.updateParameter('thumbs', this.thumbs);\n const initialized = thumbs.init();\n if (initialized)\n thumbs.update(true);\n }\n if (changedParams.controller && this.controller && this.controller.control) {\n this.swiperRef.controller.control = this.controller.control;\n }\n this.swiperRef.update();\n });\n }\n updateSwiper(changedParams) {\n this._ngZone.runOutsideAngular(() => {\n var _a, _b;\n if (changedParams.config) {\n return;\n }\n if (!(changedParams && this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n for (const key in changedParams) {\n if (ignoreNgOnChanges.indexOf(key) >= 0) {\n continue;\n }\n const newValue = (_b = (_a = changedParams[key]) === null || _a === void 0 ? void 0 : _a.currentValue) !== null && _b !== void 0 ? _b : changedParams[key];\n this.updateParameter(key, newValue);\n }\n if (changedParams.allowSlideNext) {\n this.swiperRef.allowSlideNext = this.allowSlideNext;\n }\n if (changedParams.allowSlidePrev) {\n this.swiperRef.allowSlidePrev = this.allowSlidePrev;\n }\n if (changedParams.direction) {\n this.swiperRef.changeDirection(this.direction, false);\n }\n if (changedParams.breakpoints) {\n if (this.loop && !this.loopedSlides) {\n this.calcLoopedSlides();\n }\n this.swiperRef.currentBreakpoint = null;\n this.swiperRef.setBreakpoint();\n }\n if (changedParams.thumbs || changedParams.controller) {\n this.updateInitSwiper(changedParams);\n }\n this.swiperRef.update();\n });\n }\n calcLoopedSlides() {\n if (!this.loop) {\n return false;\n }\n let slidesPerViewParams = this.slidesPerView;\n if (this.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(this.breakpoints);\n const breakpointOnlyParams = breakpoint in this.breakpoints ? this.breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n if (slidesPerViewParams === 'auto') {\n this.loopedSlides = this.slides.length;\n return this.slides.length;\n }\n let loopedSlides = this.loopedSlides || slidesPerViewParams;\n if (!loopedSlides) {\n // ?\n return false;\n }\n if (this.loopAdditionalSlides) {\n loopedSlides += this.loopAdditionalSlides;\n }\n if (loopedSlides > this.slides.length) {\n loopedSlides = this.slides.length;\n }\n this.loopedSlides = loopedSlides;\n return true;\n }\n updateParameter(key, value) {\n if (!(this.swiperRef && !this.swiperRef.destroyed)) {\n return;\n }\n const _key = key.replace(/^_/, '');\n const isCurrentParamObj = isObject(this.swiperRef.params[_key]);\n if (_key === 'enabled') {\n if (value === true) {\n this.swiperRef.enable();\n }\n else if (value === false) {\n this.swiperRef.disable();\n }\n return;\n }\n if (isCurrentParamObj && isObject(value)) {\n extend(this.swiperRef.params[_key], value);\n }\n else {\n this.swiperRef.params[_key] = value;\n }\n }\n ngOnDestroy() {\n this._ngZone.runOutsideAngular(() => {\n var _a;\n (_a = this.swiperRef) === null || _a === void 0 ? void 0 : _a.destroy(true, false);\n });\n }\n}\nSwiperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });\nSwiperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.11\", type: SwiperComponent, selector: \"swiper, [swiper]\", inputs: { enabled: \"enabled\", on: \"on\", direction: \"direction\", touchEventsTarget: \"touchEventsTarget\", initialSlide: \"initialSlide\", speed: \"speed\", cssMode: \"cssMode\", updateOnWindowResize: \"updateOnWindowResize\", resizeObserver: \"resizeObserver\", nested: \"nested\", focusableElements: \"focusableElements\", width: \"width\", height: \"height\", preventInteractionOnTransition: \"preventInteractionOnTransition\", userAgent: \"userAgent\", url: \"url\", edgeSwipeDetection: \"edgeSwipeDetection\", edgeSwipeThreshold: \"edgeSwipeThreshold\", freeMode: \"freeMode\", autoHeight: \"autoHeight\", setWrapperSize: \"setWrapperSize\", virtualTranslate: \"virtualTranslate\", effect: \"effect\", breakpoints: \"breakpoints\", spaceBetween: \"spaceBetween\", slidesPerView: \"slidesPerView\", maxBackfaceHiddenSlides: \"maxBackfaceHiddenSlides\", grid: \"grid\", slidesPerGroup: \"slidesPerGroup\", slidesPerGroupSkip: \"slidesPerGroupSkip\", centeredSlides: \"centeredSlides\", centeredSlidesBounds: \"centeredSlidesBounds\", slidesOffsetBefore: \"slidesOffsetBefore\", slidesOffsetAfter: \"slidesOffsetAfter\", normalizeSlideIndex: \"normalizeSlideIndex\", centerInsufficientSlides: \"centerInsufficientSlides\", watchOverflow: \"watchOverflow\", roundLengths: \"roundLengths\", touchRatio: \"touchRatio\", touchAngle: \"touchAngle\", simulateTouch: \"simulateTouch\", shortSwipes: \"shortSwipes\", longSwipes: \"longSwipes\", longSwipesRatio: \"longSwipesRatio\", longSwipesMs: \"longSwipesMs\", followFinger: \"followFinger\", allowTouchMove: \"allowTouchMove\", threshold: \"threshold\", touchMoveStopPropagation: \"touchMoveStopPropagation\", touchStartPreventDefault: \"touchStartPreventDefault\", touchStartForcePreventDefault: \"touchStartForcePreventDefault\", touchReleaseOnEdges: \"touchReleaseOnEdges\", uniqueNavElements: \"uniqueNavElements\", resistance: \"resistance\", resistanceRatio: \"resistanceRatio\", watchSlidesProgress: \"watchSlidesProgress\", grabCursor: \"grabCursor\", preventClicks: \"preventClicks\", preventClicksPropagation: \"preventClicksPropagation\", slideToClickedSlide: \"slideToClickedSlide\", preloadImages: \"preloadImages\", updateOnImagesReady: \"updateOnImagesReady\", loop: \"loop\", loopAdditionalSlides: \"loopAdditionalSlides\", loopedSlides: \"loopedSlides\", loopFillGroupWithBlank: \"loopFillGroupWithBlank\", loopPreventsSlide: \"loopPreventsSlide\", rewind: \"rewind\", allowSlidePrev: \"allowSlidePrev\", allowSlideNext: \"allowSlideNext\", swipeHandler: \"swipeHandler\", noSwiping: \"noSwiping\", noSwipingClass: \"noSwipingClass\", noSwipingSelector: \"noSwipingSelector\", passiveListeners: \"passiveListeners\", containerModifierClass: \"containerModifierClass\", slideClass: \"slideClass\", slideBlankClass: \"slideBlankClass\", slideActiveClass: \"slideActiveClass\", slideDuplicateActiveClass: \"slideDuplicateActiveClass\", slideVisibleClass: \"slideVisibleClass\", slideDuplicateClass: \"slideDuplicateClass\", slideNextClass: \"slideNextClass\", slideDuplicateNextClass: \"slideDuplicateNextClass\", slidePrevClass: \"slidePrevClass\", slideDuplicatePrevClass: \"slideDuplicatePrevClass\", wrapperClass: \"wrapperClass\", runCallbacksOnInit: \"runCallbacksOnInit\", observeParents: \"observeParents\", observeSlideChildren: \"observeSlideChildren\", a11y: \"a11y\", autoplay: \"autoplay\", controller: \"controller\", coverflowEffect: \"coverflowEffect\", cubeEffect: \"cubeEffect\", fadeEffect: \"fadeEffect\", flipEffect: \"flipEffect\", creativeEffect: \"creativeEffect\", cardsEffect: \"cardsEffect\", hashNavigation: \"hashNavigation\", history: \"history\", keyboard: \"keyboard\", lazy: \"lazy\", mousewheel: \"mousewheel\", parallax: \"parallax\", thumbs: \"thumbs\", zoom: \"zoom\", class: \"class\", id: \"id\", navigation: \"navigation\", pagination: \"pagination\", scrollbar: \"scrollbar\", virtual: \"virtual\", config: \"config\" }, outputs: { s__beforeBreakpoint: \"_beforeBreakpoint\", s__containerClasses: \"_containerClasses\", s__slideClass: \"_slideClass\", s__swiper: \"_swiper\", s_activeIndexChange: \"activeIndexChange\", s_afterInit: \"afterInit\", s_autoplay: \"autoplay\", s_autoplayStart: \"autoplayStart\", s_autoplayStop: \"autoplayStop\", s_autoplayPause: \"autoplayPause\", s_autoplayResume: \"autoplayResume\", s_beforeDestroy: \"beforeDestroy\", s_beforeInit: \"beforeInit\", s_beforeLoopFix: \"beforeLoopFix\", s_beforeResize: \"beforeResize\", s_beforeSlideChangeStart: \"beforeSlideChangeStart\", s_beforeTransitionStart: \"beforeTransitionStart\", s_breakpoint: \"breakpoint\", s_changeDirection: \"changeDirection\", s_click: \"click\", s_doubleTap: \"doubleTap\", s_doubleClick: \"doubleClick\", s_destroy: \"destroy\", s_fromEdge: \"fromEdge\", s_hashChange: \"hashChange\", s_hashSet: \"hashSet\", s_imagesReady: \"imagesReady\", s_init: \"init\", s_keyPress: \"keyPress\", s_lazyImageLoad: \"lazyImageLoad\", s_lazyImageReady: \"lazyImageReady\", s_loopFix: \"loopFix\", s_momentumBounce: \"momentumBounce\", s_navigationHide: \"navigationHide\", s_navigationShow: \"navigationShow\", s_observerUpdate: \"observerUpdate\", s_orientationchange: \"orientationchange\", s_paginationHide: \"paginationHide\", s_paginationRender: \"paginationRender\", s_paginationShow: \"paginationShow\", s_paginationUpdate: \"paginationUpdate\", s_progress: \"progress\", s_reachBeginning: \"reachBeginning\", s_reachEnd: \"reachEnd\", s_realIndexChange: \"realIndexChange\", s_resize: \"resize\", s_scroll: \"scroll\", s_scrollbarDragEnd: \"scrollbarDragEnd\", s_scrollbarDragMove: \"scrollbarDragMove\", s_scrollbarDragStart: \"scrollbarDragStart\", s_setTransition: \"setTransition\", s_setTranslate: \"setTranslate\", s_slideChange: \"slideChange\", s_slideChangeTransitionEnd: \"slideChangeTransitionEnd\", s_slideChangeTransitionStart: \"slideChangeTransitionStart\", s_slideNextTransitionEnd: \"slideNextTransitionEnd\", s_slideNextTransitionStart: \"slideNextTransitionStart\", s_slidePrevTransitionEnd: \"slidePrevTransitionEnd\", s_slidePrevTransitionStart: \"slidePrevTransitionStart\", s_slideResetTransitionStart: \"slideResetTransitionStart\", s_slideResetTransitionEnd: \"slideResetTransitionEnd\", s_sliderMove: \"sliderMove\", s_sliderFirstMove: \"sliderFirstMove\", s_slidesLengthChange: \"slidesLengthChange\", s_slidesGridLengthChange: \"slidesGridLengthChange\", s_snapGridLengthChange: \"snapGridLengthChange\", s_snapIndexChange: \"snapIndexChange\", s_tap: \"tap\", s_toEdge: \"toEdge\", s_touchEnd: \"touchEnd\", s_touchMove: \"touchMove\", s_touchMoveOpposite: \"touchMoveOpposite\", s_touchStart: \"touchStart\", s_transitionEnd: \"transitionEnd\", s_transitionStart: \"transitionStart\", s_update: \"update\", s_zoomChange: \"zoomChange\", s_swiper: \"swiper\", s_lock: \"lock\", s_unlock: \"unlock\" }, host: { properties: { \"class\": \"this.containerClasses\" } }, queries: [{ propertyName: \"slidesEl\", predicate: SwiperSlideDirective }], viewQueries: [{ propertyName: \"prevElRef\", first: true, predicate: [\"prevElRef\"], descendants: true }, { propertyName: \"nextElRef\", first: true, predicate: [\"nextElRef\"], descendants: true }, { propertyName: \"scrollbarElRef\", first: true, predicate: [\"scrollbarElRef\"], descendants: true }, { propertyName: \"paginationElRef\", first: true, predicate: [\"paginationElRef\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n
\\n\\n\\n\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n\\n\", styles: [\"swiper{display:block}\\n\"], directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i1.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { type: i1.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }], pipes: { \"async\": i1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperComponent, decorators: [{\n type: Component,\n args: [{ selector: 'swiper, [swiper]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\n `\n swiper {\n display: block;\n }\n `,\n ], template: \"\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n
\\n\\n\\n\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n\\n\" }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\n }, propDecorators: { enabled: [{\n type: Input\n }], on: [{\n type: Input\n }], direction: [{\n type: Input\n }], touchEventsTarget: [{\n type: Input\n }], initialSlide: [{\n type: Input\n }], speed: [{\n type: Input\n }], cssMode: [{\n type: Input\n }], updateOnWindowResize: [{\n type: Input\n }], resizeObserver: [{\n type: Input\n }], nested: [{\n type: Input\n }], focusableElements: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], preventInteractionOnTransition: [{\n type: Input\n }], userAgent: [{\n type: Input\n }], url: [{\n type: Input\n }], edgeSwipeDetection: [{\n type: Input\n }], edgeSwipeThreshold: [{\n type: Input\n }], freeMode: [{\n type: Input\n }], autoHeight: [{\n type: Input\n }], setWrapperSize: [{\n type: Input\n }], virtualTranslate: [{\n type: Input\n }], effect: [{\n type: Input\n }], breakpoints: [{\n type: Input\n }], spaceBetween: [{\n type: Input\n }], slidesPerView: [{\n type: Input\n }], maxBackfaceHiddenSlides: [{\n type: Input\n }], grid: [{\n type: Input\n }], slidesPerGroup: [{\n type: Input\n }], slidesPerGroupSkip: [{\n type: Input\n }], centeredSlides: [{\n type: Input\n }], centeredSlidesBounds: [{\n type: Input\n }], slidesOffsetBefore: [{\n type: Input\n }], slidesOffsetAfter: [{\n type: Input\n }], normalizeSlideIndex: [{\n type: Input\n }], centerInsufficientSlides: [{\n type: Input\n }], watchOverflow: [{\n type: Input\n }], roundLengths: [{\n type: Input\n }], touchRatio: [{\n type: Input\n }], touchAngle: [{\n type: Input\n }], simulateTouch: [{\n type: Input\n }], shortSwipes: [{\n type: Input\n }], longSwipes: [{\n type: Input\n }], longSwipesRatio: [{\n type: Input\n }], longSwipesMs: [{\n type: Input\n }], followFinger: [{\n type: Input\n }], allowTouchMove: [{\n type: Input\n }], threshold: [{\n type: Input\n }], touchMoveStopPropagation: [{\n type: Input\n }], touchStartPreventDefault: [{\n type: Input\n }], touchStartForcePreventDefault: [{\n type: Input\n }], touchReleaseOnEdges: [{\n type: Input\n }], uniqueNavElements: [{\n type: Input\n }], resistance: [{\n type: Input\n }], resistanceRatio: [{\n type: Input\n }], watchSlidesProgress: [{\n type: Input\n }], grabCursor: [{\n type: Input\n }], preventClicks: [{\n type: Input\n }], preventClicksPropagation: [{\n type: Input\n }], slideToClickedSlide: [{\n type: Input\n }], preloadImages: [{\n type: Input\n }], updateOnImagesReady: [{\n type: Input\n }], loop: [{\n type: Input\n }], loopAdditionalSlides: [{\n type: Input\n }], loopedSlides: [{\n type: Input\n }], loopFillGroupWithBlank: [{\n type: Input\n }], loopPreventsSlide: [{\n type: Input\n }], rewind: [{\n type: Input\n }], allowSlidePrev: [{\n type: Input\n }], allowSlideNext: [{\n type: Input\n }], swipeHandler: [{\n type: Input\n }], noSwiping: [{\n type: Input\n }], noSwipingClass: [{\n type: Input\n }], noSwipingSelector: [{\n type: Input\n }], passiveListeners: [{\n type: Input\n }], containerModifierClass: [{\n type: Input\n }], slideClass: [{\n type: Input\n }], slideBlankClass: [{\n type: Input\n }], slideActiveClass: [{\n type: Input\n }], slideDuplicateActiveClass: [{\n type: Input\n }], slideVisibleClass: [{\n type: Input\n }], slideDuplicateClass: [{\n type: Input\n }], slideNextClass: [{\n type: Input\n }], slideDuplicateNextClass: [{\n type: Input\n }], slidePrevClass: [{\n type: Input\n }], slideDuplicatePrevClass: [{\n type: Input\n }], wrapperClass: [{\n type: Input\n }], runCallbacksOnInit: [{\n type: Input\n }], observeParents: [{\n type: Input\n }], observeSlideChildren: [{\n type: Input\n }], a11y: [{\n type: Input\n }], autoplay: [{\n type: Input\n }], controller: [{\n type: Input\n }], coverflowEffect: [{\n type: Input\n }], cubeEffect: [{\n type: Input\n }], fadeEffect: [{\n type: Input\n }], flipEffect: [{\n type: Input\n }], creativeEffect: [{\n type: Input\n }], cardsEffect: [{\n type: Input\n }], hashNavigation: [{\n type: Input\n }], history: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], lazy: [{\n type: Input\n }], mousewheel: [{\n type: Input\n }], parallax: [{\n type: Input\n }], thumbs: [{\n type: Input\n }], zoom: [{\n type: Input\n }], class: [{\n type: Input\n }], id: [{\n type: Input\n }], navigation: [{\n type: Input\n }], pagination: [{\n type: Input\n }], scrollbar: [{\n type: Input\n }], virtual: [{\n type: Input\n }], config: [{\n type: Input\n }], s__beforeBreakpoint: [{\n type: Output,\n args: ['_beforeBreakpoint']\n }], s__containerClasses: [{\n type: Output,\n args: ['_containerClasses']\n }], s__slideClass: [{\n type: Output,\n args: ['_slideClass']\n }], s__swiper: [{\n type: Output,\n args: ['_swiper']\n }], s_activeIndexChange: [{\n type: Output,\n args: ['activeIndexChange']\n }], s_afterInit: [{\n type: Output,\n args: ['afterInit']\n }], s_autoplay: [{\n type: Output,\n args: ['autoplay']\n }], s_autoplayStart: [{\n type: Output,\n args: ['autoplayStart']\n }], s_autoplayStop: [{\n type: Output,\n args: ['autoplayStop']\n }], s_autoplayPause: [{\n type: Output,\n args: ['autoplayPause']\n }], s_autoplayResume: [{\n type: Output,\n args: ['autoplayResume']\n }], s_beforeDestroy: [{\n type: Output,\n args: ['beforeDestroy']\n }], s_beforeInit: [{\n type: Output,\n args: ['beforeInit']\n }], s_beforeLoopFix: [{\n type: Output,\n args: ['beforeLoopFix']\n }], s_beforeResize: [{\n type: Output,\n args: ['beforeResize']\n }], s_beforeSlideChangeStart: [{\n type: Output,\n args: ['beforeSlideChangeStart']\n }], s_beforeTransitionStart: [{\n type: Output,\n args: ['beforeTransitionStart']\n }], s_breakpoint: [{\n type: Output,\n args: ['breakpoint']\n }], s_changeDirection: [{\n type: Output,\n args: ['changeDirection']\n }], s_click: [{\n type: Output,\n args: ['click']\n }], s_doubleTap: [{\n type: Output,\n args: ['doubleTap']\n }], s_doubleClick: [{\n type: Output,\n args: ['doubleClick']\n }], s_destroy: [{\n type: Output,\n args: ['destroy']\n }], s_fromEdge: [{\n type: Output,\n args: ['fromEdge']\n }], s_hashChange: [{\n type: Output,\n args: ['hashChange']\n }], s_hashSet: [{\n type: Output,\n args: ['hashSet']\n }], s_imagesReady: [{\n type: Output,\n args: ['imagesReady']\n }], s_init: [{\n type: Output,\n args: ['init']\n }], s_keyPress: [{\n type: Output,\n args: ['keyPress']\n }], s_lazyImageLoad: [{\n type: Output,\n args: ['lazyImageLoad']\n }], s_lazyImageReady: [{\n type: Output,\n args: ['lazyImageReady']\n }], s_loopFix: [{\n type: Output,\n args: ['loopFix']\n }], s_momentumBounce: [{\n type: Output,\n args: ['momentumBounce']\n }], s_navigationHide: [{\n type: Output,\n args: ['navigationHide']\n }], s_navigationShow: [{\n type: Output,\n args: ['navigationShow']\n }], s_observerUpdate: [{\n type: Output,\n args: ['observerUpdate']\n }], s_orientationchange: [{\n type: Output,\n args: ['orientationchange']\n }], s_paginationHide: [{\n type: Output,\n args: ['paginationHide']\n }], s_paginationRender: [{\n type: Output,\n args: ['paginationRender']\n }], s_paginationShow: [{\n type: Output,\n args: ['paginationShow']\n }], s_paginationUpdate: [{\n type: Output,\n args: ['paginationUpdate']\n }], s_progress: [{\n type: Output,\n args: ['progress']\n }], s_reachBeginning: [{\n type: Output,\n args: ['reachBeginning']\n }], s_reachEnd: [{\n type: Output,\n args: ['reachEnd']\n }], s_realIndexChange: [{\n type: Output,\n args: ['realIndexChange']\n }], s_resize: [{\n type: Output,\n args: ['resize']\n }], s_scroll: [{\n type: Output,\n args: ['scroll']\n }], s_scrollbarDragEnd: [{\n type: Output,\n args: ['scrollbarDragEnd']\n }], s_scrollbarDragMove: [{\n type: Output,\n args: ['scrollbarDragMove']\n }], s_scrollbarDragStart: [{\n type: Output,\n args: ['scrollbarDragStart']\n }], s_setTransition: [{\n type: Output,\n args: ['setTransition']\n }], s_setTranslate: [{\n type: Output,\n args: ['setTranslate']\n }], s_slideChange: [{\n type: Output,\n args: ['slideChange']\n }], s_slideChangeTransitionEnd: [{\n type: Output,\n args: ['slideChangeTransitionEnd']\n }], s_slideChangeTransitionStart: [{\n type: Output,\n args: ['slideChangeTransitionStart']\n }], s_slideNextTransitionEnd: [{\n type: Output,\n args: ['slideNextTransitionEnd']\n }], s_slideNextTransitionStart: [{\n type: Output,\n args: ['slideNextTransitionStart']\n }], s_slidePrevTransitionEnd: [{\n type: Output,\n args: ['slidePrevTransitionEnd']\n }], s_slidePrevTransitionStart: [{\n type: Output,\n args: ['slidePrevTransitionStart']\n }], s_slideResetTransitionStart: [{\n type: Output,\n args: ['slideResetTransitionStart']\n }], s_slideResetTransitionEnd: [{\n type: Output,\n args: ['slideResetTransitionEnd']\n }], s_sliderMove: [{\n type: Output,\n args: ['sliderMove']\n }], s_sliderFirstMove: [{\n type: Output,\n args: ['sliderFirstMove']\n }], s_slidesLengthChange: [{\n type: Output,\n args: ['slidesLengthChange']\n }], s_slidesGridLengthChange: [{\n type: Output,\n args: ['slidesGridLengthChange']\n }], s_snapGridLengthChange: [{\n type: Output,\n args: ['snapGridLengthChange']\n }], s_snapIndexChange: [{\n type: Output,\n args: ['snapIndexChange']\n }], s_tap: [{\n type: Output,\n args: ['tap']\n }], s_toEdge: [{\n type: Output,\n args: ['toEdge']\n }], s_touchEnd: [{\n type: Output,\n args: ['touchEnd']\n }], s_touchMove: [{\n type: Output,\n args: ['touchMove']\n }], s_touchMoveOpposite: [{\n type: Output,\n args: ['touchMoveOpposite']\n }], s_touchStart: [{\n type: Output,\n args: ['touchStart']\n }], s_transitionEnd: [{\n type: Output,\n args: ['transitionEnd']\n }], s_transitionStart: [{\n type: Output,\n args: ['transitionStart']\n }], s_update: [{\n type: Output,\n args: ['update']\n }], s_zoomChange: [{\n type: Output,\n args: ['zoomChange']\n }], s_swiper: [{\n type: Output,\n args: ['swiper']\n }], s_lock: [{\n type: Output,\n args: ['lock']\n }], s_unlock: [{\n type: Output,\n args: ['unlock']\n }], prevElRef: [{\n type: ViewChild,\n args: ['prevElRef', { static: false }]\n }], nextElRef: [{\n type: ViewChild,\n args: ['nextElRef', { static: false }]\n }], scrollbarElRef: [{\n type: ViewChild,\n args: ['scrollbarElRef', { static: false }]\n }], paginationElRef: [{\n type: ViewChild,\n args: ['paginationElRef', { static: false }]\n }], slidesEl: [{\n type: ContentChildren,\n args: [SwiperSlideDirective, { descendants: false, emitDistinctChangesOnly: true }]\n }], containerClasses: [{\n type: HostBinding,\n args: ['class']\n }] } });\n\nclass SwiperModule {\n}\nSwiperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSwiperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperModule, declarations: [SwiperComponent, SwiperSlideDirective], imports: [CommonModule], exports: [SwiperComponent, SwiperSlideDirective] });\nSwiperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.11\", ngImport: i0, type: SwiperModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [SwiperComponent, SwiperSlideDirective],\n exports: [SwiperComponent, SwiperSlideDirective],\n imports: [CommonModule],\n }]\n }] });\n\n/*\n * Public API Surface of angular\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { SwiperComponent, SwiperModule, SwiperSlideDirective };\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 \r\n
\r\n
\r\n
\r\n
\r\n \r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\r\nimport { News } from 'src/app/models/ResponseModel';\r\nimport { NewsList } from 'src/app/models/NewsList';\r\nimport { SwiperOptions, Pagination, Swiper, Autoplay } from 'swiper';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-latestnews',\r\n templateUrl: './latestnews.component.html',\r\n styleUrls: ['./latestnews.component.css']\r\n})\r\nexport class LatestnewsComponent implements OnInit {\r\n\r\n configNews: SwiperOptions = {\r\n slidesPerView: 1,\r\n breakpoints: {\r\n '576': {\r\n slidesPerView: 1\r\n },\r\n '768': {\r\n slidesPerView: 2\r\n },\r\n '1200': {\r\n slidesPerView: 3\r\n }\r\n },\r\n spaceBetween: 5,\r\n speed: 1000,\r\n autoplay: {\r\n delay: 3000,\r\n disableOnInteraction: false,\r\n },\r\n loop: true,\r\n // navigation: true,\r\n pagination: { clickable: true }\r\n };\r\n latestNews: News[] = [];\r\n destroy$: Subject = new Subject();\r\n more: string = '';\r\n EtecNews: string = '';\r\n isLoad = false;\r\n _lang = '';\r\n\r\n constructor(private apiServices: ApiService, private apiResources: ResourcesService) {\r\n fromEvent(window, 'scroll').pipe(takeUntil(this.destroy$))\r\n .subscribe((e: Event) => {\r\n if (window.scrollY >= 400 && this.latestNews.length === 0 && !this.isLoad) {\r\n this.isLoad = true;\r\n\r\n this.apiServices.getListOrder('news', 3, false, \"NewsDate\").pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: NewsList[]) => {\r\n data.forEach(element => {\r\n var obj: News = {\r\n newsId: element.ItemId,\r\n newsDate: element.ItemFields.NewsDate,\r\n newsTitle: element.ItemFields.NewsTitle,\r\n newsDetails: this.cutString(element.ItemFields.NewsDetails?.replace(/<[^>]*>/g, '')),\r\n newsUrl: element.ItemFields?.NewsFile?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImage: element.ItemFields?.NewsImage?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImageThumbnail: element.ItemFields?.NewsImageThumbnail?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n isActive: element.ItemFields.IsActive1,\r\n NewsCode: element.ItemFields.NewsCode,\r\n NewsKeyword: ''\r\n };\r\n this.latestNews.push(obj);\r\n });\r\n }\r\n );\r\n\r\n Swiper.use([Pagination]);\r\n Swiper.use([Autoplay]);\r\n\r\n\r\n }\r\n });\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n /** Custom methods */\r\n private cutString(str: string) {\r\n var output = ' ';\r\n var data = str.split(' ');\r\n var i = 0;\r\n for (var i = 0; i < 25; i++) {\r\n\r\n output = output.concat(data[i], ' ');\r\n };\r\n return output;\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n await this.apiServices.logInAsync();\r\n fromEvent(window, 'scroll').pipe(takeUntil(this.destroy$))\r\n .subscribe(async (e: Event) => {\r\n if (window.scrollY >= 400 && this.latestNews.length === 0 && !this.more) {\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.EtecNews = await this.apiResources.getByKey(\"etecnews\");\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n

{{suggestedlinks}}

\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 { Component, OnInit } from '@angular/core';\r\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\r\nimport { RelatedLinkList } from 'src/app/models/RelatedLinkList';\r\nimport { RelatedLinks } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { SwiperOptions, Pagination, Swiper, Autoplay } from 'swiper';\r\n\r\n\r\n@Component({\r\n selector: 'app-relatedlinks',\r\n templateUrl: './relatedlinks.component.html',\r\n styleUrls: ['./relatedlinks.component.css']\r\n})\r\n\r\nexport class RelatedlinksComponent implements OnInit {\r\n configRelatedlinks: SwiperOptions = {\r\n slidesPerView: 1,\r\n loop: true,\r\n spaceBetween: 20,\r\n speed: 1000,\r\n autoplay: {\r\n delay: 2500,\r\n disableOnInteraction: false,\r\n },\r\n pagination: {\r\n clickable: true,\r\n },\r\n breakpoints: {\r\n '560': {\r\n slidesPerView: 1\r\n },\r\n '768': {\r\n slidesPerView: 2\r\n },\r\n '1000': {\r\n slidesPerView: 3\r\n },\r\n '1200': {\r\n slidesPerView: 4\r\n }\r\n }\r\n };\r\n\r\n destroy$: Subject = new Subject();\r\n suggestedlinks: string = '';\r\n Relatedlinks: RelatedLinks[] = [];\r\n isLoad = false;\r\n BrowseSite = '';\r\n\r\n constructor(private relatedService: ApiService, private apiResources: ResourcesService) {\r\n fromEvent(window, 'scroll').pipe(takeUntil(this.destroy$))\r\n .subscribe((e: Event) => {\r\n if (window.scrollY >= 1750 && this.Relatedlinks.length === 0 && !this.isLoad) {\r\n this.isLoad = true;\r\n this.getRelatedLinks();\r\n Swiper.use([Pagination]);\r\n Swiper.use([Autoplay]);\r\n\r\n }\r\n });\r\n }\r\n\r\n /** Custom methods */\r\n getRelatedLinks() {\r\n this.relatedService.getListTopN('relatedlinks', 100, false, \"IsFooterLink\", false).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: RelatedLinkList[]) => {\r\n data.forEach(element => {\r\n var obj: RelatedLinks = {\r\n title: element.ItemFields.RelatedLinkName,\r\n url: element.ItemFields.RelatedLinkTarget\r\n };\r\n this.Relatedlinks.push(obj);\r\n });\r\n }\r\n );\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n await this.relatedService.logInAsync();\r\n\r\n fromEvent(window, 'scroll').pipe(takeUntil(this.destroy$))\r\n .subscribe(async (e: Event) => {\r\n if (window.scrollY >= 1750 && this.Relatedlinks.length === 0 && !this.suggestedlinks) {\r\n this.suggestedlinks = await this.apiResources.getByKey(\"suggestedlinks\");\r\n this.BrowseSite = await this.apiResources.getByKey(\"BrowseSite\");\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n"," \r\n
\r\n
\r\n
\r\n
\r\n

\r\n {{etecinnumbers}}\r\n

\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n

{{item.numbersText}}

\r\n

{{item.msg}}

\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 { Component, OnInit } from '@angular/core';\r\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\r\nimport { ETECNoList } from 'src/app/models/ETECNoList';\r\nimport { Statistics } from 'src/app/models/Statistics';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-statistics',\r\n templateUrl: './statistics.component.html',\r\n styleUrls: ['./statistics.component.css']\r\n})\r\nexport class StatisticsComponent implements OnInit {\r\n destroy$: Subject = new Subject();\r\n statistics: Statistics[] = [];\r\n etecinnumbers = '';\r\n isLoad = false;\r\n\r\n constructor(private apiServices: ApiService, private apiResources: ResourcesService) {\r\n fromEvent(window, 'scroll').pipe(takeUntil(this.destroy$))\r\n .subscribe((e: Event) => {\r\n\r\n if (window.scrollY >= 1100 && this.statistics.length === 0 && !this.isLoad) {\r\n this.isLoad = true;\r\n this.apiServices.getList('EtecInNumbers').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ETECNoList[]) => {\r\n data.forEach(element => {\r\n var obj: Statistics = {\r\n id: element.ItemId,\r\n numbersText: element.ItemFields.EtecinNumbersNumbers,\r\n msg: element.ItemFields.EtecinNumbersTitle\r\n };\r\n this.statistics.push(obj);\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 /** Component events */\r\n async ngOnInit() {\r\n await this.apiServices.logInAsync();\r\n\r\n fromEvent(window, 'scroll').pipe(takeUntil(this.destroy$))\r\n .subscribe(async (e: Event) => {\r\n if (window.scrollY >= 1100 && this.statistics.length === 0 && !this.etecinnumbers) {\r\n this.etecinnumbers = await this.apiResources.getByKey(\"etecinnumbers\");\r\n }\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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 {{ item.head }}\r\n

\r\n

\r\n {{ item.title }}\r\n

\r\n
\r\n

\r\n {{ item.Message }}\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 \"national-day93\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 { Component, OnInit, AfterViewInit, ViewChild } from '@angular/core';\r\n//import { MdbCarouselComponent } from 'mdb-angular-ui-kit/carousel';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Carousel } from 'src/app/models/Carousel';\r\nimport { CarouselList } from 'src/app/models/CarouselList';\r\nimport { Configurationlist } from 'src/app/models/configurationlist';\r\n\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SwiperOptions, Pagination, EffectFade, Swiper, Autoplay } from 'swiper';\r\n\r\n@Component({\r\n selector: 'app-carousel',\r\n templateUrl: './carousel.component.html',\r\n styleUrls: ['./carousel.component.css']\r\n})\r\n\r\nexport class CarouselComponent implements OnInit {\r\n //@ViewChild('carousel') carousel!: MdbCarouselComponent;\r\n configCarousel: SwiperOptions = {\r\n spaceBetween: 30,\r\n effect: \"fade\",\r\n speed: 1000,\r\n autoplay: { delay: 2500 },\r\n loop: true,\r\n pagination: { clickable: true },\r\n // scrollbar: { draggable: true },\r\n };\r\n\r\n carousels: Carousel[] = [];\r\n destroy$: Subject = new Subject();\r\n title: string;\r\n titleDetails: string;\r\n url: string;\r\n defaultTheme = '';\r\n isEvent = false;\r\n\r\n constructor(private carouselService: ApiService, private apiResources: ResourcesService) { }\r\n\r\n /** Custom methods */\r\n getCarosal() {\r\n\r\n this.carouselService.getListOrder('homesliders', 20, true, 'HomeSliderSequence').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: CarouselList[]) => {\r\n let i: number;\r\n i = 0\r\n let isActive: string = '';\r\n data.forEach(element => {\r\n if (i == 0) {\r\n isActive = 'active'\r\n }else{\r\n isActive = ''\r\n }\r\n\r\n var arr = element.ItemFields?.HomeSliderTitle.split('\\n');\r\n if (arr.length > 1) {\r\n var obj: Carousel = {\r\n head: arr[0],\r\n title: arr[1],\r\n Message: element.ItemFields?.HomeSliderDetails,\r\n image: element.ItemFields?.HomeSliderBackground?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n link: element.ItemFields?.HomeSliderLink?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl)!,\r\n active: isActive,\r\n };\r\n }\r\n else {\r\n var obj: Carousel = {\r\n head: undefined,\r\n title: element.ItemFields?.HomeSliderTitle,\r\n Message: element.ItemFields?.HomeSliderDetails,\r\n image: element.ItemFields?.HomeSliderBackground?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n link: element.ItemFields?.HomeSliderLink?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl)!,\r\n active: isActive,\r\n };\r\n }\r\n\r\n obj.image = obj?.image?.replace(environment.imgLocalUrl, environment.imgBaseUrl);\r\n this.carousels.push(obj);\r\n //console.log(obj);\r\n\r\n i++;\r\n });\r\n }\r\n );\r\n }\r\n\r\n getConfig() {\r\n this.carouselService.getList('Configurations').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Configurationlist[]) => {\r\n this.defaultTheme = data.filter(m => m.ItemFields?.ConfigurationName == 'DefaultTheme')[0].ItemFields?.ConfigurationValue!;\r\n this.isEvent = data.filter(m => m.ItemFields?.ConfigurationName== 'IsEvent')[0].ItemFields?.ConfigurationValue! == '1' ? true : false;\r\n\r\n // if(localStorage.getItem('defaultTheme')){\r\n // this.defaultTheme = localStorage.getItem('defaultTheme')?.toString()!;\r\n // }\r\n \r\n if (localStorage.getItem('defaultTheme') === null) {\r\n this.defaultTheme = this.defaultTheme ? this.defaultTheme : '';\r\n } else {\r\n this.defaultTheme = localStorage.getItem('defaultTheme')?.toString()!;\r\n }\r\n console.log('hi'+this.defaultTheme);\r\n }\r\n );\r\n }\r\n\r\n /** Component events */\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n async ngOnInit() {\r\n \r\n await this.carouselService.logInAsync();\r\n this.getCarosal();\r\n this.getConfig();\r\n\r\n this.url = await this.apiResources.getByKey(\"bannervedio\");\r\n Swiper.use([Pagination]);\r\n Swiper.use([EffectFade]);\r\n Swiper.use([Autoplay]);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n}\r\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject } from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\n\n// This service is based on the `ng2-cookies` package which sadly is not a service and does\nclass CookieService {\n constructor(document, \n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n platformId) {\n this.document = document;\n this.platformId = platformId;\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n }\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static getCookieRegExp(name) {\n const escapedName = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi, '\\\\$1');\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n /**\n * Gets the unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @param encodedURIComponent A value representing an encoded URI component.\n *\n * @returns The unencoded version of an encoded component of a Uniform Resource Identifier (URI).\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n static safeDecodeURIComponent(encodedURIComponent) {\n try {\n return decodeURIComponent(encodedURIComponent);\n }\n catch {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n check(name) {\n if (!this.documentIsAccessible) {\n return false;\n }\n name = encodeURIComponent(name);\n const regExp = CookieService.getCookieRegExp(name);\n return regExp.test(this.document.cookie);\n }\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n get(name) {\n if (this.documentIsAccessible && this.check(name)) {\n name = encodeURIComponent(name);\n const regExp = CookieService.getCookieRegExp(name);\n const result = regExp.exec(this.document.cookie);\n return result[1] ? CookieService.safeDecodeURIComponent(result[1]) : '';\n }\n else {\n return '';\n }\n }\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n getAll() {\n if (!this.documentIsAccessible) {\n return {};\n }\n const cookies = {};\n const document = this.document;\n if (document.cookie && document.cookie !== '') {\n document.cookie.split(';').forEach((currentCookie) => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[CookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] = CookieService.safeDecodeURIComponent(cookieValue);\n });\n }\n return cookies;\n }\n set(name, value, expiresOrOptions, path, domain, secure, sameSite) {\n if (!this.documentIsAccessible) {\n return;\n }\n if (typeof expiresOrOptions === 'number' || expiresOrOptions instanceof Date || path || domain || secure || sameSite) {\n const optionsBody = {\n expires: expiresOrOptions,\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n };\n this.set(name, value, optionsBody);\n return;\n }\n let cookieString = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n const options = expiresOrOptions ? expiresOrOptions : {};\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n }\n else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n cookieString += 'sameSite=' + options.sameSite + ';';\n this.document.cookie = cookieString;\n }\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n delete(name, path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', { expires: expiresDate, path, domain, secure, sameSite });\n }\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n *\n * @author: Stepan Suvorov\n * @since: 1.0.0\n */\n deleteAll(path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const cookies = this.getAll();\n for (const cookieName in cookies) {\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n}\nCookieService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.3\", ngImport: i0, type: CookieService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nCookieService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.3\", ngImport: i0, type: CookieService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.3\", ngImport: i0, type: CookieService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return [{ type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\n/*\n * Public API Surface of ngx-cookie-service\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CookieService };\n","\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n

\r\n {{opinionpoll}}\r\n

\r\n

\r\n {{pollList?.ItemFields?.PollQuestions}}\r\n

\r\n
\r\n
\r\n
\r\n

{{selectananswer}}\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{answer.answer}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {{answer.result}}%

\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 { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormControl, Validators, UntypedFormBuilder, AbstractControl } from '@angular/forms';\r\n\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { fromEvent, Subject, takeUntil } from 'rxjs';\r\nimport { ActivePollAnswerList } from 'src/app/models/ActivePollAnswerList';\r\n\r\nimport { PollAnswersList } from 'src/app/models/PollAnswersList';\r\nimport { PollList } from 'src/app/models/PoolsList';\r\n\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n@Component({\r\n selector: 'app-survay',\r\n templateUrl: './survay.component.html',\r\n styleUrls: ['./survay.component.css']\r\n})\r\nexport class SurvayComponent implements OnInit {\r\n bgcolors = [\"bg-success\", \"bg-warning\", \"bg-info\", \"bg-danger\"];\r\n colors = [\"text-success\", \"text-warning\", \"text-info\", \"text-danger\"];\r\n bgprogress = [\"pbg-success\", \"pbg-warning\", \"pbg-info\", \"pbg-danger\"];\r\n Answers = [{ \"answer\": \"\", \"result\": 0 }];\r\n pollList: PollList;\r\n pollItemId = 0;\r\n destroy$: Subject = new Subject();\r\n isDone = false;\r\n opinionpoll = '';\r\n selectananswer = '';\r\n voteresult = '';\r\n vote = '';\r\n back = 'رجوع';\r\n isshow = false;\r\n isLoad = false;\r\n ShowSurvayResult = false;\r\n ShowSurvayOptions = true;\r\n form: UntypedFormGroup = new UntypedFormGroup({\r\n answer: new UntypedFormControl('')\r\n });\r\n submitted = false;\r\n\r\n constructor(private formBuilder: UntypedFormBuilder, private apiServices: ApiService, private cookieService: CookieService, private apiResources: ResourcesService) {\r\n fromEvent(window, 'scroll').pipe(takeUntil(this.destroy$))\r\n .subscribe((e: Event) => {\r\n if (window.scrollY > 1750 && !this.isLoad) {\r\n this.isLoad = true;\r\n this.apiServices.getList('polls').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data) => {\r\n this.pollList = data[0];\r\n this.pollItemId = this.pollList.ItemId;\r\n this.isDone = this.getCookie();\r\n if (this.isDone) {\r\n this.showResult();\r\n }\r\n });\r\n this.form = this.formBuilder.group(\r\n {\r\n answer: ['', Validators.required]\r\n },\r\n {\r\n\r\n }\r\n );\r\n \r\n }\r\n });\r\n }\r\n \r\n /** Custom methods */\r\n get f(): { [key: string]: AbstractControl } {\r\n return this.form.controls;\r\n }\r\n\r\n initialPoll() {\r\n this.submitted = false;\r\n this.ShowSurvayOptions = true;\r\n this.ShowSurvayResult = false;\r\n this.isshow = false;\r\n\r\n }\r\n\r\n submit() {\r\n this.submitted = true;\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n this.apiServices.putPollData(this.pollItemId, this.form.value.answer).subscribe(\r\n () => {\r\n this.getResult(this.pollItemId)\r\n this.ShowSurvayResult = true;\r\n this.ShowSurvayOptions = false;\r\n\r\n this.setCookie();\r\n this.isDone = true;\r\n this.submitted = true;\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n setCookie() {\r\n this.cookieService.set('poll', 'true', 7);\r\n }\r\n\r\n getCookie() {\r\n return this.cookieService.get('poll') ? true : false;\r\n }\r\n\r\n getResult(pollid: number) {\r\n this.Answers = [];\r\n this.pollList?.ItemFields?.PollChoices?.forEach(element => {\r\n this.Answers.push({ \"answer\": element.LookupValue, \"result\": 0 });\r\n });\r\n\r\n // this.apiServices.getList('pollanswers').pipe(takeUntil(this.destroy$)).subscribe(\r\n // (data: PollAnswersList[]) => {\r\n // data.forEach(element => {\r\n // this.Answers.forEach(answerElement => {\r\n // if (element.ItemFields?.PollChoiceId) {\r\n // if (answerElement.answer === element.ItemFields?.PollChoiceId?.LookupValue) {\r\n // answerElement.result = answerElement.result + 1;\r\n // }\r\n // }\r\n // });\r\n // });\r\n\r\n // this.Answers.sort((a, b) => b.result - a.result);\r\n // }\r\n // );\r\n\r\n this.apiServices.GetActivePollAnswer().pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ActivePollAnswerList) => {\r\n \r\n this.Answers.forEach(answerElement => {\r\n\r\n answerElement.result = Math.round( Number(data?.PollAnswers?.filter(x=> x.PollChoiceName == answerElement.answer)[0]?.PollChoiceIdPercentFormatted) * 100);\r\n });\r\n\r\n //this.Answers.sort((a, b) => b.result - a.result);\r\n }\r\n );\r\n }\r\n\r\n showResult() {\r\n this.getResult(this.pollItemId);\r\n \r\n this.isDone = this.getCookie();\r\n this.submitted = false;\r\n this.ShowSurvayOptions = false;\r\n this.ShowSurvayResult = true;\r\n if (!this.isDone) {\r\n this.isshow = true;\r\n this.back = 'رجوع';\r\n }\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit(): Promise {\r\n\r\n this.vote =await this.apiResources.getByKey(\"vote\"); \r\n this.voteresult = await this.apiResources.getByKey(\"voteresult\");\r\n this.selectananswer = await this.apiResources.getByKey(\"selectananswer\");\r\n this.opinionpoll =await this.apiResources.getByKey(\"opinionpoll\");\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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 {{Sector1}}\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 \"center\r\n {{item.ServiceCenterName}}\r\n
\r\n
\r\n
\r\n

\r\n {{item.serviceName}}\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 \"qiyas\r\n {{item.ServiceCenterName}}\r\n
\r\n
\r\n
\r\n

\r\n {{item.serviceName}}\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 { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Service } from 'src/app/models/ResponseModel';\r\nimport { ServicesResponse } from 'src/app/models/ServicesResponse';\r\nimport { ServiceStructureSectorsList } from 'src/app/models/ServiceStructureSectorsList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\nimport { ServicesDto } from 'src/app/models/ServicesDto';\r\nimport { CenterList } from 'src/app/models/CenterList';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { SwiperOptions, Pagination, Swiper, Autoplay } from 'swiper';\r\n\r\n\r\n@Component({\r\n selector: 'app-productsonhome',\r\n templateUrl: './productsonhome.component.html',\r\n styleUrls: ['./productsonhome.component.css']\r\n})\r\nexport class ProductsonhomeComponent implements OnInit {\r\n configServices: SwiperOptions = {\r\n slidesPerView: 1,\r\n loop: true,\r\n spaceBetween: 30,\r\n speed: 1000,\r\n autoplay: {\r\n delay: 8000,\r\n disableOnInteraction: false,\r\n },\r\n // navigation: true,\r\n pagination: { clickable: true },\r\n breakpoints: {\r\n '560': {\r\n slidesPerView: 1\r\n },\r\n '768': {\r\n slidesPerView: 2\r\n },\r\n '1000': {\r\n slidesPerView: 3\r\n },\r\n '1200': {\r\n slidesPerView: 4\r\n }\r\n }\r\n };\r\n searchText: any = '';\r\n personalServices: Service[] = [];\r\n businessServices: Service[] = [];\r\n valuesPersonal: ServicesDto[] = [];\r\n valuesbusiness: ServicesDto[] = [];\r\n centers: CenterList[] = [];\r\n Sector1 = '';\r\n Sector2 = '';\r\n more: string = '';\r\n search: string = '';\r\n ourService: string = '';\r\n destroy$: Subject = new Subject();\r\n myControlP = new FormControl('');\r\n myControlB = new FormControl('');\r\n filteredOptionsP: Observable;\r\n filteredOptionsB: Observable;\r\n _lang = '';\r\n\r\n constructor(private apiServices: ApiService, private router: Router, private apiResources: ResourcesService) { }\r\n\r\n /** Custom methods */\r\n route(product: Service) {\r\n return \"/service/\" + product.ServiceCode;\r\n }\r\n\r\n getTopServices() {\r\n\r\n this.apiServices.getList('centers').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data) => {\r\n this.centers = data;\r\n\r\n this.apiServices.getListsItemsFilterdOrderd('Services', 6, false, 'VisitingCount', 'ServiceSectorId', 1, 'Eq', '', 'Eq', '', '').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicesResponse[]) => {\r\n data.forEach(element => {\r\n var obj: Service = {\r\n GUID: element.ItemFields?.GUID,\r\n ServiceCode: element.ItemFields?.ServiceCode,\r\n serviceTitle: element.ItemFields?.Title,\r\n serviceId: element.ItemId,\r\n serviceName: element.ItemFields.Title,\r\n ServiceCenterId: element.ItemFields?.ServiceCenterId?.LookupId,\r\n ServiceCenterName: this.centers.find(elm => elm.ItemId == element.ItemFields?.ServiceCenterId?.LookupId)?.ItemFields.CenterShortName,\r\n ServiceCenterIcon: this.centers.find(elm => elm.ItemId == element.ItemFields?.ServiceCenterId?.LookupId)?.ItemFields.CenterLogoIcon?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n ServiceDescription: '',\r\n serviceIconUrl: './assets/img/icon/exam/GAT.svg',\r\n serviceLevel: 0,\r\n serviceVisitCount: element.ItemFields.VisitingCount ? element.ItemFields.VisitingCount : 0,\r\n serviceDetailsFileUrl: '',\r\n serviceKeyword: element.ItemFields?.ServiceKeyword,\r\n serviceRegistrationLink: data[0]?.ItemFields?.DetailsButtonLink?.Url,\r\n serviceRegistrationTitle: data[0]?.ItemFields?.DetailsButtonLabel,\r\n serviceSectorId: element.ItemFields.ServiceSectorId?.LookupId,\r\n isActive: element.ItemFields.IsActive1,\r\n ShowDetailsButton: element.ItemFields.ShowDetailsButton\r\n };\r\n\r\n if (obj.serviceSectorId === 1) {\r\n this.personalServices.push(obj);\r\n }\r\n else {\r\n this.businessServices.push(obj);\r\n }\r\n\r\n });\r\n\r\n this.personalServices = this.personalServices.sort((a, b) => b.serviceVisitCount - a.serviceVisitCount);\r\n\r\n this.personalServices.forEach(element => {\r\n var dtoObj: ServicesDto =\r\n {\r\n serviceName: element.serviceName,\r\n GUID: element.GUID,\r\n iconUrl: element.serviceIconUrl\r\n }\r\n this.valuesPersonal.push(dtoObj);\r\n });\r\n\r\n this.filteredOptionsP = this.myControlP.valueChanges.pipe(\r\n startWith(''),\r\n map(value => this._filter(value || '*')),\r\n );\r\n }\r\n );\r\n\r\n this.apiServices.getListsItemsFilterdOrderd('Services', 6, false, 'VisitingCount', 'ServiceSectorId', 2, 'Eq', '', 'Eq', '', '').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicesResponse[]) => {\r\n data.forEach(element => {\r\n var obj: Service = {\r\n GUID: element.ItemFields.GUID,\r\n serviceTitle: element.ItemFields.Title,\r\n ServiceCode: element.ItemFields?.ServiceCode,\r\n serviceId: element.ItemId,\r\n serviceName: element.ItemFields.Title,\r\n ServiceCenterId: element.ItemFields.ServiceCenterId?.LookupId,\r\n ServiceCenterName: this.centers.find(elm => elm.ItemId == element.ItemFields?.ServiceCenterId?.LookupId)?.ItemFields.CenterShortName,\r\n ServiceCenterIcon: this.centers.find(elm => elm.ItemId == element.ItemFields?.ServiceCenterId?.LookupId)?.ItemFields.CenterLogoIcon?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n ServiceDescription: '',\r\n serviceIconUrl: './assets/img/icon/exam/GAT.svg',\r\n serviceLevel: 0,\r\n serviceVisitCount: element.ItemFields.VisitingCount ? element.ItemFields.VisitingCount : 0,\r\n serviceDetailsFileUrl: '',\r\n serviceKeyword: element.ItemFields.ServiceKeyword,\r\n serviceRegistrationLink: data[0]?.ItemFields?.DetailsButtonLink?.Url,\r\n serviceRegistrationTitle: data[0]?.ItemFields?.DetailsButtonLabel,\r\n serviceSectorId: element.ItemFields.ServiceCategoryId?.LookupId,\r\n isActive: element.ItemFields.IsActive1,\r\n ShowDetailsButton: element.ItemFields.ShowDetailsButton\r\n };\r\n if (obj.serviceSectorId === 1) {\r\n this.personalServices.push(obj);\r\n }\r\n else {\r\n this.businessServices.push(obj);\r\n }\r\n\r\n });\r\n this.businessServices = this.businessServices.sort((a, b) => b.serviceVisitCount - a.serviceVisitCount);\r\n\r\n this.businessServices.forEach(element => {\r\n var dtoObj: ServicesDto =\r\n {\r\n serviceName: element.serviceName,\r\n GUID: element.GUID,\r\n iconUrl: element.serviceIconUrl\r\n }\r\n this.valuesbusiness.push(dtoObj);\r\n });\r\n\r\n //console.log(this.valuesbusiness);\r\n\r\n this.filteredOptionsB = this.myControlB.valueChanges.pipe(\r\n startWith(''),\r\n map(value => this._filterB(value || '*')),\r\n );\r\n\r\n }\r\n );\r\n\r\n this.apiServices.getList('ServiceStructureSectors').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceStructureSectorsList[]) => {\r\n data.forEach(element => {\r\n if (element.ItemId === 1) {\r\n this.Sector1 = element.ItemFields?.ServiceSectorName;\r\n }\r\n if (element.ItemId === 2) {\r\n this.Sector2 = element.ItemFields?.ServiceSectorName;\r\n }\r\n });\r\n }\r\n );\r\n\r\n\r\n }\r\n );\r\n }\r\n\r\n private _filter(value: string): ServicesDto[] {\r\n\r\n const filterValue = value.toLowerCase();\r\n return this.valuesPersonal.filter(option => option.serviceName.toLowerCase().includes(filterValue));\r\n }\r\n\r\n private _filterB(value: string): ServicesDto[] {\r\n\r\n const filterValue = value.toLowerCase();\r\n return this.valuesbusiness.filter(option => option.serviceName.toLowerCase().includes(filterValue));\r\n }\r\n\r\n putVisitNo(itemId: string) {\r\n this.apiServices.putVisitingCount('Services', itemId).subscribe();\r\n }\r\n\r\n navigateUrl(product: Service) {\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n\r\n this.putVisitNo(product.serviceId.toString());\r\n this.router.navigateByUrl(this._lang+'/service/' + product.ServiceCode);\r\n\r\n }\r\n\r\n displayFn(service: string) {\r\n this.router.navigateByUrl('/service/' + service);\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n Swiper.use([Pagination]);\r\n Swiper.use([Autoplay]);\r\n await this.apiServices.logInAsync();\r\n this.getTopServices();\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.search = await this.apiResources.getByKey(\"search\");\r\n this.ourService = await this.apiResources.getByKey(\"ourservices\");\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n \r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.css']\r\n})\r\nexport class HomeComponent implements OnInit {\r\n\r\n constructor(private Title: Title, private loader: LoadingService, private actRoute: ActivatedRoute \r\n , private apiResources: ResourcesService, private loading: LoadingService, private router: Router ) { \r\n this.actRoute.params.subscribe(async params =>\r\n {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if(isRoute){\r\n window.location.reload();\r\n }\r\n });\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n /** Component events */\r\n ngOnInit(): void {\r\n this.Title.setTitle(\"هيئة تقويم التعليم والتدريب\");\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Service } from '../models/ResponseModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RouteApiService {\r\n\r\n mediaCenterActive: string;\r\n service: Service;\r\n constructor(@Inject(DOCUMENT) private document:any) { }\r\n\r\n getMediaCenter() {\r\n return this.mediaCenterActive;\r\n }\r\n\r\n setMediaCenter(mediaCenterActiveTab: string ) {\r\n this.mediaCenterActive = mediaCenterActiveTab;\r\n }\r\n\r\n getService() {\r\n return this.service;\r\n }\r\n\r\n setService(service: Service) {\r\n this.service = service;\r\n }\r\n\r\n setCss(element:string, attribute:string, value:string) {\r\n // console.log('The value is :'+ value);\r\n this.document.querySelector(element).style[attribute] = value;\r\n }\r\n}\r\n","const { isArray } = Array;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race(...sources) {\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n return (subscriber) => {\n let subscriptions = [];\n for (let i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (subscriptions) {\n for (let s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n }\n };\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport const NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { EMPTY } from './empty';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { popResultSelector } from '../util/args';\nexport function zip(...args) {\n const resultSelector = popResultSelector(args);\n const sources = argsOrArgArray(args);\n return sources.length\n ? new Observable((subscriber) => {\n let buffers = sources.map(() => []);\n let completed = sources.map(() => false);\n subscriber.add(() => {\n buffers = completed = null;\n });\n for (let sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {\n innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n buffers[sourceIndex].push(value);\n if (buffers.every((buffer) => buffer.length)) {\n const result = buffers.map((buffer) => buffer.shift());\n subscriber.next(resultSelector ? resultSelector(...result) : result);\n if (buffers.some((buffer, i) => !buffer.length && completed[i])) {\n subscriber.complete();\n }\n }\n }, () => {\n completed[sourceIndex] = true;\n !buffers[sourceIndex].length && subscriber.complete();\n }));\n }\n return () => {\n buffers = completed = null;\n };\n })\n : EMPTY;\n}\n","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector = identity) {\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate((source, subscriber) => {\n let previousKey;\n let first = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom(...inputs) {\n const project = popResultSelector(inputs);\n return operate((source, subscriber) => {\n const len = inputs.length;\n const otherValues = new Array(len);\n let hasValue = inputs.map(() => false);\n let ready = false;\n for (let i = 0; i < len; i++) {\n innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (ready) {\n const values = [value, ...otherValues];\n subscriber.next(project ? project(...values) : values);\n }\n }));\n });\n}\n","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nexport default function getBoundingClientRect(element, includeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (isHTMLElement(element) && includeScale) {\n var offsetHeight = element.offsetHeight;\n var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n // Fallback to 1 in case both values are `0`\n\n if (offsetWidth > 0) {\n scaleX = round(rect.width) / offsetWidth || 1;\n }\n\n if (offsetHeight > 0) {\n scaleY = round(rect.height) / offsetHeight || 1;\n }\n }\n\n return {\n width: rect.width / scaleX,\n height: rect.height / scaleY,\n top: rect.top / scaleY,\n right: rect.right / scaleX,\n bottom: rect.bottom / scaleY,\n left: rect.left / scaleX,\n x: rect.left / scaleX,\n y: rect.top / scaleY\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import * as i0 from '@angular/core';\nimport { Injectable, Directive, EventEmitter, Input, Output, ContentChildren, Component, ViewEncapsulation, Optional, Host, NgModule, ChangeDetectionStrategy, PLATFORM_ID, Inject, LOCALE_ID, ElementRef, ViewChild, forwardRef, ContentChild, TemplateRef, Injector, Attribute, ViewChildren, HostBinding, InjectionToken } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule, isPlatformBrowser, getLocaleMonthNames, FormStyle, TranslationWidth, getLocaleDayNames, formatDate, DOCUMENT, getLocaleDayPeriods } from '@angular/common';\nimport { Observable, EMPTY, of, Subject, fromEvent, timer, race, BehaviorSubject, combineLatest, NEVER, zip, merge } from 'rxjs';\nimport { endWith, takeUntil, filter, take, map, startWith, distinctUntilChanged, switchMap, tap, withLatestFrom, delay, mergeMap, skip, share, finalize } from 'rxjs/operators';\nimport * as i3 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\nimport { flip, preventOverflow, arrow, createPopperLite, offset } from '@popperjs/core';\n\nfunction toInteger(value) {\n return parseInt(`${value}`, 10);\n}\nfunction toString(value) {\n return (value !== undefined && value !== null) ? `${value}` : '';\n}\nfunction getValueInRange(value, max, min = 0) {\n return Math.max(Math.min(value, max), min);\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isNumber(value) {\n return !isNaN(toInteger(value));\n}\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isPromise(v) {\n return v && v.then;\n}\nfunction padNumber(value) {\n if (isNumber(value)) {\n return `0${value}`.slice(-2);\n }\n else {\n return '';\n }\n}\nfunction regExpEscape(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\nfunction hasClassName(element, className) {\n return element && element.className && element.className.split &&\n element.className.split(/\\s+/).indexOf(className) >= 0;\n}\nfunction closest(element, selector) {\n if (!selector) {\n return null;\n }\n /*\n * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\n * not support `Element.prototype.closest`. To emulate the correct behaviour\n * we return null when the method is missing.\n *\n * Note that in evergreen browsers `closest(document.documentElement, 'html')`\n * will return the document element whilst in Edge null will be returned. This\n * compromise was deemed good enough.\n */\n if (typeof element.closest === 'undefined') {\n return null;\n }\n return element.closest(selector);\n}\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\nfunction reflow(element) {\n return (element || document.body).getBoundingClientRect();\n}\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone\n */\nfunction runInZone(zone) {\n return (source) => {\n return new Observable(observer => {\n const next = (value) => zone.run(() => observer.next(value));\n const error = (e) => zone.run(() => observer.error(e));\n const complete = () => zone.run(() => observer.complete());\n return source.subscribe({ next, error, complete });\n });\n };\n}\nfunction removeAccents(str) {\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\nfunction getTransitionDurationMs(element) {\n const { transitionDelay, transitionDuration } = window.getComputedStyle(element);\n const transitionDelaySec = parseFloat(transitionDelay);\n const transitionDurationSec = parseFloat(transitionDuration);\n return (transitionDelaySec + transitionDurationSec) * 1000;\n}\n\nconst environment = {\n animation: true,\n transitionTimerDelayMs: 5,\n};\n\nconst noopFn = () => { };\nconst { transitionTimerDelayMs } = environment;\nconst runningTransitions = new Map();\nconst ngbRunTransition = (zone, element, startFn, options) => {\n // Getting initial context from options\n let context = options.context || {};\n // Checking if there are already running transitions on the given element.\n const running = runningTransitions.get(element);\n if (running) {\n switch (options.runningTransition) {\n // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n // We're not emitting any values, but simply completing the observable (EMPTY).\n case 'continue':\n return EMPTY;\n // If there is one running and we want for it to 'stop', we have to complete the running one.\n // We're simply completing the running one and not emitting any values and merging newly provided context\n // with the one coming from currently running transition.\n case 'stop':\n zone.run(() => running.transition$.complete());\n context = Object.assign(running.context, context);\n runningTransitions.delete(element);\n }\n }\n // Running the start function\n const endFn = startFn(element, options.animation, context) || noopFn;\n // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n // If animations are disabled, we have to emit a value and complete the observable\n // In this case we have to call the end function, but can finish immediately by emitting a value,\n // completing the observable and executing end functions synchronously.\n if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n zone.run(() => endFn());\n return of(undefined).pipe(runInZone(zone));\n }\n // Starting a new transition\n const transition$ = new Subject();\n const finishTransition$ = new Subject();\n const stop$ = transition$.pipe(endWith(true));\n runningTransitions.set(element, {\n transition$,\n complete: () => {\n finishTransition$.next();\n finishTransition$.complete();\n },\n context\n });\n const transitionDurationMs = getTransitionDurationMs(element);\n // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n // because 'transitionend' event might not be fired in some browsers, if the transitioning\n // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\n // 2. We need to filter transition end events, because they might bubble from shorter transitions\n // on inner DOM elements. We're only interested in the transition on the 'element' itself.\n zone.runOutsideAngular(() => {\n const transitionEnd$ = fromEvent(element, 'transitionend').pipe(takeUntil(stop$), filter(({ target }) => target === element));\n const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n race(timer$, transitionEnd$, finishTransition$).pipe(takeUntil(stop$)).subscribe(() => {\n runningTransitions.delete(element);\n zone.run(() => {\n endFn();\n transition$.next();\n transition$.complete();\n });\n });\n });\n return transition$.asObservable();\n};\nconst ngbCompleteTransition = (element) => {\n runningTransitions.get(element)?.complete();\n};\n\nfunction measureCollapsingElementHeightPx(element) {\n // SSR fix for without injecting the PlatformId\n if (typeof navigator === 'undefined') {\n return '0px';\n }\n const { classList } = element;\n const hasShownClass = classList.contains('show');\n if (!hasShownClass) {\n classList.add('show');\n }\n element.style.height = '';\n const height = element.getBoundingClientRect().height + 'px';\n if (!hasShownClass) {\n classList.remove('show');\n }\n return height;\n}\nconst ngbCollapsingTransition = (element, animation, context) => {\n let { direction, maxHeight } = context;\n const { classList } = element;\n function setInitialClasses() {\n classList.add('collapse');\n if (direction === 'show') {\n classList.add('show');\n }\n else {\n classList.remove('show');\n }\n }\n // without animations we just need to set initial classes\n if (!animation) {\n setInitialClasses();\n return;\n }\n // No maxHeight -> running the transition for the first time\n if (!maxHeight) {\n maxHeight = measureCollapsingElementHeightPx(element);\n context.maxHeight = maxHeight;\n // Fix the height before starting the animation\n element.style.height = direction !== 'show' ? maxHeight : '0px';\n classList.remove('collapse');\n classList.remove('collapsing');\n classList.remove('show');\n reflow(element);\n // Start the animation\n classList.add('collapsing');\n }\n // Start or revert the animation\n element.style.height = direction === 'show' ? maxHeight : '0px';\n return () => {\n setInitialClasses();\n classList.remove('collapsing');\n element.style.height = '';\n };\n};\n\n/**\n * Global ng-bootstrap config\n *\n * @since 8.0.0\n */\nclass NgbConfig {\n constructor() {\n this.animation = environment.animation;\n }\n}\nNgbConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\nclass NgbAccordionConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.closeOthers = false;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbAccordionConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordionConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbAccordionConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordionConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordionConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nlet nextId$3 = 0;\n/**\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\n *\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n *\n * @since 4.1.0\n */\nclass NgbPanelHeader {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanelHeader, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanelHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPanelHeader, selector: \"ng-template[ngbPanelHeader]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanelHeader, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelHeader]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive that wraps only the panel title with HTML markup inside.\n *\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n */\nclass NgbPanelTitle {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanelTitle, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanelTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPanelTitle, selector: \"ng-template[ngbPanelTitle]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanelTitle, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelTitle]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive that wraps the accordion panel content.\n */\nclass NgbPanelContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanelContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanelContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPanelContent, selector: \"ng-template[ngbPanelContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanelContent, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelContent]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\nclass NgbPanel {\n constructor() {\n /**\n * If `true`, the panel is disabled an can't be toggled.\n */\n this.disabled = false;\n /**\n * An optional id for the panel that must be unique on the page.\n *\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n */\n this.id = `ngb-panel-${nextId$3++}`;\n this.isOpen = false;\n /* A flag to specified that the transition panel classes have been initialized */\n this.initClassDone = false;\n /* A flag to specified if the panel is currently being animated, to ensure its presence in the dom */\n this.transitionRunning = false;\n /**\n * An event emitted when the panel is shown, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the panel is hidden, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.headerTpl = this.headerTpls.first;\n this.contentTpl = this.contentTpls.first;\n }\n}\nNgbPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPanel, selector: \"ngb-panel\", inputs: { disabled: \"disabled\", id: \"id\", title: \"title\", type: \"type\", cardClass: \"cardClass\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, queries: [{ propertyName: \"titleTpls\", predicate: NgbPanelTitle }, { propertyName: \"headerTpls\", predicate: NgbPanelHeader }, { propertyName: \"contentTpls\", predicate: NgbPanelContent }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanel, decorators: [{\n type: Directive,\n args: [{ selector: 'ngb-panel' }]\n }], propDecorators: { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], title: [{\n type: Input\n }], type: [{\n type: Input\n }], cardClass: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbPanelTitle, { descendants: false }]\n }], headerTpls: [{\n type: ContentChildren,\n args: [NgbPanelHeader, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbPanelContent, { descendants: false }]\n }] } });\nclass NgbRefDirective {\n constructor(_El) {\n this._El = _El;\n this.ngbRef = new EventEmitter();\n }\n ngOnInit() { this.ngbRef.emit(this._El.nativeElement); }\n ngOnDestroy() { this.ngbRef.emit(null); }\n}\nNgbRefDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbRefDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbRefDirective, selector: \"[ngbRef]\", outputs: { ngbRef: \"ngbRef\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRefDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbRef]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { ngbRef: [{\n type: Output\n }] } });\n/**\n * Accordion is a collection of collapsible panels (bootstrap cards).\n *\n * It can ensure only one panel is opened at a time and allows to customize panel\n * headers.\n */\nclass NgbAccordion {\n constructor(config, _ngZone, _changeDetector) {\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n /**\n * An array or comma separated strings of panel ids that should be opened **initially**.\n *\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n * the `(panelChange)` event.\n */\n this.activeIds = [];\n /**\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n */\n this.destroyOnHide = true;\n /**\n * Event emitted right before the panel toggle happens.\n *\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n */\n this.panelChange = new EventEmitter();\n /**\n * An event emitted when the expanding animation is finished on the panel. The payload is the panel id.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the collapsing animation is finished on the panel, and before the panel element is removed.\n * The payload is the panel id.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.animation = config.animation;\n this.type = config.type;\n this.closeOtherPanels = config.closeOthers;\n }\n /**\n * Checks if a panel with a given id is expanded.\n */\n isExpanded(panelId) { return this.activeIds.indexOf(panelId) > -1; }\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n */\n expand(panelId) { this._changeOpenState(this._findPanelById(panelId), true); }\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n */\n expandAll() {\n if (this.closeOtherPanels) {\n if (this.activeIds.length === 0 && this.panels.length) {\n this._changeOpenState(this.panels.first, true);\n }\n }\n else {\n this.panels.forEach(panel => this._changeOpenState(panel, true));\n }\n }\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n */\n collapse(panelId) { this._changeOpenState(this._findPanelById(panelId), false); }\n /**\n * Collapses all opened panels.\n */\n collapseAll() {\n this.panels.forEach((panel) => { this._changeOpenState(panel, false); });\n }\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n */\n toggle(panelId) {\n const panel = this._findPanelById(panelId);\n if (panel) {\n this._changeOpenState(panel, !panel.isOpen);\n }\n }\n ngAfterContentChecked() {\n // active id updates\n if (isString(this.activeIds)) {\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n }\n // update panels open states\n this.panels.forEach(panel => { panel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1; });\n // closeOthers updates\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\n this._closeOthers(this.activeIds[0], false);\n this._updateActiveIds();\n }\n // Setup the initial classes here\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.panels.forEach(panel => {\n const panelElement = panel.panelDiv;\n if (panelElement) {\n if (!panel.initClassDone) {\n panel.initClassDone = true;\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\n animation: false,\n runningTransition: 'continue',\n context: { direction: panel.isOpen ? 'show' : 'hide' }\n });\n }\n }\n else {\n // Classes must be initialized next time it will be in the dom\n panel.initClassDone = false;\n }\n });\n });\n }\n _changeOpenState(panel, nextState) {\n if (panel != null && !panel.disabled && panel.isOpen !== nextState) {\n let defaultPrevented = false;\n this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: () => { defaultPrevented = true; } });\n if (!defaultPrevented) {\n panel.isOpen = nextState;\n panel.transitionRunning = true;\n if (nextState && this.closeOtherPanels) {\n this._closeOthers(panel.id);\n }\n this._updateActiveIds();\n this._runTransitions(this.animation);\n }\n }\n }\n _closeOthers(panelId, enableTransition = true) {\n this.panels.forEach(panel => {\n if (panel.id !== panelId && panel.isOpen) {\n panel.isOpen = false;\n panel.transitionRunning = enableTransition;\n }\n });\n }\n _findPanelById(panelId) { return this.panels.find(p => p.id === panelId) || null; }\n _updateActiveIds() {\n this.activeIds = this.panels.filter(panel => panel.isOpen && !panel.disabled).map(panel => panel.id);\n }\n _runTransitions(animation) {\n // detectChanges is performed to ensure that all panels are in the dom (via transitionRunning = true)\n // before starting the animation\n this._changeDetector.detectChanges();\n this.panels.forEach(panel => {\n // When panel.transitionRunning is true, the transition needs to be started OR reversed,\n // The direction (show or hide) is choosen by each panel.isOpen state\n if (panel.transitionRunning) {\n const panelElement = panel.panelDiv;\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\n animation,\n runningTransition: 'stop',\n context: { direction: panel.isOpen ? 'show' : 'hide' }\n }).subscribe(() => {\n panel.transitionRunning = false;\n const { id } = panel;\n if (panel.isOpen) {\n panel.shown.emit();\n this.shown.emit(id);\n }\n else {\n panel.hidden.emit();\n this.hidden.emit(id);\n }\n });\n }\n });\n }\n}\nNgbAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordion, deps: [{ token: NgbAccordionConfig }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nNgbAccordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbAccordion, selector: \"ngb-accordion\", inputs: { animation: \"animation\", activeIds: \"activeIds\", closeOtherPanels: [\"closeOthers\", \"closeOtherPanels\"], destroyOnHide: \"destroyOnHide\", type: \"type\" }, outputs: { panelChange: \"panelChange\", shown: \"shown\", hidden: \"hidden\" }, host: { attributes: { \"role\": \"tablist\" }, properties: { \"attr.aria-multiselectable\": \"!closeOtherPanels\" }, classAttribute: \"accordion\" }, queries: [{ propertyName: \"panels\", predicate: NgbPanel }], exportAs: [\"ngbAccordion\"], ngImport: i0, template: `\n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return NgbRefDirective; }), selector: \"[ngbRef]\", outputs: [\"ngbRef\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return NgbPanelHeader; }), selector: \"ng-template[ngbPanelHeader]\" }, { kind: \"directive\", type: i0.forwardRef(function () { return NgbPanelToggle; }), selector: \"button[ngbPanelToggle]\", inputs: [\"ngbPanelToggle\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordion, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n encapsulation: ViewEncapsulation.None,\n host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: `\n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: NgbAccordionConfig }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { panels: [{\n type: ContentChildren,\n args: [NgbPanel]\n }], animation: [{\n type: Input\n }], activeIds: [{\n type: Input\n }], closeOtherPanels: [{\n type: Input,\n args: ['closeOthers']\n }], destroyOnHide: [{\n type: Input\n }], type: [{\n type: Input\n }], panelChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }] } });\n/**\n * A directive to put on a button that toggles panel opening and closing.\n *\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n *\n * @since 4.1.0\n */\nclass NgbPanelToggle {\n constructor(accordion, panel) {\n this.accordion = accordion;\n this.panel = panel;\n }\n set ngbPanelToggle(panel) {\n if (panel) {\n this.panel = panel;\n }\n }\n}\nNgbPanelToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanelToggle, deps: [{ token: NgbAccordion }, { token: NgbPanel, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPanelToggle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPanelToggle, selector: \"button[ngbPanelToggle]\", inputs: { ngbPanelToggle: \"ngbPanelToggle\" }, host: { attributes: { \"type\": \"button\" }, listeners: { \"click\": \"accordion.toggle(panel.id)\" }, properties: { \"disabled\": \"panel.disabled\", \"class.collapsed\": \"!panel.isOpen\", \"attr.aria-expanded\": \"panel.isOpen\", \"attr.aria-controls\": \"panel.id\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPanelToggle, decorators: [{\n type: Directive,\n args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n 'type': 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)'\n }\n }]\n }], ctorParameters: function () { return [{ type: NgbAccordion }, { type: NgbPanel, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngbPanelToggle: [{\n type: Input\n }] } });\n\nconst NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\nclass NgbAccordionModule {\n}\nNgbAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordionModule, declarations: [NgbRefDirective, NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle], imports: [CommonModule], exports: [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle] });\nNgbAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordionModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAccordionModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgbRefDirective, ...NGB_ACCORDION_DIRECTIVES],\n exports: NGB_ACCORDION_DIRECTIVES,\n imports: [CommonModule]\n }]\n }] });\n\nconst ngbAlertFadingTransition = ({ classList }) => {\n classList.remove('show');\n};\n\n/**\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all alerts used in the application.\n */\nclass NgbAlertConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.dismissible = true;\n this.type = 'warning';\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbAlertConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlertConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbAlertConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlertConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlertConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/**\n * Alert is a component to provide contextual feedback messages for user.\n *\n * It supports several alert types and can be dismissed.\n */\nclass NgbAlert {\n constructor(config, _renderer, _element, _zone) {\n this._renderer = _renderer;\n this._element = _element;\n this._zone = _zone;\n /**\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n *\n * @since 8.0.0\n */\n this.closed = new EventEmitter();\n this.dismissible = config.dismissible;\n this.type = config.type;\n this.animation = config.animation;\n }\n /**\n * Triggers alert closing programmatically (same as clicking on the close button (×)).\n *\n * The returned observable will emit and be completed once the closing transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(closed)` output\n *\n * @since 8.0.0\n */\n close() {\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbAlertFadingTransition, { animation: this.animation, runningTransition: 'continue' });\n transition.subscribe(() => this.closed.emit());\n return transition;\n }\n ngOnChanges(changes) {\n const typeChange = changes['type'];\n if (typeChange && !typeChange.firstChange) {\n this._renderer.removeClass(this._element.nativeElement, `alert-${typeChange.previousValue}`);\n this._renderer.addClass(this._element.nativeElement, `alert-${typeChange.currentValue}`);\n }\n }\n ngOnInit() { this._renderer.addClass(this._element.nativeElement, `alert-${this.type}`); }\n}\nNgbAlert.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlert, deps: [{ token: NgbAlertConfig }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbAlert, selector: \"ngb-alert\", inputs: { animation: \"animation\", dismissible: \"dismissible\", type: \"type\" }, outputs: { closed: \"closed\" }, host: { attributes: { \"role\": \"alert\" }, properties: { \"class.fade\": \"animation\", \"class.alert-dismissible\": \"dismissible\" }, classAttribute: \"alert show\" }, exportAs: [\"ngbAlert\"], usesOnChanges: true, ngImport: i0, template: `\n \n \n `, isInline: true, styles: [\"ngb-alert{display:block}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlert, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-alert', exportAs: 'ngbAlert', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'role': 'alert', 'class': 'alert show', '[class.fade]': 'animation', '[class.alert-dismissible]': 'dismissible' }, template: `\n \n \n `, styles: [\"ngb-alert{display:block}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbAlertConfig }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], dismissible: [{\n type: Input\n }], type: [{\n type: Input\n }], closed: [{\n type: Output\n }] } });\n\nclass NgbAlertModule {\n}\nNgbAlertModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbAlertModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlertModule, declarations: [NgbAlert], imports: [CommonModule], exports: [NgbAlert] });\nNgbAlertModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlertModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbAlertModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule] }]\n }] });\n\n/**\n * Defines the carousel slide transition direction.\n */\nvar NgbSlideEventDirection;\n(function (NgbSlideEventDirection) {\n NgbSlideEventDirection[\"START\"] = \"start\";\n NgbSlideEventDirection[\"END\"] = \"end\";\n})(NgbSlideEventDirection || (NgbSlideEventDirection = {}));\nconst isBeingAnimated = ({ classList }) => {\n return classList.contains('carousel-item-start') || classList.contains('carousel-item-end');\n};\nconst removeDirectionClasses = (classList) => {\n classList.remove('carousel-item-start');\n classList.remove('carousel-item-end');\n};\nconst removeClasses = (classList) => {\n removeDirectionClasses(classList);\n classList.remove('carousel-item-prev');\n classList.remove('carousel-item-next');\n};\nconst ngbCarouselTransitionIn = (element, animation, { direction }) => {\n const { classList } = element;\n if (!animation) {\n removeDirectionClasses(classList);\n removeClasses(classList);\n classList.add('active');\n return;\n }\n if (isBeingAnimated(element)) {\n // Revert the transition\n removeDirectionClasses(classList);\n }\n else {\n // For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\n classList.add('carousel-item-' + (direction === NgbSlideEventDirection.START ? 'next' : 'prev'));\n reflow(element);\n classList.add('carousel-item-' + direction);\n }\n return () => {\n removeClasses(classList);\n classList.add('active');\n };\n};\nconst ngbCarouselTransitionOut = (element, animation, { direction }) => {\n const { classList } = element;\n if (!animation) {\n removeDirectionClasses(classList);\n removeClasses(classList);\n classList.remove('active');\n return;\n }\n // direction is left or right, depending on the way the slide goes out.\n if (isBeingAnimated(element)) {\n // Revert the transition\n removeDirectionClasses(classList);\n }\n else {\n classList.add('carousel-item-' + direction);\n }\n return () => {\n removeClasses(classList);\n classList.remove('active');\n };\n};\n\n/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\nclass NgbCarouselConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.interval = 5000;\n this.wrap = true;\n this.keyboard = true;\n this.pauseOnHover = true;\n this.pauseOnFocus = true;\n this.showNavigationArrows = true;\n this.showNavigationIndicators = true;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbCarouselConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarouselConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbCarouselConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarouselConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarouselConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nlet nextId$2 = 0;\n/**\n * A directive that wraps the individual carousel slide.\n */\nclass NgbSlide {\n constructor(tplRef) {\n this.tplRef = tplRef;\n /**\n * Slide id that must be unique for the entire document.\n *\n * If not provided, will be generated in the `ngb-slide-xx` format.\n */\n this.id = `ngb-slide-${nextId$2++}`;\n /**\n * An event emitted when the slide transition is finished\n *\n * @since 8.0.0\n */\n this.slid = new EventEmitter();\n }\n}\nNgbSlide.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbSlide, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbSlide.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbSlide, selector: \"ng-template[ngbSlide]\", inputs: { id: \"id\" }, outputs: { slid: \"slid\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbSlide, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbSlide]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { id: [{\n type: Input\n }], slid: [{\n type: Output\n }] } });\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\nclass NgbCarousel {\n constructor(config, _platformId, _ngZone, _cd, _container) {\n this._platformId = _platformId;\n this._ngZone = _ngZone;\n this._cd = _cd;\n this._container = _container;\n this.NgbSlideEventSource = NgbSlideEventSource;\n this._destroy$ = new Subject();\n this._interval$ = new BehaviorSubject(0);\n this._mouseHover$ = new BehaviorSubject(false);\n this._focused$ = new BehaviorSubject(false);\n this._pauseOnHover$ = new BehaviorSubject(false);\n this._pauseOnFocus$ = new BehaviorSubject(false);\n this._pause$ = new BehaviorSubject(false);\n this._wrap$ = new BehaviorSubject(false);\n /**\n * An event emitted just before the slide transition starts.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n */\n this.slide = new EventEmitter();\n /**\n * An event emitted right after the slide transition is completed.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n *\n * @since 8.0.0\n */\n this.slid = new EventEmitter();\n /*\n * Keep the ids of the panels currently transitionning\n * in order to allow only the transition revertion\n */\n this._transitionIds = null;\n this.animation = config.animation;\n this.interval = config.interval;\n this.wrap = config.wrap;\n this.keyboard = config.keyboard;\n this.pauseOnHover = config.pauseOnHover;\n this.pauseOnFocus = config.pauseOnFocus;\n this.showNavigationArrows = config.showNavigationArrows;\n this.showNavigationIndicators = config.showNavigationIndicators;\n }\n /**\n * Time in milliseconds before the next slide is shown.\n */\n set interval(value) {\n this._interval$.next(value);\n }\n get interval() { return this._interval$.value; }\n /**\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n */\n set wrap(value) {\n this._wrap$.next(value);\n }\n get wrap() { return this._wrap$.value; }\n /**\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\n *\n * @since 2.2.0\n */\n set pauseOnHover(value) {\n this._pauseOnHover$.next(value);\n }\n get pauseOnHover() { return this._pauseOnHover$.value; }\n /**\n * If `true`, will pause slide switching when the focus is inside the carousel.\n */\n set pauseOnFocus(value) {\n this._pauseOnFocus$.next(value);\n }\n get pauseOnFocus() { return this._pauseOnFocus$.value; }\n set mouseHover(value) { this._mouseHover$.next(value); }\n get mouseHover() { return this._mouseHover$.value; }\n set focused(value) { this._focused$.next(value); }\n get focused() { return this._focused$.value; }\n arrowLeft() {\n this.focus();\n this.prev(NgbSlideEventSource.ARROW_LEFT);\n }\n arrowRight() {\n this.focus();\n this.next(NgbSlideEventSource.ARROW_RIGHT);\n }\n ngAfterContentInit() {\n // setInterval() doesn't play well with SSR and protractor,\n // so we should run it in the browser and outside Angular\n if (isPlatformBrowser(this._platformId)) {\n this._ngZone.runOutsideAngular(() => {\n const hasNextSlide$ = combineLatest([\n this.slide.pipe(map(slideEvent => slideEvent.current), startWith(this.activeId)),\n this._wrap$, this.slides.changes.pipe(startWith(null))\n ])\n .pipe(map(([currentSlideId, wrap]) => {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n }), distinctUntilChanged());\n combineLatest([\n this._pause$, this._pauseOnHover$, this._mouseHover$, this._pauseOnFocus$, this._focused$, this._interval$,\n hasNextSlide$\n ])\n .pipe(map(([pause, pauseOnHover, mouseHover, pauseOnFocus, focused, interval, hasNextSlide]) => ((pause || (pauseOnHover && mouseHover) || (pauseOnFocus && focused) || !hasNextSlide) ?\n 0 :\n interval)), distinctUntilChanged(), switchMap(interval => interval > 0 ? timer(interval, interval) : NEVER), takeUntil(this._destroy$))\n .subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\n });\n }\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(() => {\n this._transitionIds?.forEach(id => ngbCompleteTransition(this._getSlideElement(id)));\n this._transitionIds = null;\n this._cd.markForCheck();\n // The following code need to be done asynchronously, after the dom becomes stable,\n // otherwise all changes will be undone.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n for (const { id } of this.slides) {\n const element = this._getSlideElement(id);\n if (id === this.activeId) {\n element.classList.add('active');\n }\n else {\n element.classList.remove('active');\n }\n }\n });\n });\n }\n ngAfterContentChecked() {\n let activeSlide = this._getSlideById(this.activeId);\n this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : '');\n }\n ngAfterViewInit() {\n // Initialize the 'active' class (not managed by the template)\n if (this.activeId) {\n const element = this._getSlideElement(this.activeId);\n if (element) {\n element.classList.add('active');\n }\n }\n }\n ngOnDestroy() { this._destroy$.next(); }\n /**\n * Navigates to a slide with the specified identifier.\n */\n select(slideId, source) {\n this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n }\n /**\n * Navigates to the previous slide.\n */\n prev(source) {\n this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.END, source);\n }\n /**\n * Navigates to the next slide.\n */\n next(source) {\n this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.START, source);\n }\n /**\n * Pauses cycling through the slides.\n */\n pause() { this._pause$.next(true); }\n /**\n * Restarts cycling through the slides from start to end.\n */\n cycle() { this._pause$.next(false); }\n /**\n * Set the focus on the carousel.\n */\n focus() { this._container.nativeElement.focus(); }\n _cycleToSelected(slideIdx, direction, source) {\n const transitionIds = this._transitionIds;\n if (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\n // Revert prevented\n return;\n }\n let selectedSlide = this._getSlideById(slideIdx);\n if (selectedSlide && selectedSlide.id !== this.activeId) {\n this._transitionIds = [this.activeId, slideIdx];\n this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\n const options = {\n animation: this.animation,\n runningTransition: 'stop',\n context: { direction },\n };\n const transitions = [];\n const activeSlide = this._getSlideById(this.activeId);\n if (activeSlide) {\n const activeSlideTransition = ngbRunTransition(this._ngZone, this._getSlideElement(activeSlide.id), ngbCarouselTransitionOut, options);\n activeSlideTransition.subscribe(() => { activeSlide.slid.emit({ isShown: false, direction, source }); });\n transitions.push(activeSlideTransition);\n }\n const previousId = this.activeId;\n this.activeId = selectedSlide.id;\n const nextSlide = this._getSlideById(this.activeId);\n const transition = ngbRunTransition(this._ngZone, this._getSlideElement(selectedSlide.id), ngbCarouselTransitionIn, options);\n transition.subscribe(() => { nextSlide?.slid.emit({ isShown: true, direction, source }); });\n transitions.push(transition);\n zip(...transitions).pipe(take(1)).subscribe(() => {\n this._transitionIds = null;\n this.slid.emit({ prev: previousId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\n });\n }\n // we get here after the interval fires or any external API call like next(), prev() or select()\n this._cd.markForCheck();\n }\n _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\n const currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n const nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.END : NgbSlideEventDirection.START;\n }\n _getSlideById(slideId) {\n return this.slides.find(slide => slide.id === slideId) || null;\n }\n _getSlideIdxById(slideId) {\n const slide = this._getSlideById(slideId);\n return slide != null ? this.slides.toArray().indexOf(slide) : -1;\n }\n _getNextSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isLastSlide = currentSlideIdx === slideArr.length - 1;\n return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\n slideArr[currentSlideIdx + 1].id;\n }\n _getPrevSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isFirstSlide = currentSlideIdx === 0;\n return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\n slideArr[currentSlideIdx - 1].id;\n }\n _getSlideElement(slideId) {\n return this._container.nativeElement.querySelector(`#slide-${slideId}`);\n }\n}\nNgbCarousel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarousel, deps: [{ token: NgbCarouselConfig }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNgbCarousel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbCarousel, selector: \"ngb-carousel\", inputs: { animation: \"animation\", activeId: \"activeId\", interval: \"interval\", wrap: \"wrap\", keyboard: \"keyboard\", pauseOnHover: \"pauseOnHover\", pauseOnFocus: \"pauseOnFocus\", showNavigationArrows: \"showNavigationArrows\", showNavigationIndicators: \"showNavigationIndicators\" }, outputs: { slide: \"slide\", slid: \"slid\" }, host: { attributes: { \"tabIndex\": \"0\" }, listeners: { \"keydown.arrowLeft\": \"keyboard && arrowLeft()\", \"keydown.arrowRight\": \"keyboard && arrowRight()\", \"mouseenter\": \"mouseHover = true\", \"mouseleave\": \"mouseHover = false\", \"focusin\": \"focused = true\", \"focusout\": \"focused = false\" }, properties: { \"style.display\": \"\\\"block\\\"\", \"attr.aria-activedescendant\": \"'slide-' + activeId\" }, classAttribute: \"carousel slide\" }, queries: [{ propertyName: \"slides\", predicate: NgbSlide }], exportAs: [\"ngbCarousel\"], ngImport: i0, template: `\n
\n \n
\n
\n
\n \n Slide {{i + 1}} of {{c}}\n \n \n
\n
\n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarousel, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'carousel slide',\n '[style.display]': '\"block\"',\n 'tabIndex': '0',\n '(keydown.arrowLeft)': 'keyboard && arrowLeft()',\n '(keydown.arrowRight)': 'keyboard && arrowRight()',\n '(mouseenter)': 'mouseHover = true',\n '(mouseleave)': 'mouseHover = false',\n '(focusin)': 'focused = true',\n '(focusout)': 'focused = false',\n '[attr.aria-activedescendant]': `'slide-' + activeId`\n },\n template: `\n
\n \n
\n
\n
\n \n Slide {{i + 1}} of {{c}}\n \n \n
\n
\n \n \n `\n }]\n }], ctorParameters: function () { return [{ type: NgbCarouselConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { slides: [{\n type: ContentChildren,\n args: [NgbSlide]\n }], animation: [{\n type: Input\n }], activeId: [{\n type: Input\n }], interval: [{\n type: Input\n }], wrap: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], pauseOnHover: [{\n type: Input\n }], pauseOnFocus: [{\n type: Input\n }], showNavigationArrows: [{\n type: Input\n }], showNavigationIndicators: [{\n type: Input\n }], slide: [{\n type: Output\n }], slid: [{\n type: Output\n }] } });\nvar NgbSlideEventSource;\n(function (NgbSlideEventSource) {\n NgbSlideEventSource[\"TIMER\"] = \"timer\";\n NgbSlideEventSource[\"ARROW_LEFT\"] = \"arrowLeft\";\n NgbSlideEventSource[\"ARROW_RIGHT\"] = \"arrowRight\";\n NgbSlideEventSource[\"INDICATOR\"] = \"indicator\";\n})(NgbSlideEventSource || (NgbSlideEventSource = {}));\nconst NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\nclass NgbCarouselModule {\n}\nNgbCarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbCarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarouselModule, declarations: [NgbCarousel, NgbSlide], imports: [CommonModule], exports: [NgbCarousel, NgbSlide] });\nNgbCarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarouselModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCarouselModule, decorators: [{\n type: NgModule,\n args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] }]\n }] });\n\n/**\n * A configuration service for the [NgbCollapse](#/components/collapse/api#NgbCollapse) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all collapses used in the application.\n */\nclass NgbCollapseConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbCollapseConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapseConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbCollapseConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapseConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapseConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/**\n * A directive to provide a simple way of hiding and showing elements on the page.\n */\nclass NgbCollapse {\n constructor(_element, config, _zone) {\n this._element = _element;\n this._zone = _zone;\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n this.collapsed = false;\n this.ngbCollapseChange = new EventEmitter();\n /**\n * An event emitted when the collapse element is shown, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the collapse element is hidden, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.animation = config.animation;\n }\n ngOnInit() { this._runTransition(this.collapsed, false); }\n ngOnChanges({ collapsed }) {\n if (!collapsed.firstChange) {\n this._runTransitionWithEvents(this.collapsed, this.animation);\n }\n }\n /**\n * Triggers collapsing programmatically.\n *\n * If there is a collapsing transition running already, it will be reversed.\n * If the animations are turned off this happens synchronously.\n *\n * @since 8.0.0\n */\n toggle(open = this.collapsed) {\n this.collapsed = !open;\n this.ngbCollapseChange.next(this.collapsed);\n this._runTransitionWithEvents(this.collapsed, this.animation);\n }\n _runTransition(collapsed, animation) {\n return ngbRunTransition(this._zone, this._element.nativeElement, ngbCollapsingTransition, { animation, runningTransition: 'stop', context: { direction: collapsed ? 'hide' : 'show' } });\n }\n _runTransitionWithEvents(collapsed, animation) {\n this._runTransition(collapsed, animation).subscribe(() => {\n if (collapsed) {\n this.hidden.emit();\n }\n else {\n this.shown.emit();\n }\n });\n }\n}\nNgbCollapse.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapse, deps: [{ token: i0.ElementRef }, { token: NgbCollapseConfig }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nNgbCollapse.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbCollapse, selector: \"[ngbCollapse]\", inputs: { animation: \"animation\", collapsed: [\"ngbCollapse\", \"collapsed\"] }, outputs: { ngbCollapseChange: \"ngbCollapseChange\", shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbCollapse\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapse, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbCollapse]', exportAs: 'ngbCollapse' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NgbCollapseConfig }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], collapsed: [{\n type: Input,\n args: ['ngbCollapse']\n }], ngbCollapseChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }] } });\n\nclass NgbCollapseModule {\n}\nNgbCollapseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbCollapseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapseModule, declarations: [NgbCollapse], exports: [NgbCollapse] });\nNgbCollapseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapseModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCollapseModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] }]\n }] });\n\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * @since 3.0.0\n */\nclass NgbDate {\n constructor(year, month, day) {\n this.year = isInteger(year) ? year : null;\n this.month = isInteger(month) ? month : null;\n this.day = isInteger(day) ? day : null;\n }\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n */\n static from(date) {\n if (date instanceof NgbDate) {\n return date;\n }\n return date ? new NgbDate(date.year, date.month, date.day) : null;\n }\n /**\n * Checks if the current date is equal to another date.\n */\n equals(other) {\n return other != null && this.year === other.year && this.month === other.month && this.day === other.day;\n }\n /**\n * Checks if the current date is before another date.\n */\n before(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day < other.day;\n }\n else {\n return this.month < other.month;\n }\n }\n else {\n return this.year < other.year;\n }\n }\n /**\n * Checks if the current date is after another date.\n */\n after(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day > other.day;\n }\n else {\n return this.month > other.month;\n }\n }\n else {\n return this.year > other.year;\n }\n }\n}\n\nfunction isChangedDate(prev, next) {\n return !dateComparator(prev, next);\n}\nfunction isChangedMonth(prev, next) {\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\nfunction dateComparator(prev, next) {\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\nfunction checkMinBeforeMax(minDate, maxDate) {\n if (maxDate && minDate && maxDate.before(minDate)) {\n throw new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\n }\n}\nfunction checkDateInRange(date, minDate, maxDate) {\n if (date && minDate && date.before(minDate)) {\n return minDate;\n }\n if (date && maxDate && date.after(maxDate)) {\n return maxDate;\n }\n return date || null;\n}\nfunction isDateSelectable(date, state) {\n const { minDate, maxDate, disabled, markDisabled } = state;\n // clang-format off\n return !(date === null ||\n date === undefined ||\n disabled ||\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n (minDate && date.before(minDate)) ||\n (maxDate && date.after(maxDate)));\n // clang-format on\n}\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n let months = calendar.getMonths(date.year);\n if (minDate && date.year === minDate.year) {\n const index = months.findIndex(month => month === minDate.month);\n months = months.slice(index);\n }\n if (maxDate && date.year === maxDate.year) {\n const index = months.findIndex(month => month === maxDate.month);\n months = months.slice(0, index + 1);\n }\n return months;\n}\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n const start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n const end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n const length = end - start + 1;\n const numbers = Array(length);\n for (let i = 0; i < length; i++) {\n numbers[i] = start + i;\n }\n return numbers;\n}\nfunction nextMonthDisabled(calendar, date, maxDate) {\n const nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\n return maxDate != null && nextDate.after(maxDate);\n}\nfunction prevMonthDisabled(calendar, date, minDate) {\n const prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\n return minDate != null && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\n prevDate.year < minDate.year && minDate.month === 1);\n}\nfunction buildMonths(calendar, date, state, i18n, force) {\n const { displayMonths, months } = state;\n // move old months to a temporary array\n const monthsToReuse = months.splice(0, months.length);\n // generate new first dates, nullify or reuse months\n const firstDates = Array.from({ length: displayMonths }, (_, i) => {\n const firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\n months[i] = null;\n if (!force) {\n const reusedIndex = monthsToReuse.findIndex(month => month.firstDate.equals(firstDate));\n // move reused month back to months\n if (reusedIndex !== -1) {\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n }\n }\n return firstDate;\n });\n // rebuild nullified months\n firstDates.forEach((firstDate, i) => {\n if (months[i] === null) {\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || {});\n }\n });\n return months;\n}\nfunction buildMonth(calendar, date, state, i18n, month = {}) {\n const { dayTemplateData, minDate, maxDate, firstDayOfWeek, markDisabled, outsideDays, weekdayWidth, weekdaysVisible } = state;\n const calendarToday = calendar.getToday();\n month.firstDate = null;\n month.lastDate = null;\n month.number = date.month;\n month.year = date.year;\n month.weeks = month.weeks || [];\n month.weekdays = month.weekdays || [];\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\n // clearing weekdays, if not visible\n if (!weekdaysVisible) {\n month.weekdays.length = 0;\n }\n // month has weeks\n for (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\n let weekObject = month.weeks[week];\n if (!weekObject) {\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n }\n const days = weekObject.days;\n // week has days\n for (let day = 0; day < calendar.getDaysPerWeek(); day++) {\n if (week === 0 && weekdaysVisible) {\n month.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\n }\n const newDate = new NgbDate(date.year, date.month, date.day);\n const nextDate = calendar.getNext(newDate);\n const ariaLabel = i18n.getDayAriaLabel(newDate);\n // marking date as disabled\n let disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n if (!disabled && markDisabled) {\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\n }\n // today\n let today = newDate.equals(calendarToday);\n // adding user-provided data to the context\n let contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\n // saving first date of the month\n if (month.firstDate === null && newDate.month === month.number) {\n month.firstDate = newDate;\n }\n // saving last date of the month\n if (newDate.month === month.number && nextDate.month !== month.number) {\n month.lastDate = newDate;\n }\n let dayObject = days[day];\n if (!dayObject) {\n dayObject = days[day] = {};\n }\n dayObject.date = newDate;\n dayObject.context = Object.assign(dayObject.context || {}, {\n $implicit: newDate,\n date: newDate,\n data: contextUserData,\n currentMonth: month.number,\n currentYear: month.year, disabled,\n focused: false,\n selected: false, today\n });\n dayObject.tabindex = -1;\n dayObject.ariaLabel = ariaLabel;\n dayObject.hidden = false;\n date = nextDate;\n }\n weekObject.number = calendar.getWeekNumber(days.map(day => day.date), firstDayOfWeek);\n // marking week as collapsed\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\n days[days.length - 1].date.month !== month.number;\n }\n return month;\n}\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n const daysPerWeek = calendar.getDaysPerWeek();\n const firstMonthDate = new NgbDate(date.year, date.month, 1);\n const dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n\nfunction fromJSDate(jsDate) {\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\nfunction toJSDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // this is done avoid 30 -> 1930 conversion\n if (!isNaN(jsDate.getTime())) {\n jsDate.setFullYear(date.year);\n }\n return jsDate;\n}\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n return new NgbCalendarGregorian();\n}\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n */\nclass NgbCalendar {\n}\nNgbCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendar, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendar.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendar, providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendar, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY }]\n }] });\nclass NgbCalendarGregorian extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toJSDate(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromJSDate(jsDate);\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n let jsDate = toJSDate(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toJSDate(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return fromJSDate(new Date()); }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toJSDate(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\n jsDate.getDate() === date.day;\n }\n}\nNgbCalendarGregorian.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarGregorian, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarGregorian.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarGregorian });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarGregorian, decorators: [{\n type: Injectable\n }] });\n\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\n return new NgbDatepickerI18nDefault(locale);\n}\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n */\nclass NgbDatepickerI18n {\n /**\n * Returns the text label to display above the day view.\n *\n * @since 9.1.0\n */\n getMonthLabel(date) {\n return `${this.getMonthFullName(date.month, date.year)} ${this.getYearNumerals(date.year)}`;\n }\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * @since 3.0.0\n */\n getDayNumerals(date) { return `${date.day}`; }\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * @since 3.0.0\n */\n getWeekNumerals(weekNumber) { return `${weekNumber}`; }\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * @since 3.0.0\n */\n getYearNumerals(year) { return `${year}`; }\n /**\n * Returns the week label to display in the heading of the month view.\n *\n * @since 9.1.0\n */\n getWeekLabel() { return ''; }\n}\nNgbDatepickerI18n.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerI18n.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18n, providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18n, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] }]\n }] });\n/**\n * A service providing default implementation for the datepicker i18n.\n * It can be used as a base implementation if necessary.\n *\n * @since 9.1.0\n */\nclass NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n constructor(_locale) {\n super();\n this._locale = _locale;\n this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n }\n getWeekdayLabel(weekday, width) {\n const weekdaysStartingOnSunday = getLocaleDayNames(this._locale, FormStyle.Standalone, width === undefined ? TranslationWidth.Short : width);\n const weekdays = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\n return weekdays[weekday - 1] || '';\n }\n getMonthShortName(month) { return this._monthsShort[month - 1] || ''; }\n getMonthFullName(month) { return this._monthsFull[month - 1] || ''; }\n getDayAriaLabel(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day);\n return formatDate(jsDate, 'fullDate', this._locale);\n }\n}\nNgbDatepickerI18nDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18nDefault, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerI18nDefault.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18nDefault });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18nDefault, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nclass NgbDatepickerService {\n constructor(_calendar, _i18n) {\n this._calendar = _calendar;\n this._i18n = _i18n;\n this._VALIDATORS = {\n dayTemplateData: (dayTemplateData) => {\n if (this._state.dayTemplateData !== dayTemplateData) {\n return { dayTemplateData };\n }\n },\n displayMonths: (displayMonths) => {\n displayMonths = toInteger(displayMonths);\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n return { displayMonths };\n }\n },\n disabled: (disabled) => {\n if (this._state.disabled !== disabled) {\n return { disabled };\n }\n },\n firstDayOfWeek: (firstDayOfWeek) => {\n firstDayOfWeek = toInteger(firstDayOfWeek);\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n return { firstDayOfWeek };\n }\n },\n focusVisible: (focusVisible) => {\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n return { focusVisible };\n }\n },\n markDisabled: (markDisabled) => {\n if (this._state.markDisabled !== markDisabled) {\n return { markDisabled };\n }\n },\n maxDate: (date) => {\n const maxDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.maxDate, maxDate)) {\n return { maxDate };\n }\n },\n minDate: (date) => {\n const minDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.minDate, minDate)) {\n return { minDate };\n }\n },\n navigation: (navigation) => {\n if (this._state.navigation !== navigation) {\n return { navigation };\n }\n },\n outsideDays: (outsideDays) => {\n if (this._state.outsideDays !== outsideDays) {\n return { outsideDays };\n }\n },\n weekdays: (weekdays) => {\n const weekdayWidth = weekdays === true || weekdays === false ? TranslationWidth.Short : weekdays;\n const weekdaysVisible = weekdays === true || weekdays === false ? weekdays : true;\n if (this._state.weekdayWidth !== weekdayWidth || this._state.weekdaysVisible !== weekdaysVisible) {\n return { weekdayWidth, weekdaysVisible };\n }\n }\n };\n this._model$ = new Subject();\n this._dateSelect$ = new Subject();\n this._state = {\n dayTemplateData: null,\n markDisabled: null,\n maxDate: null,\n minDate: null,\n disabled: false,\n displayMonths: 1,\n firstDate: null,\n firstDayOfWeek: 1,\n lastDate: null,\n focusDate: null,\n focusVisible: false,\n months: [],\n navigation: 'select',\n outsideDays: 'visible',\n prevDisabled: false,\n nextDisabled: false,\n selectedDate: null,\n selectBoxes: { years: [], months: [] },\n weekdayWidth: TranslationWidth.Short,\n weekdaysVisible: true\n };\n }\n get model$() { return this._model$.pipe(filter(model => model.months.length > 0)); }\n get dateSelect$() { return this._dateSelect$.pipe(filter(date => date !== null)); }\n set(options) {\n let patch = Object.keys(options)\n .map(key => this._VALIDATORS[key](options[key]))\n .reduce((obj, part) => ({ ...obj, ...part }), {});\n if (Object.keys(patch).length > 0) {\n this._nextState(patch);\n }\n }\n focus(date) {\n const focusedDate = this.toValidDate(date, null);\n if (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\n this._nextState({ focusDate: date });\n }\n }\n focusSelect() {\n if (isDateSelectable(this._state.focusDate, this._state)) {\n this.select(this._state.focusDate, { emitEvent: true });\n }\n }\n open(date) {\n const firstDate = this.toValidDate(date, this._calendar.getToday());\n if (firstDate != null && !this._state.disabled &&\n (!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))) {\n this._nextState({ firstDate });\n }\n }\n select(date, options = {}) {\n const selectedDate = this.toValidDate(date, null);\n if (selectedDate != null && !this._state.disabled) {\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\n this._nextState({ selectedDate });\n }\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._dateSelect$.next(selectedDate);\n }\n }\n }\n toValidDate(date, defaultValue) {\n const ngbDate = NgbDate.from(date);\n if (defaultValue === undefined) {\n defaultValue = this._calendar.getToday();\n }\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n }\n getMonth(struct) {\n for (let month of this._state.months) {\n if (struct.month === month.number && struct.year === month.year) {\n return month;\n }\n }\n throw new Error(`month ${struct.month} of year ${struct.year} not found`);\n }\n _nextState(patch) {\n const newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n }\n _patchContexts(state) {\n const { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\n state.months.forEach(month => {\n month.weeks.forEach(week => {\n week.days.forEach(day => {\n // patch focus flag\n if (focusDate) {\n day.context.focused = focusDate.equals(day.date) && focusVisible;\n }\n // calculating tabindex\n day.tabindex =\n !disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n // override context disabled\n if (disabled === true) {\n day.context.disabled = true;\n }\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n }\n // visibility\n if (month.number !== day.date.month) {\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\n (displayMonths > 1 && day.date.after(months[0].firstDate) &&\n day.date.before(months[displayMonths - 1].lastDate));\n }\n });\n });\n });\n }\n _updateState(patch) {\n // patching fields\n const state = Object.assign({}, this._state, patch);\n let startDate = state.firstDate;\n // min/max dates changed\n if ('minDate' in patch || 'maxDate' in patch) {\n checkMinBeforeMax(state.minDate, state.maxDate);\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n }\n // disabled\n if ('disabled' in patch) {\n state.focusVisible = false;\n }\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = state.selectedDate;\n }\n // terminate early if only focus visibility was changed\n if ('focusVisible' in patch) {\n return state;\n }\n // focus date changed\n if ('focusDate' in patch) {\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n // nothing to rebuild if only focus changed and it is still visible\n if (state.months.length !== 0 && state.focusDate && !state.focusDate.before(state.firstDate) &&\n !state.focusDate.after(state.lastDate)) {\n return state;\n }\n }\n // first date changed\n if ('firstDate' in patch) {\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.firstDate;\n }\n // rebuilding months\n if (startDate) {\n const forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\n 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch ||\n 'weekdaysVisible' in patch;\n const months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n // updating months and boundary dates\n state.months = months;\n state.firstDate = months[0].firstDate;\n state.lastDate = months[months.length - 1].lastDate;\n // reset selected date if 'markDisabled' returns true\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n state.selectedDate = null;\n }\n // adjusting focus after months were built\n if ('firstDate' in patch) {\n if (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\n state.focusDate = startDate;\n }\n }\n // adjusting months/years for the select box navigation\n const yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n const monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n if (state.navigation === 'select') {\n // years -> boundaries (min/max were changed)\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n }\n // months -> when current year or boundaries change\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n state.selectBoxes.months =\n generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n }\n }\n else {\n state.selectBoxes = { years: [], months: [] };\n }\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n }\n }\n return state;\n }\n}\nNgbDatepickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerService, deps: [{ token: NgbCalendar }, { token: NgbDatepickerI18n }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: NgbCalendar }, { type: NgbDatepickerI18n }]; } });\n\n// clang-format on\nvar NavigationEvent;\n(function (NavigationEvent) {\n NavigationEvent[NavigationEvent[\"PREV\"] = 0] = \"PREV\";\n NavigationEvent[NavigationEvent[\"NEXT\"] = 1] = \"NEXT\";\n})(NavigationEvent || (NavigationEvent = {}));\n\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\nclass NgbDatepickerConfig {\n constructor() {\n this.displayMonths = 1;\n this.firstDayOfWeek = 1;\n this.navigation = 'select';\n this.outsideDays = 'visible';\n this.showWeekNumbers = false;\n this.weekdays = TranslationWidth.Short;\n }\n}\nNgbDatepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n return new NgbDateStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n */\nclass NgbDateAdapter {\n}\nNgbDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateAdapter, providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateAdapter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY }]\n }] });\nclass NgbDateStructAdapter extends NgbDateAdapter {\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n fromModel(date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n }\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n toModel(date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n }\n}\nNgbDateStructAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateStructAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateStructAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateStructAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateStructAdapter, decorators: [{\n type: Injectable\n }] });\n\nclass NgbDatepickerNavigationSelect {\n constructor(i18n, _renderer) {\n this.i18n = i18n;\n this._renderer = _renderer;\n this.select = new EventEmitter();\n this._month = -1;\n this._year = -1;\n }\n changeMonth(month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); }\n changeYear(year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); }\n ngAfterViewChecked() {\n if (this.date) {\n if (this.date.month !== this._month) {\n this._month = this.date.month;\n this._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\n }\n if (this.date.year !== this._year) {\n this._year = this.date.year;\n this._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\n }\n }\n }\n}\nNgbDatepickerNavigationSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerNavigationSelect, deps: [{ token: NgbDatepickerI18n }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepickerNavigationSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDatepickerNavigationSelect, selector: \"ngb-datepicker-navigation-select\", inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", years: \"years\" }, outputs: { select: \"select\" }, viewQueries: [{ propertyName: \"monthSelect\", first: true, predicate: [\"month\"], descendants: true, read: ElementRef, static: true }, { propertyName: \"yearSelect\", first: true, predicate: [\"year\"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: `\n \n `, isInline: true, styles: [\"ngb-datepicker-navigation-select>.form-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.form-select:focus{z-index:1}ngb-datepicker-navigation-select>.form-select::-ms-value{background-color:transparent!important}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i3.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerNavigationSelect, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-datepicker-navigation-select', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `\n \n `, styles: [\"ngb-datepicker-navigation-select>.form-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.form-select:focus{z-index:1}ngb-datepicker-navigation-select>.form-select::-ms-value{background-color:transparent!important}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerI18n }, { type: i0.Renderer2 }]; }, propDecorators: { date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], years: [{\n type: Input\n }], select: [{\n type: Output\n }], monthSelect: [{\n type: ViewChild,\n args: ['month', { static: true, read: ElementRef }]\n }], yearSelect: [{\n type: ViewChild,\n args: ['year', { static: true, read: ElementRef }]\n }] } });\n\nclass NgbDatepickerNavigation {\n constructor(i18n) {\n this.i18n = i18n;\n this.navigation = NavigationEvent;\n this.months = [];\n this.navigate = new EventEmitter();\n this.select = new EventEmitter();\n }\n onClickPrev(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.PREV);\n }\n onClickNext(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.NEXT);\n }\n}\nNgbDatepickerNavigation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerNavigation, deps: [{ token: NgbDatepickerI18n }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepickerNavigation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDatepickerNavigation, selector: \"ngb-datepicker-navigation\", inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", showSelect: \"showSelect\", prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", selectBoxes: \"selectBoxes\" }, outputs: { navigate: \"navigate\", select: \"select\" }, ngImport: i0, template: `\n
\n \n
\n \n \n\n \n
0\">
\n
\n {{ i18n.getMonthLabel(month.firstDate) }}\n
\n
\n
\n
\n \n
\n `, isInline: true, styles: [\"ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: NgbDatepickerNavigationSelect, selector: \"ngb-datepicker-navigation-select\", inputs: [\"date\", \"disabled\", \"months\", \"years\"], outputs: [\"select\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerNavigation, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-datepicker-navigation', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `\n
\n \n
\n \n \n\n \n
0\">
\n
\n {{ i18n.getMonthLabel(month.firstDate) }}\n
\n
\n
\n
\n \n
\n `, styles: [\"ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerI18n }]; }, propDecorators: { date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], showSelect: [{\n type: Input\n }], prevDisabled: [{\n type: Input\n }], nextDisabled: [{\n type: Input\n }], selectBoxes: [{\n type: Input\n }], navigate: [{\n type: Output\n }], select: [{\n type: Output\n }] } });\n\nclass NgbDatepickerDayView {\n constructor(i18n) {\n this.i18n = i18n;\n }\n isMuted() { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); }\n}\nNgbDatepickerDayView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerDayView, deps: [{ token: NgbDatepickerI18n }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepickerDayView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDatepickerDayView, selector: \"[ngbDatepickerDayView]\", inputs: { currentMonth: \"currentMonth\", date: \"date\", disabled: \"disabled\", focused: \"focused\", selected: \"selected\" }, host: { properties: { \"class.bg-primary\": \"selected\", \"class.text-white\": \"selected\", \"class.text-muted\": \"isMuted()\", \"class.outside\": \"isMuted()\", \"class.active\": \"focused\" }, classAttribute: \"btn-light\" }, ngImport: i0, template: `{{ i18n.getDayNumerals(date) }}`, isInline: true, styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView].outside{opacity:.5}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerDayView, decorators: [{\n type: Component,\n args: [{ selector: '[ngbDatepickerDayView]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n 'class': 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused'\n }, template: `{{ i18n.getDayNumerals(date) }}`, styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView].outside{opacity:.5}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerI18n }]; }, propDecorators: { currentMonth: [{\n type: Input\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], focused: [{\n type: Input\n }], selected: [{\n type: Input\n }] } });\n\nvar Key;\n(function (Key) {\n Key[Key[\"Tab\"] = 9] = \"Tab\";\n Key[Key[\"Enter\"] = 13] = \"Enter\";\n Key[Key[\"Escape\"] = 27] = \"Escape\";\n Key[Key[\"Space\"] = 32] = \"Space\";\n Key[Key[\"PageUp\"] = 33] = \"PageUp\";\n Key[Key[\"PageDown\"] = 34] = \"PageDown\";\n Key[Key[\"End\"] = 35] = \"End\";\n Key[Key[\"Home\"] = 36] = \"Home\";\n Key[Key[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Key[Key[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Key[Key[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Key[Key[\"ArrowDown\"] = 40] = \"ArrowDown\";\n})(Key || (Key = {}));\n\n/**\n * A service that represents the keyboard navigation.\n *\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\n *\n * @since 5.2.0\n */\nclass NgbDatepickerKeyboardService {\n /**\n * Processes a keyboard event.\n */\n processKey(event, datepicker) {\n const { state, calendar } = datepicker;\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.PageUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.PageDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.End:\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n break;\n case Key.Home:\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n break;\n case Key.ArrowLeft:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.ArrowRight:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.Enter:\n case Key.Space:\n datepicker.focusSelect();\n break;\n default:\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n }\n}\nNgbDatepickerKeyboardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerKeyboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerKeyboardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerKeyboardService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerKeyboardService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A directive that marks the content template that customizes the way datepicker months are displayed\n *\n * @since 5.3.0\n */\nclass NgbDatepickerContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbDatepickerContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDatepickerContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDatepickerContent, selector: \"ng-template[ngbDatepickerContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerContent, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbDatepickerContent]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\nclass NgbDatepicker {\n constructor(_service, _calendar, i18n, config, cd, _elementRef, _ngbDateAdapter, _ngZone) {\n this._service = _service;\n this._calendar = _calendar;\n this.i18n = i18n;\n this._elementRef = _elementRef;\n this._ngbDateAdapter = _ngbDateAdapter;\n this._ngZone = _ngZone;\n this._controlValue = null;\n this._destroyed$ = new Subject();\n this._publicState = {};\n /**\n * An event emitted right before the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 5.2.0\n */\n this.dateSelect = new EventEmitter();\n this.onChange = (_) => { };\n this.onTouched = () => { };\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showWeekNumbers', 'startDate', 'weekdays']\n .forEach(input => this[input] = config[input]);\n _service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe(date => { this.dateSelect.emit(date); });\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe(model => {\n const newDate = model.firstDate;\n const oldDate = this.model ? this.model.firstDate : null;\n // update public state\n this._publicState = {\n maxDate: model.maxDate,\n minDate: model.minDate,\n firstDate: model.firstDate,\n lastDate: model.lastDate,\n focusedDate: model.focusDate,\n months: model.months.map(viewModel => viewModel.firstDate)\n };\n let navigationPrevented = false;\n // emitting navigation event if the first month changes\n if (!newDate.equals(oldDate)) {\n this.navigate.emit({\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n next: { year: newDate.year, month: newDate.month },\n preventDefault: () => navigationPrevented = true\n });\n // can't prevent the very first navigation\n if (navigationPrevented && oldDate !== null) {\n this._service.open(oldDate);\n return;\n }\n }\n const newSelectedDate = model.selectedDate;\n const newFocusedDate = model.focusDate;\n const oldFocusedDate = this.model ? this.model.focusDate : null;\n this.model = model;\n // handling selection change\n if (isChangedDate(newSelectedDate, this._controlValue)) {\n this._controlValue = newSelectedDate;\n this.onTouched();\n this.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\n }\n // handling focus change\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n this.focus();\n }\n cd.markForCheck();\n });\n }\n /**\n * Returns the readonly public state of the datepicker\n *\n * @since 5.2.0\n */\n get state() { return this._publicState; }\n /**\n * Returns the calendar service used in the specific datepicker instance.\n *\n * @since 5.3.0\n */\n get calendar() { return this._calendar; }\n /**\n * Focuses on given date.\n */\n focusDate(date) { this._service.focus(NgbDate.from(date)); }\n /**\n * Selects focused date.\n */\n focusSelect() { this._service.focusSelect(); }\n focus() {\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const elementToFocus = this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n if (elementToFocus) {\n elementToFocus.focus();\n }\n });\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n this._service.open(NgbDate.from(date ? date.day ? date : { ...date, day: 1 } : null));\n }\n ngAfterViewInit() {\n this._ngZone.runOutsideAngular(() => {\n const focusIns$ = fromEvent(this._contentEl.nativeElement, 'focusin');\n const focusOuts$ = fromEvent(this._contentEl.nativeElement, 'focusout');\n const { nativeElement } = this._elementRef;\n // we're changing 'focusVisible' only when entering or leaving months view\n // and ignoring all focus events where both 'target' and 'related' target are day cells\n merge(focusIns$, focusOuts$)\n .pipe(filter(({ target, relatedTarget }) => !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day') &&\n nativeElement.contains(target) && nativeElement.contains(relatedTarget))), takeUntil(this._destroyed$))\n .subscribe(({ type }) => this._ngZone.run(() => this._service.set({ focusVisible: type === 'focusin' })));\n });\n }\n ngOnDestroy() { this._destroyed$.next(); }\n ngOnInit() {\n if (this.model === undefined) {\n const inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays', 'weekdays']\n .forEach(name => inputs[name] = this[name]);\n this._service.set(inputs);\n this.navigateTo(this.startDate);\n }\n if (!this.dayTemplate) {\n this.dayTemplate = this._defaultDayTemplate;\n }\n }\n ngOnChanges(changes) {\n const inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays', 'weekdays']\n .filter(name => name in changes)\n .forEach(name => inputs[name] = this[name]);\n this._service.set(inputs);\n if ('startDate' in changes) {\n const { currentValue, previousValue } = changes.startDate;\n if (isChangedMonth(previousValue, currentValue)) {\n this.navigateTo(this.startDate);\n }\n }\n }\n onDateSelect(date) {\n this._service.focus(date);\n this._service.select(date, { emitEvent: true });\n }\n onNavigateDateSelect(date) { this._service.open(date); }\n onNavigateEvent(event) {\n switch (event) {\n case NavigationEvent.PREV:\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n break;\n case NavigationEvent.NEXT:\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n break;\n }\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(disabled) { this._service.set({ disabled }); }\n writeValue(value) {\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n this._service.select(this._controlValue);\n }\n}\nNgbDatepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepicker, deps: [{ token: NgbDatepickerService }, { token: NgbCalendar }, { token: NgbDatepickerI18n }, { token: NgbDatepickerConfig }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: NgbDateAdapter }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDatepicker, selector: \"ngb-datepicker\", inputs: { dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", weekdays: \"weekdays\" }, outputs: { navigate: \"navigate\", dateSelect: \"dateSelect\" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true }, NgbDatepickerService], queries: [{ propertyName: \"contentTemplate\", first: true, predicate: NgbDatepickerContent, descendants: true, static: true }], viewQueries: [{ propertyName: \"_defaultDayTemplate\", first: true, predicate: [\"defaultDayTemplate\"], descendants: true, static: true }, { propertyName: \"_contentEl\", first: true, predicate: [\"content\"], descendants: true, static: true }], exportAs: [\"ngbDatepicker\"], usesOnChanges: true, ngImport: i0, template: `\n \n
\n
\n
\n\n \n
\n
1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\n {{ i18n.getMonthLabel(month.firstDate) }}\n
\n \n
\n
\n\n
\n \n \n
\n\n
\n \n
\n\n \n `, isInline: true, styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1055}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--bs-light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--bs-light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i2.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i2.NgTemplateOutlet; }), selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i0.forwardRef(function () { return NgbDatepickerMonth; }), selector: \"ngb-datepicker-month\", inputs: [\"month\"] }, { kind: \"component\", type: i0.forwardRef(function () { return NgbDatepickerNavigation; }), selector: \"ngb-datepicker-navigation\", inputs: [\"date\", \"disabled\", \"months\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\"], outputs: [\"navigate\", \"select\"] }, { kind: \"component\", type: i0.forwardRef(function () { return NgbDatepickerDayView; }), selector: \"[ngbDatepickerDayView]\", inputs: [\"currentMonth\", \"date\", \"disabled\", \"focused\", \"selected\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepicker, decorators: [{\n type: Component,\n args: [{ exportAs: 'ngbDatepicker', selector: 'ngb-datepicker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `\n \n
\n
\n
\n\n \n
\n
1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\n {{ i18n.getMonthLabel(month.firstDate) }}\n
\n \n
\n
\n\n
\n \n \n
\n\n
\n \n
\n\n \n `, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true }, NgbDatepickerService], styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1055}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--bs-light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--bs-light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerService }, { type: NgbCalendar }, { type: NgbDatepickerI18n }, { type: NgbDatepickerConfig }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: NgbDateAdapter }, { type: i0.NgZone }]; }, propDecorators: { _defaultDayTemplate: [{\n type: ViewChild,\n args: ['defaultDayTemplate', { static: true }]\n }], _contentEl: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [NgbDatepickerContent, { static: true }]\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], weekdays: [{\n type: Input\n }], navigate: [{\n type: Output\n }], dateSelect: [{\n type: Output\n }] } });\n/**\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\n * the `` when you want to customize months layout.\n *\n * For a usage example, see [custom month layout demo](#/components/datepicker/examples#custommonth)\n *\n * @since 5.3.0\n */\nclass NgbDatepickerMonth {\n constructor(i18n, datepicker, _keyboardService, _service) {\n this.i18n = i18n;\n this.datepicker = datepicker;\n this._keyboardService = _keyboardService;\n this._service = _service;\n }\n /**\n * The first date of month to be rendered.\n *\n * This month must one of the months present in the\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n */\n set month(month) {\n this.viewModel = this._service.getMonth(month);\n }\n onKeyDown(event) { this._keyboardService.processKey(event, this.datepicker); }\n doSelect(day) {\n if (!day.context.disabled && !day.hidden) {\n this.datepicker.onDateSelect(day.date);\n }\n }\n}\nNgbDatepickerMonth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerMonth, deps: [{ token: NgbDatepickerI18n }, { token: NgbDatepicker }, { token: NgbDatepickerKeyboardService }, { token: NgbDatepickerService }], target: i0.ɵɵFactoryTarget.Component });\nNgbDatepickerMonth.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDatepickerMonth, selector: \"ngb-datepicker-month\", inputs: { month: \"month\" }, host: { attributes: { \"role\": \"grid\" }, listeners: { \"keydown\": \"onKeyDown($event)\" } }, ngImport: i0, template: `\n
0\" class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\n
{{ i18n.getWeekLabel() }}
\n
{{ weekday }}
\n
\n \n
\n
{{ i18n.getWeekNumerals(week.number) }}
\n
\n \n \n \n
\n
\n
\n `, isInline: true, styles: [\"ngb-datepicker-month{display:block}.ngb-dp-weekday,.ngb-dp-week-number{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#0dcaf0;color:var(--bs-info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--bs-light)}.ngb-dp-day,.ngb-dp-weekday,.ngb-dp-week-number{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerMonth, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-datepicker-month', host: { 'role': 'grid', '(keydown)': 'onKeyDown($event)' }, encapsulation: ViewEncapsulation.None, template: `\n
0\" class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\n
{{ i18n.getWeekLabel() }}
\n
{{ weekday }}
\n
\n \n
\n
{{ i18n.getWeekNumerals(week.number) }}
\n
\n \n \n \n
\n
\n
\n `, styles: [\"ngb-datepicker-month{display:block}.ngb-dp-weekday,.ngb-dp-week-number{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#0dcaf0;color:var(--bs-info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--bs-light)}.ngb-dp-day,.ngb-dp-weekday,.ngb-dp-week-number{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbDatepickerI18n }, { type: NgbDatepicker }, { type: NgbDatepickerKeyboardService }, { type: NgbDatepickerService }]; }, propDecorators: { month: [{\n type: Input\n }] } });\n\nconst isContainedIn = (element, array) => array ? array.some(item => item.contains(element)) : false;\nconst matchesSelectorIfAny = (element, selector) => !selector || closest(element, selector) != null;\n// we have to add a more significant delay to avoid re-opening when handling (click) on a toggling element\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\nconst isMobile = (() => {\n const isIOS = () => /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n const isAndroid = () => /Android/.test(navigator.userAgent);\n return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\n})();\n// setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\n// when tapping on the triggering element\nconst wrapAsyncForMobile = fn => isMobile ? () => setTimeout(() => fn(), 100) : fn;\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n // closing on ESC and outside clicks\n if (type) {\n zone.runOutsideAngular(wrapAsyncForMobile(() => {\n const shouldCloseOnClick = (event) => {\n const element = event.target;\n if (event.button === 2 || isContainedIn(element, ignoreElements)) {\n return false;\n }\n if (type === 'inside') {\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n }\n else if (type === 'outside') {\n return !isContainedIn(element, insideElements);\n }\n else /* if (type === true) */ {\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n }\n };\n const escapes$ = fromEvent(document, 'keydown')\n .pipe(takeUntil(closed$), \n /* eslint-disable-next-line deprecation/deprecation */\n filter(e => e.which === Key.Escape), tap(e => e.preventDefault()));\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\n // because on 'mouseup' DOM nodes might be detached\n const mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\n const closeableClicks$ = fromEvent(document, 'mouseup')\n .pipe(withLatestFrom(mouseDowns$), filter(([_, shouldClose]) => shouldClose), delay(0), takeUntil(closed$));\n race([\n escapes$.pipe(map(_ => 0 /* SOURCE.ESCAPE */)), closeableClicks$.pipe(map(_ => 1 /* SOURCE.CLICK */))\n ]).subscribe((source) => zone.run(() => close(source)));\n }));\n }\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\n 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nfunction getFocusableBoundaryElements(element) {\n const list = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))\n .filter(el => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param zone Angular zone\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nconst ngbFocusTrap = (zone, element, stopFocusTrap$, refocusOnClick = false) => {\n zone.runOutsideAngular(() => {\n // last focused element\n const lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(e => e.target));\n // 'tab' / 'shift+tab' stream\n fromEvent(element, 'keydown')\n .pipe(takeUntil(stopFocusTrap$), \n /* eslint-disable-next-line deprecation/deprecation */\n filter(e => e.which === Key.Tab), withLatestFrom(lastFocusedElement$))\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n last.focus();\n tabEvent.preventDefault();\n }\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(arr => arr[1]))\n .subscribe(lastFocusedElement => lastFocusedElement.focus());\n }\n });\n};\n\nconst placementSeparator = /\\s+/;\nconst spacesRegExp = / +/gi;\nconst startPrimaryPlacement = /^start/;\nconst endPrimaryPlacement = /^end/;\nconst startSecondaryPlacement = /-(top|left)$/;\nconst endSecondaryPlacement = /-(bottom|right)$/;\nfunction getPopperClassPlacement(placement) {\n const newPlacement = placement.replace(startPrimaryPlacement, 'left')\n .replace(endPrimaryPlacement, 'right')\n .replace(startSecondaryPlacement, '-start')\n .replace(endSecondaryPlacement, '-end');\n return newPlacement;\n}\nconst popperStartPrimaryPlacement = /^left/;\nconst popperEndPrimaryPlacement = /^right/;\nconst popperStartSecondaryPlacement = /^start/;\nconst popperEndSecondaryPlacement = /^end/;\nfunction getBootstrapBaseClassPlacement(baseClass, placement) {\n let [primary, secondary] = placement.split('-');\n const newPrimary = primary.replace(popperStartPrimaryPlacement, 'start').replace(popperEndPrimaryPlacement, 'end');\n let classnames = [newPrimary];\n if (secondary) {\n let newSecondary = secondary;\n if (primary === 'left' || primary === 'right') {\n newSecondary =\n newSecondary.replace(popperStartSecondaryPlacement, 'top').replace(popperEndSecondaryPlacement, 'bottom');\n }\n classnames.push(`${newPrimary}-${newSecondary}`);\n }\n if (baseClass) {\n classnames = classnames.map((classname) => `${baseClass}-${classname}`);\n }\n return classnames.join(' ');\n}\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'start', 'end',\n * 'top-start', 'top-end',\n * 'bottom-start', 'bottom-end',\n * 'start-top', 'start-bottom',\n * 'end-top', 'end-bottom'.\n * */\nfunction getPopperOptions({ placement, baseClass }) {\n let placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n // No need to consider left and right here, as start and end are enough, and it is used for 'auto' placement only\n const allowedPlacements = [\n 'top', 'bottom', 'start', 'end', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'start-top', 'start-bottom',\n 'end-top', 'end-bottom'\n ];\n // replace auto placement with other placements\n let hasAuto = placementVals.findIndex(val => val === 'auto');\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n const popperPlacements = placementVals.map((_placement) => { return getPopperClassPlacement(_placement); });\n let mainPlacement = popperPlacements.shift();\n const bsModifier = {\n name: 'bootstrapClasses',\n enabled: !!baseClass,\n phase: 'write',\n fn({ state }) {\n const bsClassRegExp = new RegExp(baseClass + '(-[a-z]+)*', 'gi');\n const popperElement = state.elements.popper;\n const popperPlacement = state.placement;\n let className = popperElement.className;\n // Remove old bootstrap classes\n className = className.replace(bsClassRegExp, '');\n // Add current placements\n className += ` ${getBootstrapBaseClassPlacement(baseClass, popperPlacement)}`;\n // Remove multiple spaces\n className = className.trim().replace(spacesRegExp, ' ');\n // Reassign\n popperElement.className = className;\n },\n };\n return {\n placement: mainPlacement,\n modifiers: [\n bsModifier,\n flip,\n preventOverflow,\n arrow,\n {\n enabled: true,\n name: 'flip',\n options: {\n fallbackPlacements: popperPlacements,\n },\n },\n {\n enabled: true,\n name: 'preventOverflow',\n phase: 'main',\n fn: function () { },\n },\n ]\n };\n}\nfunction noop(arg) {\n return arg;\n}\nfunction ngbPositioning() {\n let popperInstance = null;\n return {\n createPopper(positioningOption) {\n if (!popperInstance) {\n const updatePopperOptions = positioningOption.updatePopperOptions || noop;\n let popperOptions = updatePopperOptions(getPopperOptions(positioningOption));\n popperInstance =\n createPopperLite(positioningOption.hostElement, positioningOption.targetElement, popperOptions);\n }\n },\n update() {\n if (popperInstance) {\n popperInstance.update();\n }\n },\n setOptions(positioningOption) {\n if (popperInstance) {\n const updatePopperOptions = positioningOption.updatePopperOptions || noop;\n let popperOptions = updatePopperOptions(getPopperOptions(positioningOption));\n popperInstance.setOptions(popperOptions);\n }\n },\n destroy() {\n if (popperInstance) {\n popperInstance.destroy();\n popperInstance = null;\n }\n }\n };\n}\n\n/**\n * A configuration service for the [`NgbDatepickerInput`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepicker inputs used in the application.\n *\n * @since 5.2.0\n */\nclass NgbInputDatepickerConfig extends NgbDatepickerConfig {\n constructor() {\n super(...arguments);\n this.autoClose = true;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n this.restoreFocus = true;\n }\n}\nNgbInputDatepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbInputDatepickerConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbInputDatepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbInputDatepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbInputDatepickerConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nfunction addPopperOffset(offset$1) {\n return (options) => {\n options.modifiers.push(offset, {\n name: 'offset',\n options: {\n offset: () => offset$1,\n },\n });\n return options;\n };\n}\n\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new NgbDateISOParserFormatter();\n}\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n */\nclass NgbDateParserFormatter {\n}\nNgbDateParserFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateParserFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateParserFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateParserFormatter, providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateParserFormatter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY }]\n }] });\nclass NgbDateISOParserFormatter extends NgbDateParserFormatter {\n parse(value) {\n if (value != null) {\n const dateParts = value.trim().split('-');\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\n return { year: toInteger(dateParts[0]), month: null, day: null };\n }\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n }\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n }\n }\n return null;\n }\n format(date) {\n return date ?\n `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${isNumber(date.day) ? padNumber(date.day) : ''}` :\n '';\n }\n}\nNgbDateISOParserFormatter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateISOParserFormatter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateISOParserFormatter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateISOParserFormatter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateISOParserFormatter, decorators: [{\n type: Injectable\n }] });\n\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\nclass NgbInputDatepicker {\n constructor(_parserFormatter, _elRef, _vcRef, _renderer, _ngZone, _calendar, _dateAdapter, _document, _changeDetector, config) {\n this._parserFormatter = _parserFormatter;\n this._elRef = _elRef;\n this._vcRef = _vcRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._calendar = _calendar;\n this._dateAdapter = _dateAdapter;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._cRef = null;\n this._disabled = false;\n this._elWithFocus = null;\n this._model = null;\n this._positioning = ngbPositioning();\n this._destroyCloseHandlers$ = new Subject();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 1.1.1\n */\n this.dateSelect = new EventEmitter();\n /**\n * Event emitted right after the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event fired after closing datepicker window.\n *\n * @since 4.2.0\n */\n this.closed = new EventEmitter();\n this._onChange = (_) => { };\n this._onTouched = () => { };\n this._validatorChange = () => { };\n ['autoClose', 'container', 'positionTarget', 'placement'].forEach(input => this[input] = config[input]);\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value === '' || (value && value !== 'false');\n if (this.isOpen()) {\n this._cRef.instance.setDisabledState(this._disabled);\n }\n }\n registerOnChange(fn) { this._onChange = fn; }\n registerOnTouched(fn) { this._onTouched = fn; }\n registerOnValidatorChange(fn) { this._validatorChange = fn; }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n validate(c) {\n const { value } = c;\n if (value != null) {\n const ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n if (!ngbDate) {\n return { 'ngbDate': { invalid: value } };\n }\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n return { 'ngbDate': { minDate: { minDate: this.minDate, actual: value } } };\n }\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n return { 'ngbDate': { maxDate: { maxDate: this.maxDate, actual: value } } };\n }\n }\n return null;\n }\n writeValue(value) {\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n this._writeModelValue(this._model);\n }\n manualDateChange(value, updateView = false) {\n const inputValueChanged = value !== this._inputValue;\n if (inputValueChanged) {\n this._inputValue = value;\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n }\n if (inputValueChanged || !updateView) {\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\n }\n if (updateView && this._model) {\n this._writeModelValue(this._model);\n }\n }\n isOpen() { return !!this._cRef; }\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n */\n open() {\n if (!this.isOpen()) {\n this._cRef = this._vcRef.createComponent(NgbDatepicker);\n this._applyPopupStyling(this._cRef.location.nativeElement);\n this._applyDatepickerInputs(this._cRef.instance);\n this._subscribeForDatepickerOutputs(this._cRef.instance);\n this._cRef.instance.ngOnInit();\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n // date selection event handling\n this._cRef.instance.registerOnChange((selectedDate) => {\n this.writeValue(selectedDate);\n this._onChange(selectedDate);\n this._onTouched();\n });\n this._cRef.changeDetectorRef.detectChanges();\n this._cRef.instance.setDisabledState(this.disabled);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n }\n // focus handling\n this._elWithFocus = this._document.activeElement;\n ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n setTimeout(() => this._cRef?.instance.focus());\n let hostElement;\n if (isString(this.positionTarget)) {\n hostElement = this._document.querySelector(this.positionTarget);\n }\n else if (this.positionTarget instanceof HTMLElement) {\n hostElement = this.positionTarget;\n }\n else {\n hostElement = this._elRef.nativeElement;\n }\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n if (this._cRef) {\n this._positioning.createPopper({\n hostElement,\n targetElement: this._cRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: addPopperOffset([0, 2])\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n }\n });\n if (this.positionTarget && !hostElement) {\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n }\n this._setCloseHandlers();\n }\n }\n /**\n * Closes the datepicker popup.\n */\n close() {\n if (this.isOpen()) {\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n this._cRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._destroyCloseHandlers$.next();\n this.closed.emit();\n this._changeDetector.markForCheck();\n // restore focus\n let elementToFocus = this._elWithFocus;\n if (isString(this.restoreFocus)) {\n elementToFocus = this._document.querySelector(this.restoreFocus);\n }\n else if (this.restoreFocus !== undefined) {\n elementToFocus = this.restoreFocus;\n }\n // in IE document.activeElement can contain an object without 'focus()' sometimes\n if (elementToFocus && elementToFocus['focus']) {\n elementToFocus.focus();\n }\n else {\n this._document.body.focus();\n }\n }\n }\n /**\n * Toggles the datepicker popup.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n if (this.isOpen()) {\n this._cRef.instance.navigateTo(date);\n }\n }\n onBlur() { this._onTouched(); }\n onFocus() { this._elWithFocus = this._elRef.nativeElement; }\n ngOnChanges(changes) {\n if (changes['minDate'] || changes['maxDate']) {\n this._validatorChange();\n if (this.isOpen()) {\n if (changes['minDate']) {\n this._cRef.instance.minDate = this.minDate;\n }\n if (changes['maxDate']) {\n this._cRef.instance.maxDate = this.maxDate;\n }\n this._cRef.instance.ngOnChanges(changes);\n }\n }\n if (changes['datepickerClass']) {\n const { currentValue, previousValue } = changes['datepickerClass'];\n this._applyPopupClass(currentValue, previousValue);\n }\n if (changes['autoClose'] && this.isOpen()) {\n this._setCloseHandlers();\n }\n }\n ngOnDestroy() { this.close(); }\n _applyDatepickerInputs(datepickerInstance) {\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekNumbers', 'weekdays']\n .forEach((optionName) => {\n if (this[optionName] !== undefined) {\n datepickerInstance[optionName] = this[optionName];\n }\n });\n datepickerInstance.startDate = this.startDate || this._model;\n }\n _applyPopupClass(newClass, oldClass) {\n const popupEl = this._cRef?.location.nativeElement;\n if (popupEl) {\n if (newClass) {\n this._renderer.addClass(popupEl, newClass);\n }\n if (oldClass) {\n this._renderer.removeClass(popupEl, oldClass);\n }\n }\n }\n _applyPopupStyling(nativeElement) {\n this._renderer.addClass(nativeElement, 'dropdown-menu');\n this._renderer.addClass(nativeElement, 'show');\n if (this.container === 'body') {\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\n }\n this._applyPopupClass(this.datepickerClass);\n }\n _subscribeForDatepickerOutputs(datepickerInstance) {\n datepickerInstance.navigate.subscribe(navigateEvent => this.navigate.emit(navigateEvent));\n datepickerInstance.dateSelect.subscribe(date => {\n this.dateSelect.emit(date);\n if (this.autoClose === true || this.autoClose === 'inside') {\n this.close();\n }\n });\n }\n _writeModelValue(model) {\n const value = this._parserFormatter.format(model);\n this._inputValue = value;\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n if (this.isOpen()) {\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n this._onTouched();\n }\n }\n _fromDateStruct(date) {\n const ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\n }\n _setCloseHandlers() {\n this._destroyCloseHandlers$.next();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this._destroyCloseHandlers$, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n }\n}\nNgbInputDatepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbInputDatepicker, deps: [{ token: NgbDateParserFormatter }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: NgbCalendar }, { token: NgbDateAdapter }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: NgbInputDatepickerConfig }], target: i0.ɵɵFactoryTarget.Directive });\nNgbInputDatepicker.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbInputDatepicker, selector: \"input[ngbDatepicker]\", inputs: { autoClose: \"autoClose\", datepickerClass: \"datepickerClass\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", placement: \"placement\", restoreFocus: \"restoreFocus\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", container: \"container\", positionTarget: \"positionTarget\", weekdays: \"weekdays\", disabled: \"disabled\" }, outputs: { dateSelect: \"dateSelect\", navigate: \"navigate\", closed: \"closed\" }, host: { listeners: { \"input\": \"manualDateChange($event.target.value)\", \"change\": \"manualDateChange($event.target.value, true)\", \"focus\": \"onFocus()\", \"blur\": \"onBlur()\" }, properties: { \"disabled\": \"disabled\" } }, providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ], exportAs: [\"ngbDatepicker\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbInputDatepicker, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled'\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ],\n }]\n }], ctorParameters: function () { return [{ type: NgbDateParserFormatter }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: NgbCalendar }, { type: NgbDateAdapter }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ChangeDetectorRef }, { type: NgbInputDatepickerConfig }]; }, propDecorators: { autoClose: [{\n type: Input\n }], datepickerClass: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], placement: [{\n type: Input\n }], restoreFocus: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], container: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }], weekdays: [{\n type: Input\n }], dateSelect: [{\n type: Output\n }], navigate: [{\n type: Output\n }], closed: [{\n type: Output\n }], disabled: [{\n type: Input\n }] } });\n\nclass NgbCalendarHijri extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = this._setYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = this._setMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return this._setDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = this.toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = this.toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return this.fromGregorian(new Date()); }\n isValid(date) {\n return date != null && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\n !isNaN(this.toGregorian(date).getTime());\n }\n _setDay(date, day) {\n day = +day;\n let mDays = this.getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = this._setMonth(date, date.month - 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = this._setMonth(date, date.month + 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n }\n _setMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n }\n _setYear(date, year) {\n date.year = +year;\n return date;\n }\n}\nNgbCalendarHijri.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarHijri, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarHijri.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarHijri });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarHijri, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Checks if islamic year is a leap year\n */\nfunction isIslamicLeapYear(hYear) {\n return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n */\nfunction isGregorianLeapYear$1(gDate) {\n const year = gDate.getFullYear();\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\nfunction getIslamicMonthStart(hYear, hMonth) {\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n */\nfunction getIslamicYearStart(year) {\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\nfunction mod$1(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n */\nconst GREGORIAN_EPOCH$1 = 1721425.5;\nconst ISLAMIC_EPOCH = 1948439.5;\nclass NgbCalendarIslamicCivil extends NgbCalendarHijri {\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n const gYear = gDate.getFullYear(), gMonth = gDate.getMonth(), gDay = gDate.getDate();\n let julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\n -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gDate) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay) + 0.5;\n const days = julianDay - ISLAMIC_EPOCH;\n const hYear = Math.floor((30 * days + 10646) / 10631.0);\n let hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n hMonth = Math.min(hMonth, 11);\n const hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n const julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n const wjd = Math.floor(julianDay - 0.5) + 0.5, depoch = wjd - GREGORIAN_EPOCH$1, quadricent = Math.floor(depoch / 146097), dqc = mod$1(depoch, 146097), cent = Math.floor(dqc / 36524), dcent = mod$1(dqc, 36524), quad = Math.floor(dcent / 1461), dquad = mod$1(dcent, 1461), yindex = Math.floor(dquad / 365);\n let year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n if (!(cent === 4 || yindex === 4)) {\n year++;\n }\n const gYearStart = GREGORIAN_EPOCH$1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400);\n const yearday = wjd - gYearStart;\n const tjd = GREGORIAN_EPOCH$1 - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear$1(new Date(year, 3, 1)) ? -1 : -2) + 1);\n const leapadj = wjd < tjd ? 0 : isGregorianLeapYear$1(new Date(year, 3, 1)) ? 1 : 2;\n const month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n const tjd2 = GREGORIAN_EPOCH$1 - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) +\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear$1(new Date(year, month - 1, 1)) ? -1 : -2) +\n 1);\n const day = wjd - tjd2 + 1;\n return new Date(year, month - 1, day);\n }\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n */\n getDaysPerMonth(month, year) {\n year = year + Math.floor(month / 13);\n month = ((month - 1) % 12) + 1;\n let length = 29 + month % 2;\n if (month === 12 && isIslamicLeapYear(year)) {\n length++;\n }\n return length;\n }\n}\nNgbCalendarIslamicCivil.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarIslamicCivil, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarIslamicCivil.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarIslamicCivil });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarIslamicCivil, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n */\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\nconst HIJRI_BEGIN = 1300;\nconst HIJRI_END = 1600;\nconst ONE_DAY = 1000 * 60 * 60 * 24;\nconst MONTH_LENGTH = [\n // 1300-1304\n '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\n // 1305-1309\n '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\n // 1310-1314\n '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\n // 1315-1319\n '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\n // 1320-1324\n '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\n // 1325-1329\n '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\n // 1330-1334\n '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\n // 1335-1339\n '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\n // 1340-1344\n '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\n // 1345-1349\n '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\n // 1350-1354\n '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\n // 1355-1359\n '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\n // 1360-1364\n '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\n // 1365-1369\n '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\n // 1370-1374\n '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\n // 1375-1379\n '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\n // 1380-1384\n '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\n // 1385-1389\n '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\n // 1390-1394\n '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\n // 1395-1399\n '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\n // 1400-1404\n '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\n // 1405-1409\n '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\n // 1410-1414\n '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\n // 1415-1419\n '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\n // 1420-1424\n '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\n // 1425-1429\n '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\n // 1430-1434\n '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\n // 1435-1439\n '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\n // 1440-1444\n '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\n // 1445-1449\n '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\n // 1450-1454\n '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\n // 1455-1459\n '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\n // 1460-1464\n '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\n // 1465-1469\n '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\n // 1470-1474\n '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\n // 1475-1479\n '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\n // 1480-1484\n '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\n // 1485-1489\n '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\n // 1490-1494\n '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\n // 1495-1499\n '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\n // 1500-1504\n '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\n // 1505-1509\n '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\n // 1510-1514\n '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\n // 1515-1519\n '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\n // 1520-1524\n '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\n // 1525-1529\n '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\n // 1530-1534\n '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\n // 1535-1539\n '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\n // 1540-1544\n '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\n // 1545-1549\n '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\n // 1550-1554\n '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\n // 1555-1559\n '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\n // 1560-1564\n '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\n // 1565-1569\n '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\n // 1570-1574\n '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\n // 1575-1579\n '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\n // 1580-1584\n '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\n // 1585-1589\n '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\n // 1590-1594\n '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\n // 1595-1599\n '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\n // 1600\n '001010011101'\n];\nfunction getDaysDiff(date1, date2) {\n // Ignores the time part in date1 and date2:\n const time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n const diff = Math.abs(time1 - time2);\n return Math.round(diff / ONE_DAY);\n}\nclass NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n let hDay = 1, hMonth = 0, hYear = 1300;\n let daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n let year = 1300;\n for (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\n for (let j = 0; j < 12; j++) {\n let numOfDays = +MONTH_LENGTH[i][j] + 29;\n if (daysDiff <= numOfDays) {\n hDay = daysDiff + 1;\n if (hDay > numOfDays) {\n hDay = 1;\n j++;\n }\n if (j > 11) {\n j = 0;\n year++;\n }\n hMonth = j;\n hYear = year;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n daysDiff = daysDiff - numOfDays;\n }\n }\n return null;\n }\n else {\n return super.fromGregorian(gDate);\n }\n }\n /**\n * Converts the current Hijri date to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n let gDate = new Date(GREGORIAN_FIRST_DATE);\n let dayDiff = hDay - 1;\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n for (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\n for (let m = 0; m < 12; m++) {\n dayDiff += +MONTH_LENGTH[y][m] + 29;\n }\n }\n for (let m = 0; m < hMonth; m++) {\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n }\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n }\n else {\n gDate = super.toGregorian(hDate);\n }\n return gDate;\n }\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\n getDaysPerMonth(hMonth, hYear) {\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n const pos = hYear - HIJRI_BEGIN;\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n }\n return super.getDaysPerMonth(hMonth, hYear);\n }\n}\nNgbCalendarIslamicUmalqura.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarIslamicUmalqura, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarIslamicUmalqura.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarIslamicUmalqura });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarIslamicUmalqura, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n */\nfunction toGregorian$2(jalaliDate) {\n let jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n let date = julianToGregorian(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n */\nfunction fromGregorian$2(gdate) {\n let g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return julianToJalali(g2d);\n}\nfunction setJalaliYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\nfunction setJalaliMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n}\nfunction setJalaliDay(date, day) {\n let mDays = getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setJalaliMonth(date, date.month - 1);\n mDays = getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setJalaliMonth(date, date.month + 1);\n mDays = getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\nfunction mod(a, b) {\n return a - b * Math.floor(a / b);\n}\nfunction div(a, b) {\n return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\nfunction jalCal(jalaliYear) {\n // Jalali years starting the 33-year rule.\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n const breaksLength = breaks.length;\n const gYear = jalaliYear + 621;\n let leapJ = -14;\n let jp = breaks[0];\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n throw new Error('Invalid Jalali year ' + jalaliYear);\n }\n // Find the limiting years for the Jalali year jalaliYear.\n let jump;\n for (let i = 1; i < breaksLength; i += 1) {\n const jm = breaks[i];\n jump = jm - jp;\n if (jalaliYear < jm) {\n break;\n }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n jp = jm;\n }\n let n = jalaliYear - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n if (mod(jump, 33) === 4 && jump - n === 4) {\n leapJ += 1;\n }\n // And the same in the Gregorian calendar (until the year gYear).\n const leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n const march = 20 + leapJ - leapG;\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) {\n n = n - jump + div(jump + 4, 33) * 33;\n }\n let leap = mod(mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return { leap: leap, gy: gYear, march: march };\n}\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\nfunction julianToGregorian(julianDayNumber) {\n let j = 4 * julianDayNumber + 139361631;\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n const i = div(mod(j, 1461), 4) * 5 + 308;\n const gDay = div(mod(i, 153), 5) + 1;\n const gMonth = mod(div(i, 153), 12) + 1;\n const gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction gregorianToJulian(gy, gm, gd) {\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod(gm + 9, 12) + 2, 5) + gd - 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\nfunction julianToJalali(julianDayNumber) {\n let gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\n , jalaliYear = gy - 621, r = jalCal(jalaliYear), gregorianDay = gregorianToJulian(gy, 3, r.march), jalaliDay, jalaliMonth, numberOfDays;\n // Find number of days that passed since 1 Farvardin.\n numberOfDays = julianDayNumber - gregorianDay;\n if (numberOfDays >= 0) {\n if (numberOfDays <= 185) {\n // The first 6 months.\n jalaliMonth = 1 + div(numberOfDays, 31);\n jalaliDay = mod(numberOfDays, 31) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n }\n else {\n // The remaining months.\n numberOfDays -= 186;\n }\n }\n else {\n // Previous Jalali year.\n jalaliYear -= 1;\n numberOfDays += 179;\n if (r.leap === 1) {\n numberOfDays += 1;\n }\n }\n jalaliMonth = 7 + div(numberOfDays, 30);\n jalaliDay = mod(numberOfDays, 30) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n let r = jalCal(jYear);\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n */\nfunction getDaysPerMonth(month, year) {\n if (month <= 6) {\n return 31;\n }\n if (month <= 11) {\n return 30;\n }\n if (jalCal(year).leap === 0) {\n return 30;\n }\n return 29;\n}\n\nclass NgbCalendarPersian extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setJalaliYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setJalaliMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setJalaliDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = toGregorian$2(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = toGregorian$2(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const startDate = toGregorian$2(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return fromGregorian$2(new Date()); }\n isValid(date) {\n return date != null && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\n !isNaN(toGregorian$2(date).getTime());\n }\n}\nNgbCalendarPersian.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarPersian, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarPersian.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarPersian });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarPersian, decorators: [{\n type: Injectable\n }] });\n\nconst PARTS_PER_HOUR = 1080;\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\nconst GREGORIAN_EPOCH = 1721425.5;\nfunction isGregorianLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nfunction numberOfFirstDayInYear(year) {\n let monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n let fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n let dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n let timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n let dayOfWeek = dayNumber % 7; // 0 == Monday\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n dayNumber++;\n dayOfWeek = dayNumber % 7;\n }\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n dayNumber += 2;\n }\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n dayNumber++;\n }\n return dayNumber;\n}\nfunction getDaysInGregorianMonth(month, year) {\n let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (isGregorianLeapYear(year)) {\n days[1]++;\n }\n return days[month - 1];\n}\nfunction getHebrewMonths(year) {\n return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewYear(year) {\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\nfunction isHebrewLeapYear(year) {\n if (year != null) {\n let b = (year * 12 + 17) % 19;\n return b >= ((b < 0) ? -7 : 12);\n }\n return false;\n}\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewMonth(month, year) {\n let yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n let yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\n let leapYear = isHebrewLeapYear(year);\n let daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\n [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n if (yearType > 0) {\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n }\n if (yearType > 1) {\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n }\n return daysInMonth[month - 1];\n}\nfunction getDayNumberInHebrewYear(date) {\n let numberOfDay = 0;\n for (let i = 1; i < date.month; i++) {\n numberOfDay += getDaysInHebrewMonth(i, date.year);\n }\n return numberOfDay + date.day;\n}\nfunction setHebrewMonth(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getHebrewMonths(date.year) - date.month) {\n val -= getHebrewMonths(date.year) - date.month + 1;\n date.year++;\n date.month = 1;\n }\n else {\n date.month += val;\n val = 0;\n }\n }\n else {\n if (val >= date.month) {\n date.year--;\n val -= date.month;\n date.month = getHebrewMonths(date.year);\n }\n else {\n date.month -= val;\n val = 0;\n }\n }\n }\n return date;\n}\nfunction setHebrewDay(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n date.year++;\n date.month = 1;\n date.day = 1;\n }\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n date.month++;\n date.day = 1;\n }\n else {\n date.day += val;\n val = 0;\n }\n }\n else {\n if (val >= date.day) {\n val -= date.day;\n date.month--;\n if (date.month === 0) {\n date.year--;\n date.month = getHebrewMonths(date.year);\n }\n date.day = getDaysInHebrewMonth(date.month, date.year);\n }\n else {\n date.day -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n */\nfunction fromGregorian$1(gdate) {\n const date = new Date(gdate);\n const gYear = date.getFullYear(), gMonth = date.getMonth(), gDay = date.getDate();\n let julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\n Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gYear) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay + 0.5);\n let daysSinceHebEpoch = julianDay - 347997;\n let monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n let hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n let firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n let dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n while (dayOfYear < 1) {\n hYear--;\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n }\n let hMonth = 1;\n let hDay = dayOfYear;\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\n hMonth++;\n }\n return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n */\nfunction toGregorian$1(hebrewDate) {\n const hYear = hebrewDate.year;\n const hMonth = hebrewDate.month;\n const hDay = hebrewDate.day;\n let days = numberOfFirstDayInYear(hYear);\n for (let i = 1; i < hMonth; i++) {\n days += getDaysInHebrewMonth(i, hYear);\n }\n days += hDay;\n let diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n let after = diffDays >= 0;\n if (!after) {\n diffDays = -diffDays;\n }\n let gYear = 1970;\n let gMonth = 1;\n let gDay = 1;\n while (diffDays > 0) {\n if (after) {\n if (diffDays >= (isGregorianLeapYear(gYear) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear(gYear) ? 366 : 365;\n gYear++;\n }\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n gMonth++;\n }\n else {\n gDay += diffDays;\n diffDays = 0;\n }\n }\n else {\n if (diffDays >= (isGregorianLeapYear(gYear - 1) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear(gYear - 1) ? 366 : 365;\n gYear--;\n }\n else {\n if (gMonth > 1) {\n gMonth--;\n }\n else {\n gMonth = 12;\n gYear--;\n }\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n }\n else {\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n diffDays = 0;\n }\n }\n }\n }\n return new Date(gYear, gMonth - 1, gDay);\n}\nfunction hebrewNumerals(numerals) {\n if (!numerals) {\n return '';\n }\n const hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n const hArray10_19 = [\n '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\n '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\n ];\n const hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n const hArray100_900 = [\n '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\n '\\u05ea\\u05ea\\u05e7'\n ];\n const hArray1000_9000 = [\n '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\n '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\n ];\n const geresh = '\\u05f3', gershaim = '\\u05f4';\n let mem = 0;\n let result = [];\n let step = 0;\n while (numerals > 0) {\n let m = numerals % 10;\n if (step === 0) {\n mem = m;\n }\n else if (step === 1) {\n if (m !== 1) {\n result.unshift(hArray20_90[m], hArray0_9[mem]);\n }\n else {\n result.unshift(hArray10_19[mem]);\n }\n }\n else if (step === 2) {\n result.unshift(hArray100_900[m]);\n }\n else {\n if (m !== 5) {\n result.unshift(hArray1000_9000[m], geresh, ' ');\n }\n break;\n }\n numerals = Math.floor(numerals / 10);\n if (step === 0 && numerals === 0) {\n result.unshift(hArray0_9[m]);\n }\n step++;\n }\n result = result.join('').split('');\n if (result.length === 1) {\n result.push(geresh);\n }\n else if (result.length > 1) {\n result.splice(result.length - 1, 0, gershaim);\n }\n return result.join('');\n}\n\n/**\n * @since 3.2.0\n */\nclass NgbCalendarHebrew extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths(year) {\n if (year && isHebrewLeapYear(year)) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n }\n else {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n }\n getWeeksPerMonth() { return 6; }\n isValid(date) {\n if (date != null) {\n let b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n return b && !isNaN(toGregorian$1(date).getTime());\n }\n return false;\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date.year += number;\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setHebrewMonth(date, number);\n date.day = 1;\n return date;\n case 'd':\n return setHebrewDay(date, number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = toGregorian$1(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n const date = week[week.length - 1];\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n }\n getToday() { return fromGregorian$1(new Date()); }\n /**\n * @since 3.4.0\n */\n toGregorian(date) { return fromJSDate(toGregorian$1(date)); }\n /**\n * @since 3.4.0\n */\n fromGregorian(date) { return fromGregorian$1(toJSDate(date)); }\n}\nNgbCalendarHebrew.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarHebrew, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarHebrew.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarHebrew });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarHebrew, decorators: [{\n type: Injectable\n }] });\n\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\nconst MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n/**\n * @since 3.2.0\n */\nclass NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n getMonthShortName(month, year) { return this.getMonthFullName(month, year); }\n getMonthFullName(month, year) {\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS[month - 1] || '';\n }\n getWeekdayLabel(weekday, width) { return WEEKDAYS[weekday - 1] || ''; }\n getDayAriaLabel(date) {\n return `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\n }\n getDayNumerals(date) { return hebrewNumerals(date.day); }\n getWeekNumerals(weekNumber) { return hebrewNumerals(weekNumber); }\n getYearNumerals(year) { return hebrewNumerals(year); }\n}\nNgbDatepickerI18nHebrew.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18nHebrew, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDatepickerI18nHebrew.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18nHebrew });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerI18nHebrew, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Returns the equivalent JS date value for a give input Buddhist date.\n * `date` is an Buddhist date to be converted to Gregorian.\n */\nfunction toGregorian(date) {\n return new Date(date.year - 543, date.month - 1, date.day);\n}\n/**\n * Returns the equivalent Buddhist date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Buddhist.\n * utc to local\n */\nfunction fromGregorian(gdate) {\n return new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\n}\n\n/**\n * @since 9.1.0\n */\nclass NgbCalendarBuddhist extends NgbCalendarGregorian {\n getToday() { return fromGregorian(new Date()); }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toGregorian(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromGregorian(jsDate);\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n let jsDate = toGregorian(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toGregorian(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year - 543 &&\n jsDate.getMonth() + 1 === date.month && jsDate.getDate() === date.day;\n }\n}\nNgbCalendarBuddhist.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarBuddhist, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbCalendarBuddhist.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarBuddhist });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbCalendarBuddhist, decorators: [{\n type: Injectable\n }] });\n\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nclass NgbDateNativeAdapter extends NgbDateAdapter {\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n */\n fromModel(date) {\n return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\n }\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n */\n toModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\n null;\n }\n _fromNativeDate(date) {\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n }\n _toNativeDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // avoid 30 -> 1930 conversion\n jsDate.setFullYear(date.year);\n return jsDate;\n }\n}\nNgbDateNativeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateNativeAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateNativeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateNativeAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateNativeAdapter, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * @since 3.2.0\n */\nclass NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n _fromNativeDate(date) {\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n }\n _toNativeDate(date) {\n const jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n // avoid 30 -> 1930 conversion\n jsDate.setUTCFullYear(date.year);\n return jsDate;\n }\n}\nNgbDateNativeUTCAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateNativeUTCAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbDateNativeUTCAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateNativeUTCAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDateNativeUTCAdapter, decorators: [{\n type: Injectable\n }] });\n\nclass NgbDatepickerModule {\n}\nNgbDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerModule, declarations: [NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect,\n NgbDatepickerDayView, NgbInputDatepicker], imports: [CommonModule, FormsModule], exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth] });\nNgbDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerModule, imports: [CommonModule, FormsModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect,\n NgbDatepickerDayView, NgbInputDatepicker\n ],\n exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth],\n imports: [CommonModule, FormsModule]\n }]\n }] });\n\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\nclass NgbDropdownConfig {\n constructor() {\n this.autoClose = true;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n }\n}\nNgbDropdownConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbDropdownConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nclass NgbNavbar {\n}\nNgbNavbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavbar, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavbar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbNavbar, selector: \".navbar\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavbar, decorators: [{\n type: Directive,\n args: [{ selector: '.navbar' }]\n }] });\n/**\n * A directive you should put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * @since 4.1.0\n */\nclass NgbDropdownItem {\n constructor(elementRef, _renderer) {\n this.elementRef = elementRef;\n this._renderer = _renderer;\n this._disabled = false;\n }\n set disabled(value) {\n this._disabled = value === '' || value === true; // accept an empty attribute as true\n // note: we don't use a host binding for disabled because when used on links, it fails because links don't have a\n // disabled property\n // setting the property using the renderer, OTOH, works fine in both cases.\n this._renderer.setProperty(this.elementRef.nativeElement, 'disabled', this._disabled);\n }\n get disabled() { return this._disabled; }\n}\nNgbDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownItem, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDropdownItem, selector: \"[ngbDropdownItem]\", inputs: { disabled: \"disabled\" }, host: { properties: { \"class.disabled\": \"disabled\", \"tabIndex\": \"disabled ? -1 : 0\" }, classAttribute: \"dropdown-item\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownItem, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownItem]',\n host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled', '[tabIndex]': 'disabled ? -1 : 0' }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { disabled: [{\n type: Input\n }] } });\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nclass NgbDropdownMenu {\n constructor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this.placement = 'bottom';\n this.isOpen = false;\n this.nativeElement = _elementRef.nativeElement;\n }\n}\nNgbDropdownMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownMenu, deps: [{ token: forwardRef(() => NgbDropdown) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdownMenu.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDropdownMenu, selector: \"[ngbDropdownMenu]\", host: { listeners: { \"keydown.ArrowUp\": \"dropdown.onKeyDown($event)\", \"keydown.ArrowDown\": \"dropdown.onKeyDown($event)\", \"keydown.Home\": \"dropdown.onKeyDown($event)\", \"keydown.End\": \"dropdown.onKeyDown($event)\", \"keydown.Enter\": \"dropdown.onKeyDown($event)\", \"keydown.Space\": \"dropdown.onKeyDown($event)\", \"keydown.Tab\": \"dropdown.onKeyDown($event)\", \"keydown.Shift.Tab\": \"dropdown.onKeyDown($event)\" }, properties: { \"class.dropdown-menu\": \"true\", \"class.show\": \"dropdown.isOpen()\" } }, queries: [{ propertyName: \"menuItems\", predicate: NgbDropdownItem }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownMenu, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)'\n }\n }]\n }], ctorParameters: function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: i0.ElementRef }]; }, propDecorators: { menuItems: [{\n type: ContentChildren,\n args: [NgbDropdownItem]\n }] } });\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * @since 1.1.0\n */\nclass NgbDropdownAnchor {\n constructor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this.nativeElement = _elementRef.nativeElement;\n }\n}\nNgbDropdownAnchor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownAnchor, deps: [{ token: forwardRef(() => NgbDropdown) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdownAnchor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDropdownAnchor, selector: \"[ngbDropdownAnchor]\", host: { properties: { \"attr.aria-expanded\": \"dropdown.isOpen()\" }, classAttribute: \"dropdown-toggle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownAnchor, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbDropdownAnchor]', host: { 'class': 'dropdown-toggle', '[attr.aria-expanded]': 'dropdown.isOpen()' } }]\n }], ctorParameters: function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: i0.ElementRef }]; } });\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\nclass NgbDropdownToggle extends NgbDropdownAnchor {\n constructor(dropdown, elementRef) {\n super(dropdown, elementRef);\n }\n}\nNgbDropdownToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownToggle, deps: [{ token: forwardRef(() => NgbDropdown) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdownToggle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDropdownToggle, selector: \"[ngbDropdownToggle]\", host: { listeners: { \"click\": \"dropdown.toggle()\", \"keydown.ArrowUp\": \"dropdown.onKeyDown($event)\", \"keydown.ArrowDown\": \"dropdown.onKeyDown($event)\", \"keydown.Home\": \"dropdown.onKeyDown($event)\", \"keydown.End\": \"dropdown.onKeyDown($event)\", \"keydown.Tab\": \"dropdown.onKeyDown($event)\", \"keydown.Shift.Tab\": \"dropdown.onKeyDown($event)\" }, properties: { \"attr.aria-expanded\": \"dropdown.isOpen()\" }, classAttribute: \"dropdown-toggle\" }, providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownToggle, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n 'class': 'dropdown-toggle',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]\n }]\n }], ctorParameters: function () { return [{ type: NgbDropdown, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: i0.ElementRef }]; } });\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nclass NgbDropdown {\n constructor(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n this._changeDetector = _changeDetector;\n this._document = _document;\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._destroyCloseHandlers$ = new Subject();\n this._bodyContainer = null;\n this._positioning = ngbPositioning();\n /**\n * Defines whether or not the dropdown menu is opened initially.\n */\n this._open = false;\n /**\n * An event fired when the dropdown is opened or closed.\n *\n * The event payload is a `boolean`:\n * * `true` - the dropdown was opened\n * * `false` - the dropdown was closed\n */\n this.openChange = new EventEmitter();\n this.placement = config.placement;\n this.container = config.container;\n this.autoClose = config.autoClose;\n this.display = ngbNavbar ? 'static' : 'dynamic';\n }\n ngAfterContentInit() {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._applyPlacementClasses();\n if (this._open) {\n this._setCloseHandlers();\n }\n });\n }\n ngOnChanges(changes) {\n if (changes.container && this._open) {\n this._applyContainer(this.container);\n }\n if (changes.placement && !changes.placement.firstChange) {\n this._positioning.setOptions({\n hostElement: this._anchor.nativeElement,\n targetElement: this._bodyContainer || this._menu.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n });\n this._applyPlacementClasses();\n }\n if (changes.dropdownClass) {\n const { currentValue, previousValue } = changes.dropdownClass;\n this._applyCustomDropdownClass(currentValue, previousValue);\n }\n if (changes.autoClose && this._open) {\n this.autoClose = changes.autoClose.currentValue;\n this._setCloseHandlers();\n }\n }\n /**\n * Checks if the dropdown menu is open.\n */\n isOpen() { return this._open; }\n /**\n * Opens the dropdown menu.\n */\n open() {\n if (!this._open) {\n this._open = true;\n this._applyContainer(this.container);\n this.openChange.emit(true);\n this._setCloseHandlers();\n if (this._anchor) {\n this._anchor.nativeElement.focus();\n if (this.display === 'dynamic') {\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._anchor.nativeElement,\n targetElement: this._bodyContainer || this._menu.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: addPopperOffset([0, 2]),\n });\n this._applyPlacementClasses();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positionMenu());\n });\n }\n }\n }\n }\n _setCloseHandlers() {\n this._destroyCloseHandlers$.next(); // destroy any existing close handlers\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (source) => {\n this.close();\n if (source === 0 /* SOURCE.ESCAPE */) {\n this._anchor.nativeElement.focus();\n }\n }, this._destroyCloseHandlers$, this._menu ? [this._menu.nativeElement] : [], this._anchor ? [this._anchor.nativeElement] : [], '.dropdown-item,.dropdown-divider');\n }\n /**\n * Closes the dropdown menu.\n */\n close() {\n if (this._open) {\n this._open = false;\n this._resetContainer();\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._destroyCloseHandlers$.next();\n this.openChange.emit(false);\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the dropdown menu.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n ngOnDestroy() { this.close(); }\n onKeyDown(event) {\n /* eslint-disable-next-line deprecation/deprecation */\n const key = event.which;\n const itemElements = this._getMenuElements();\n let position = -1;\n let itemElement = null;\n const isEventFromToggle = this._isEventFromToggle(event);\n if (!isEventFromToggle && itemElements.length) {\n itemElements.forEach((item, index) => {\n if (item.contains(event.target)) {\n itemElement = item;\n }\n if (item === this._document.activeElement) {\n position = index;\n }\n });\n }\n // closing on Enter / Space\n if (key === Key.Space || key === Key.Enter) {\n if (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\n // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n // So we have to register a one-time click handler that will fire after any user defined click handlers\n // to close the dropdown\n fromEvent(itemElement, 'click').pipe(take(1)).subscribe(() => this.close());\n }\n return;\n }\n if (key === Key.Tab) {\n if (event.target && this.isOpen() && this.autoClose) {\n if (this._anchor.nativeElement === event.target) {\n if (this.container === 'body' && !event.shiftKey) {\n /* This case is special: user is using [Tab] from the anchor/toggle.\n User expects the next focusable element in the dropdown menu to get focus.\n But the menu is not a sibling to anchor/toggle, it is at the end of the body.\n Trick is to synchronously focus the menu element, and let the [keydown.Tab] go\n so that browser will focus the proper element (first one focusable in the menu) */\n this._renderer.setAttribute(this._menu.nativeElement, 'tabindex', '0');\n this._menu.nativeElement.focus();\n this._renderer.removeAttribute(this._menu.nativeElement, 'tabindex');\n }\n else if (event.shiftKey) {\n this.close();\n }\n return;\n }\n else if (this.container === 'body') {\n const focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\n if (event.shiftKey && event.target === focusableElements[0]) {\n this._anchor.nativeElement.focus();\n event.preventDefault();\n }\n else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\n this._anchor.nativeElement.focus();\n this.close();\n }\n }\n else {\n fromEvent(event.target, 'focusout').pipe(take(1)).subscribe(({ relatedTarget }) => {\n if (!this._elementRef.nativeElement.contains(relatedTarget)) {\n this.close();\n }\n });\n }\n }\n return;\n }\n // opening / navigating\n if (isEventFromToggle || itemElement) {\n this.open();\n if (itemElements.length) {\n switch (key) {\n case Key.ArrowDown:\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case Key.ArrowUp:\n if (this._isDropup() && position === -1) {\n position = itemElements.length - 1;\n break;\n }\n position = Math.max(position - 1, 0);\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = itemElements.length - 1;\n break;\n }\n itemElements[position].focus();\n }\n event.preventDefault();\n }\n }\n _isDropup() { return this._elementRef.nativeElement.classList.contains('dropup'); }\n _isEventFromToggle(event) {\n return this._anchor.nativeElement.contains(event.target);\n }\n _getMenuElements() {\n const menu = this._menu;\n if (menu == null) {\n return [];\n }\n return menu.menuItems.filter(item => !item.disabled).map(item => item.elementRef.nativeElement);\n }\n _positionMenu() {\n const menu = this._menu;\n if (this.isOpen() && menu) {\n if (this.display === 'dynamic') {\n this._positioning.update();\n this._applyPlacementClasses();\n }\n else {\n this._applyPlacementClasses(this._getFirstPlacement(this.placement));\n }\n }\n }\n _getFirstPlacement(placement) {\n return Array.isArray(placement) ? placement[0] : placement.split(' ')[0];\n }\n _resetContainer() {\n const renderer = this._renderer;\n if (this._menu) {\n const dropdownElement = this._elementRef.nativeElement;\n const dropdownMenuElement = this._menu.nativeElement;\n renderer.appendChild(dropdownElement, dropdownMenuElement);\n }\n if (this._bodyContainer) {\n renderer.removeChild(this._document.body, this._bodyContainer);\n this._bodyContainer = null;\n }\n }\n _applyContainer(container = null) {\n this._resetContainer();\n if (container === 'body') {\n const renderer = this._renderer;\n const dropdownMenuElement = this._menu.nativeElement;\n const bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\n // Override some styles to have the positioning working\n renderer.setStyle(bodyContainer, 'position', 'absolute');\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\n renderer.setStyle(bodyContainer, 'z-index', '1055');\n renderer.appendChild(bodyContainer, dropdownMenuElement);\n renderer.appendChild(this._document.body, bodyContainer);\n }\n this._applyCustomDropdownClass(this.dropdownClass);\n }\n _applyCustomDropdownClass(newClass, oldClass) {\n const targetElement = this.container === 'body' ? this._bodyContainer : this._elementRef.nativeElement;\n if (targetElement) {\n if (oldClass) {\n this._renderer.removeClass(targetElement, oldClass);\n }\n if (newClass) {\n this._renderer.addClass(targetElement, newClass);\n }\n }\n }\n _applyPlacementClasses(placement) {\n const menu = this._menu;\n if (menu) {\n if (!placement) {\n placement = this._getFirstPlacement(this.placement);\n }\n const renderer = this._renderer;\n const dropdownElement = this._elementRef.nativeElement;\n // remove the current placement classes\n renderer.removeClass(dropdownElement, 'dropup');\n renderer.removeClass(dropdownElement, 'dropdown');\n const { nativeElement } = menu;\n if (this.display === 'static') {\n menu.placement = null;\n renderer.setAttribute(nativeElement, 'data-bs-popper', 'static');\n }\n else {\n menu.placement = placement;\n renderer.removeAttribute(nativeElement, 'data-bs-popper');\n }\n /*\n * apply the new placement\n * in case of top use up-arrow or down-arrow otherwise\n */\n const dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n renderer.addClass(dropdownElement, dropdownClass);\n const bodyContainer = this._bodyContainer;\n if (bodyContainer) {\n renderer.removeClass(bodyContainer, 'dropup');\n renderer.removeClass(bodyContainer, 'dropdown');\n renderer.addClass(bodyContainer, dropdownClass);\n }\n }\n }\n}\nNgbDropdown.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdown, deps: [{ token: i0.ChangeDetectorRef }, { token: NgbDropdownConfig }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: NgbNavbar, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgbDropdown.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbDropdown, selector: \"[ngbDropdown]\", inputs: { autoClose: \"autoClose\", dropdownClass: \"dropdownClass\", _open: [\"open\", \"_open\"], placement: \"placement\", container: \"container\", display: \"display\" }, outputs: { openChange: \"openChange\" }, host: { properties: { \"class.show\": \"isOpen()\" } }, queries: [{ propertyName: \"_menu\", first: true, predicate: NgbDropdownMenu, descendants: true }, { propertyName: \"_anchor\", first: true, predicate: NgbDropdownAnchor, descendants: true }], exportAs: [\"ngbDropdown\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdown, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: NgbDropdownConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: NgbNavbar, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { _menu: [{\n type: ContentChild,\n args: [NgbDropdownMenu, { static: false }]\n }], _anchor: [{\n type: ContentChild,\n args: [NgbDropdownAnchor, { static: false }]\n }], autoClose: [{\n type: Input\n }], dropdownClass: [{\n type: Input\n }], _open: [{\n type: Input,\n args: ['open']\n }], placement: [{\n type: Input\n }], container: [{\n type: Input\n }], display: [{\n type: Input\n }], openChange: [{\n type: Output\n }] } });\n\nconst NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\nclass NgbDropdownModule {\n}\nNgbDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownModule, declarations: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar], exports: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar] });\nNgbDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbDropdownModule, decorators: [{\n type: NgModule,\n args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES }]\n }] });\n\nclass ContentRef {\n constructor(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\nclass PopupService {\n constructor(_type, _injector, _viewContainerRef, _renderer, _ngZone, _applicationRef) {\n this._type = _type;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._applicationRef = _applicationRef;\n this._windowRef = null;\n this._contentRef = null;\n }\n open(content, context, animation = false) {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, context);\n this._windowRef = this._viewContainerRef.createComponent(this._type, { index: this._viewContainerRef.length, injector: this._injector, projectableNodes: this._contentRef.nodes });\n }\n const { nativeElement } = this._windowRef.location;\n const transition$ = this._ngZone.onStable.pipe(take(1), mergeMap(() => ngbRunTransition(this._ngZone, nativeElement, ({ classList }) => classList.add('show'), { animation, runningTransition: 'continue' })));\n return { windowRef: this._windowRef, transition$ };\n }\n close(animation = false) {\n if (!this._windowRef) {\n return of(undefined);\n }\n return ngbRunTransition(this._ngZone, this._windowRef.location.nativeElement, ({ classList }) => classList.remove('show'), { animation, runningTransition: 'stop' })\n .pipe(tap(() => {\n if (this._windowRef) {\n // this is required because of the container='body' option\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n }\n if (this._contentRef?.viewRef) {\n this._applicationRef.detachView(this._contentRef.viewRef);\n this._contentRef.viewRef.destroy();\n this._contentRef = null;\n }\n }));\n }\n _getContentRef(content, context) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n else {\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n }\n}\n\nclass NgbModalBackdrop {\n constructor(_el, _zone) {\n this._el = _el;\n this._zone = _zone;\n }\n ngOnInit() {\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n ngbRunTransition(this._zone, this._el.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, { animation: this.animation, runningTransition: 'continue' });\n });\n }\n hide() {\n return ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), { animation: this.animation, runningTransition: 'stop' });\n }\n}\nNgbModalBackdrop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalBackdrop, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbModalBackdrop.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbModalBackdrop, selector: \"ngb-modal-backdrop\", inputs: { animation: \"animation\", backdropClass: \"backdropClass\" }, host: { properties: { \"class\": \"\\\"modal-backdrop\\\" + (backdropClass ? \\\" \\\" + backdropClass : \\\"\\\")\", \"class.show\": \"!animation\", \"class.fade\": \"animation\" }, styleAttribute: \"z-index: 1055\" }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalBackdrop, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-modal-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: {\n '[class]': '\"modal-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n '[class.show]': '!animation',\n '[class.fade]': 'animation',\n 'style': 'z-index: 1055'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }] } });\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nclass NgbActiveModal {\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbModalRef.result` promise will be resolved with the provided value.\n */\n close(result) { }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) { }\n}\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nclass NgbModalRef {\n constructor(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._windowCmptRef = _windowCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n this._closed = new Subject();\n this._dismissed = new Subject();\n this._hidden = new Subject();\n _windowCmptRef.instance.dismissEvent.subscribe((reason) => { this.dismiss(reason); });\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => { });\n }\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n */\n get componentInstance() {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * The observable that emits when the modal is closed via the `.close()` method.\n *\n * It will emit the result passed to the `.close()` method.\n *\n * @since 8.0.0\n */\n get closed() { return this._closed.asObservable().pipe(takeUntil(this._hidden)); }\n /**\n * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n *\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n * reasons like backdrop click or ESC key press.\n *\n * @since 8.0.0\n */\n get dismissed() { return this._dismissed.asObservable().pipe(takeUntil(this._hidden)); }\n /**\n * The observable that emits when both modal window and backdrop are closed and animations were finished.\n * At this point modal and backdrop elements will be removed from the DOM tree.\n *\n * This observable will be completed after emitting.\n *\n * @since 8.0.0\n */\n get hidden() { return this._hidden.asObservable(); }\n /**\n * The observable that emits when modal is fully visible and animation was finished.\n * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n *\n * This observable will be completed after emitting.\n * It will not emit, if modal is closed before open animation is finished.\n *\n * @since 8.0.0\n */\n get shown() { return this._windowCmptRef.instance.shown.asObservable(); }\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) {\n if (this._windowCmptRef) {\n this._closed.next(result);\n this._resolve(result);\n this._removeModalElements();\n }\n }\n _dismiss(reason) {\n this._dismissed.next(reason);\n this._reject(reason);\n this._removeModalElements();\n }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n const dismiss = this._beforeDismiss();\n if (isPromise(dismiss)) {\n dismiss.then(result => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => { });\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n _removeModalElements() {\n const windowTransition$ = this._windowCmptRef.instance.hide();\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n // hiding window\n windowTransition$.subscribe(() => {\n const { nativeElement } = this._windowCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._windowCmptRef.destroy();\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._windowCmptRef = null;\n this._contentRef = null;\n });\n // hiding backdrop\n backdropTransition$.subscribe(() => {\n if (this._backdropCmptRef) {\n const { nativeElement } = this._backdropCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._backdropCmptRef.destroy();\n this._backdropCmptRef = null;\n }\n });\n // all done\n zip(windowTransition$, backdropTransition$).subscribe(() => {\n this._hidden.next();\n this._hidden.complete();\n });\n }\n}\n\nvar ModalDismissReasons;\n(function (ModalDismissReasons) {\n ModalDismissReasons[ModalDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n ModalDismissReasons[ModalDismissReasons[\"ESC\"] = 1] = \"ESC\";\n})(ModalDismissReasons || (ModalDismissReasons = {}));\n\nclass NgbModalWindow {\n constructor(_document, _elRef, _zone) {\n this._document = _document;\n this._elRef = _elRef;\n this._zone = _zone;\n this._closed$ = new Subject();\n this._elWithFocus = null; // element that is focused prior to modal opening\n this.backdrop = true;\n this.keyboard = true;\n this.dismissEvent = new EventEmitter();\n this.shown = new Subject();\n this.hidden = new Subject();\n }\n get fullscreenClass() {\n return this.fullscreen === true ? ' modal-fullscreen' :\n isString(this.fullscreen) ? ` modal-fullscreen-${this.fullscreen}-down` : '';\n }\n dismiss(reason) { this.dismissEvent.emit(reason); }\n ngOnInit() {\n this._elWithFocus = this._document.activeElement;\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => { this._show(); });\n }\n ngOnDestroy() { this._disableEventHandling(); }\n hide() {\n const { nativeElement } = this._elRef;\n const context = { animation: this.animation, runningTransition: 'stop' };\n const windowTransition$ = ngbRunTransition(this._zone, nativeElement, () => nativeElement.classList.remove('show'), context);\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\n const transitions$ = zip(windowTransition$, dialogTransition$);\n transitions$.subscribe(() => {\n this.hidden.next();\n this.hidden.complete();\n });\n this._disableEventHandling();\n this._restoreFocus();\n return transitions$;\n }\n _show() {\n const context = { animation: this.animation, runningTransition: 'continue' };\n const windowTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, context);\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\n zip(windowTransition$, dialogTransition$).subscribe(() => {\n this.shown.next();\n this.shown.complete();\n });\n this._enableEventHandling();\n this._setFocus();\n }\n _enableEventHandling() {\n const { nativeElement } = this._elRef;\n this._zone.runOutsideAngular(() => {\n fromEvent(nativeElement, 'keydown')\n .pipe(takeUntil(this._closed$), \n /* eslint-disable-next-line deprecation/deprecation */\n filter(e => e.which === Key.Escape))\n .subscribe(event => {\n if (this.keyboard) {\n requestAnimationFrame(() => {\n if (!event.defaultPrevented) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n }\n });\n }\n else if (this.backdrop === 'static') {\n this._bumpBackdrop();\n }\n });\n // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n // inside the modal dialog and releasing it outside\n let preventClose = false;\n fromEvent(this._dialogEl.nativeElement, 'mousedown')\n .pipe(takeUntil(this._closed$), tap(() => preventClose = false), switchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))), filter(({ target }) => nativeElement === target))\n .subscribe(() => { preventClose = true; });\n // We're listening to 'click' to dismiss modal on modal window click, except when:\n // 1. clicking on modal dialog itself\n // 2. closing was prevented by mousedown/up handlers\n // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n fromEvent(nativeElement, 'click').pipe(takeUntil(this._closed$)).subscribe(({ target }) => {\n if (nativeElement === target) {\n if (this.backdrop === 'static') {\n this._bumpBackdrop();\n }\n else if (this.backdrop === true && !preventClose) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n }\n }\n preventClose = false;\n });\n });\n }\n _disableEventHandling() { this._closed$.next(); }\n _setFocus() {\n const { nativeElement } = this._elRef;\n if (!nativeElement.contains(document.activeElement)) {\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n }\n _restoreFocus() {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular(() => {\n setTimeout(() => elementToFocus.focus());\n this._elWithFocus = null;\n });\n }\n _bumpBackdrop() {\n if (this.backdrop === 'static') {\n ngbRunTransition(this._zone, this._elRef.nativeElement, ({ classList }) => {\n classList.add('modal-static');\n return () => classList.remove('modal-static');\n }, { animation: this.animation, runningTransition: 'continue' });\n }\n }\n}\nNgbModalWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalWindow, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbModalWindow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbModalWindow, selector: \"ngb-modal-window\", inputs: { animation: \"animation\", ariaLabelledBy: \"ariaLabelledBy\", ariaDescribedBy: \"ariaDescribedBy\", backdrop: \"backdrop\", centered: \"centered\", fullscreen: \"fullscreen\", keyboard: \"keyboard\", scrollable: \"scrollable\", size: \"size\", windowClass: \"windowClass\", modalDialogClass: \"modalDialogClass\" }, outputs: { dismissEvent: \"dismiss\" }, host: { attributes: { \"role\": \"dialog\", \"tabindex\": \"-1\" }, properties: { \"class\": \"\\\"modal d-block\\\" + (windowClass ? \\\" \\\" + windowClass : \\\"\\\")\", \"class.fade\": \"animation\", \"attr.aria-modal\": \"true\", \"attr.aria-labelledby\": \"ariaLabelledBy\", \"attr.aria-describedby\": \"ariaDescribedBy\" } }, viewQueries: [{ propertyName: \"_dialogEl\", first: true, predicate: [\"dialog\"], descendants: true, static: true }], ngImport: i0, template: `\n
\n
\n
\n `, isInline: true, styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\\n\"], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalWindow, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-modal-window', host: {\n '[class]': '\"modal d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[attr.aria-describedby]': 'ariaDescribedBy'\n }, template: `\n
\n
\n
\n `, encapsulation: ViewEncapsulation.None, styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\\n\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { _dialogEl: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], animation: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], backdrop: [{\n type: Input\n }], centered: [{\n type: Input\n }], fullscreen: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], size: [{\n type: Input\n }], windowClass: [{\n type: Input\n }], modalDialogClass: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }] } });\n\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to hide the scrollbar and compensate the lack of a vertical scrollbar\n * by adding an equivalent padding on the right of the body, and to revert this change.\n */\nclass ScrollBar {\n constructor(_document) {\n this._document = _document;\n }\n /**\n * To be called to hide a potential vertical scrollbar:\n * - if a scrollbar is there and has a width greater than 0, adds some compensation\n * padding to the body to keep the same layout as when the scrollbar is there\n * - adds overflow: hidden\n *\n * @return a callback used to revert the change\n */\n hide() {\n const scrollbarWidth = Math.abs(window.innerWidth - this._document.documentElement.clientWidth);\n const body = this._document.body;\n const bodyStyle = body.style;\n const { overflow, paddingRight } = bodyStyle;\n if (scrollbarWidth > 0) {\n const actualPadding = parseFloat(window.getComputedStyle(body).paddingRight);\n bodyStyle.paddingRight = `${actualPadding + scrollbarWidth}px`;\n }\n bodyStyle.overflow = 'hidden';\n return () => {\n if (scrollbarWidth > 0) {\n bodyStyle.paddingRight = paddingRight;\n }\n bodyStyle.overflow = overflow;\n };\n }\n}\nScrollBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: ScrollBar, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollBar.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: ScrollBar, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: ScrollBar, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/* eslint-disable deprecation/deprecation */\nclass NgbModalStack {\n constructor(_applicationRef, _injector, _document, _scrollBar, _rendererFactory, _ngZone) {\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._rendererFactory = _rendererFactory;\n this._ngZone = _ngZone;\n this._activeWindowCmptHasChanged = new Subject();\n this._ariaHiddenValues = new Map();\n this._scrollBarRestoreFn = null;\n this._backdropAttributes = ['animation', 'backdropClass'];\n this._modalRefs = [];\n this._windowAttributes = [\n 'animation', 'ariaLabelledBy', 'ariaDescribedBy', 'backdrop', 'centered', 'fullscreen', 'keyboard', 'scrollable',\n 'size', 'windowClass', 'modalDialogClass'\n ];\n this._windowCmpts = [];\n this._activeInstances = new EventEmitter();\n // Trap focus on active WindowCmpt\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n ngbFocusTrap(this._ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n _restoreScrollBar() {\n const scrollBarRestoreFn = this._scrollBarRestoreFn;\n if (scrollBarRestoreFn) {\n this._scrollBarRestoreFn = null;\n scrollBarRestoreFn();\n }\n }\n _hideScrollBar() {\n if (!this._scrollBarRestoreFn) {\n this._scrollBarRestoreFn = this._scrollBar.hide();\n }\n }\n open(moduleCFR, contentInjector, content, options) {\n const containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ?\n this._document.querySelector(options.container) :\n this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n if (!containerEl) {\n throw new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n this._hideScrollBar();\n const activeModal = new NgbActiveModal();\n const contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal, options);\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : undefined;\n let windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n let ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerModalRef(ngbModalRef);\n this._registerWindowCmpt(windowCmptRef);\n // We have to cleanup DOM after the last modal when BOTH 'hidden' was emitted and 'result' promise was resolved:\n // - with animations OFF, 'hidden' emits synchronously, then 'result' is resolved asynchronously\n // - with animations ON, 'result' is resolved asynchronously, then 'hidden' emits asynchronously\n ngbModalRef.hidden.pipe(take(1)).subscribe(() => Promise.resolve(true).then(() => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._restoreScrollBar();\n this._revertAriaHidden();\n }\n }));\n activeModal.close = (result) => { ngbModalRef.close(result); };\n activeModal.dismiss = (reason) => { ngbModalRef.dismiss(reason); };\n this._applyWindowOptions(windowCmptRef.instance, options);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n return ngbModalRef;\n }\n get activeInstances() { return this._activeInstances; }\n dismissAll(reason) { this._modalRefs.forEach(ngbModalRef => ngbModalRef.dismiss(reason)); }\n hasOpenModals() { return this._modalRefs.length > 0; }\n _attachBackdrop(moduleCFR, containerEl) {\n let backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\n let backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n _attachWindowComponent(moduleCFR, containerEl, contentRef) {\n let windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\n let windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n _applyWindowOptions(windowInstance, options) {\n this._windowAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n _applyBackdropOptions(backdropInstance, options) {\n this._backdropAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n }\n _getContentRef(moduleCFR, contentInjector, content, activeModal, options) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeModal);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(moduleCFR, contentInjector, content, activeModal, options);\n }\n }\n _createFromTemplateRef(content, activeModal) {\n const context = {\n $implicit: activeModal,\n close(result) { activeModal.close(result); },\n dismiss(reason) { activeModal.dismiss(reason); }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n _createFromString(content) {\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n _createFromComponent(moduleCFR, contentInjector, content, context, options) {\n const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n const modalContentInjector = Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\n const componentRef = contentCmptFactory.create(modalContentInjector);\n const componentNativeEl = componentRef.location.nativeElement;\n if (options.scrollable) {\n componentNativeEl.classList.add('component-host-scrollable');\n }\n this._applicationRef.attachView(componentRef.hostView);\n // FIXME: we should here get rid of the component nativeElement\n // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n _setAriaHidden(element) {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach(sibling => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n _revertAriaHidden() {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n _registerModalRef(ngbModalRef) {\n const unregisterModalRef = () => {\n const index = this._modalRefs.indexOf(ngbModalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n this._activeInstances.emit(this._modalRefs);\n }\n };\n this._modalRefs.push(ngbModalRef);\n this._activeInstances.emit(this._modalRefs);\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n _registerWindowCmpt(ngbWindowCmpt) {\n this._windowCmpts.push(ngbWindowCmpt);\n this._activeWindowCmptHasChanged.next();\n ngbWindowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(ngbWindowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n}\nNgbModalStack.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalStack, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: DOCUMENT }, { token: ScrollBar }, { token: i0.RendererFactory2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbModalStack.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalStack, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalStack, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: i0.RendererFactory2 }, { type: i0.NgZone }]; } });\n\n/**\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n*\n* @since 3.1.0\n*/\nclass NgbModalConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.backdrop = true;\n this.fullscreen = false;\n this.keyboard = true;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbModalConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbModalConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/* eslint-disable deprecation/deprecation */\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\nclass NgbModal {\n constructor(_moduleCFR, _injector, _modalStack, _config) {\n this._moduleCFR = _moduleCFR;\n this._injector = _injector;\n this._modalStack = _modalStack;\n this._config = _config;\n }\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n */\n open(content, options = {}) {\n const combinedOptions = { ...this._config, animation: this._config.animation, ...options };\n return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n }\n /**\n * Returns an observable that holds the active modal instances.\n */\n get activeInstances() { return this._modalStack.activeInstances; }\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * @since 3.1.0\n */\n dismissAll(reason) { this._modalStack.dismissAll(reason); }\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * @since 3.3.0\n */\n hasOpenModals() { return this._modalStack.hasOpenModals(); }\n}\nNgbModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModal, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: NgbModalStack }, { token: NgbModalConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbModal.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModal, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModal, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: NgbModalStack }, { type: NgbModalConfig }]; } });\n\nclass NgbModalModule {\n}\nNgbModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalModule, declarations: [NgbModalBackdrop, NgbModalWindow] });\nNgbModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalModule, providers: [NgbModal] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModalModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbModalBackdrop, NgbModalWindow], providers: [NgbModal] }]\n }] });\n\n/**\n * A configuration service for the [`NgbNav`](#/components/nav/api#NgbNav) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the navs used in the application.\n *\n * @since 5.2.0\n */\nclass NgbNavConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.destroyOnHide = true;\n this.orientation = 'horizontal';\n this.roles = 'tablist';\n this.keyboard = false;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbNavConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbNavConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nconst isValidNavId = (id) => isDefined(id) && id !== '';\nlet navCounter = 0;\n/**\n * This directive must be used to wrap content to be displayed in the nav.\n *\n * @since 5.2.0\n */\nclass NgbNavContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbNavContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbNavContent, selector: \"ng-template[ngbNavContent]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavContent, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbNavContent]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * The directive used to group nav link and related nav content. As well as set nav identifier and some options.\n *\n * @since 5.2.0\n */\nclass NgbNavItem {\n constructor(_nav, elementRef) {\n this._nav = _nav;\n this.elementRef = elementRef;\n /**\n * If `true`, the current nav item is disabled and can't be toggled by user.\n *\n * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\n */\n this.disabled = false;\n /**\n * An event emitted when the fade in transition is finished on the related nav content\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the fade out transition is finished on the related nav content\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.contentTpl = this.contentTpls.first;\n }\n ngOnInit() {\n if (!isDefined(this.domId)) {\n this.domId = `ngb-nav-${navCounter++}`;\n }\n }\n get active() { return this._nav.activeId === this.id; }\n get id() { return isValidNavId(this._id) ? this._id : this.domId; }\n get panelDomId() { return `${this.domId}-panel`; }\n isPanelInDom() {\n return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\n }\n}\nNgbNavItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavItem, deps: [{ token: forwardRef(() => NgbNav) }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbNavItem, selector: \"[ngbNavItem]\", inputs: { destroyOnHide: \"destroyOnHide\", disabled: \"disabled\", domId: \"domId\", _id: [\"ngbNavItem\", \"_id\"] }, outputs: { shown: \"shown\", hidden: \"hidden\" }, host: { properties: { \"class.nav-item\": \"true\" } }, queries: [{ propertyName: \"contentTpls\", predicate: NgbNavContent }], exportAs: [\"ngbNavItem\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavItem, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbNavItem]', exportAs: 'ngbNavItem', host: { '[class.nav-item]': 'true' } }]\n }], ctorParameters: function () { return [{ type: NgbNav, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbNav)]\n }] }, { type: i0.ElementRef }]; }, propDecorators: { destroyOnHide: [{\n type: Input\n }], disabled: [{\n type: Input\n }], domId: [{\n type: Input\n }], _id: [{\n type: Input,\n args: ['ngbNavItem']\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbNavContent, { descendants: false }]\n }] } });\n/**\n * A nav directive that helps with implementing tabbed navigation components.\n *\n * @since 5.2.0\n */\nclass NgbNav {\n constructor(role, config, _cd, _document) {\n this.role = role;\n this._cd = _cd;\n this._document = _document;\n /**\n * The event emitted after the active nav changes\n * The payload of the event is the newly active nav id\n *\n * If you want to prevent nav change, you should use `(navChange)` event\n */\n this.activeIdChange = new EventEmitter();\n /**\n * An event emitted when the fade in transition is finished for one of the items.\n *\n * Payload of the event is the nav id that was just shown.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the fade out transition is finished for one of the items.\n *\n * Payload of the event is the nav id that was just hidden.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.destroy$ = new Subject();\n this.navItemChange$ = new Subject();\n /**\n * The nav change event emitted right before the nav change happens on user click.\n *\n * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\n *\n * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\n */\n this.navChange = new EventEmitter();\n this.animation = config.animation;\n this.destroyOnHide = config.destroyOnHide;\n this.orientation = config.orientation;\n this.roles = config.roles;\n this.keyboard = config.keyboard;\n }\n click(item) {\n if (!item.disabled) {\n this._updateActiveId(item.id);\n }\n }\n onKeyDown(event) {\n if (this.roles !== 'tablist' || !this.keyboard) {\n return;\n }\n /* eslint-disable-next-line deprecation/deprecation */\n const key = event.which;\n const enabledLinks = this.links.filter(link => !link.navItem.disabled);\n const { length } = enabledLinks;\n let position = -1;\n enabledLinks.forEach((link, index) => {\n if (link.elRef.nativeElement === this._document.activeElement) {\n position = index;\n }\n });\n if (length) {\n switch (key) {\n case Key.ArrowLeft:\n if (this.orientation === 'vertical') {\n return;\n }\n position = (position - 1 + length) % length;\n break;\n case Key.ArrowRight:\n if (this.orientation === 'vertical') {\n return;\n }\n position = (position + 1) % length;\n break;\n case Key.ArrowDown:\n if (this.orientation === 'horizontal') {\n return;\n }\n position = (position + 1) % length;\n break;\n case Key.ArrowUp:\n if (this.orientation === 'horizontal') {\n return;\n }\n position = (position - 1 + length) % length;\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = length - 1;\n break;\n }\n if (this.keyboard === 'changeWithArrows') {\n this.select(enabledLinks[position].navItem.id);\n }\n enabledLinks[position].elRef.nativeElement.focus();\n event.preventDefault();\n }\n }\n /**\n * Selects the nav with the given id and shows its associated pane.\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n */\n select(id) { this._updateActiveId(id, false); }\n ngAfterContentInit() {\n if (!isDefined(this.activeId)) {\n const nextId = this.items.first ? this.items.first.id : null;\n if (isValidNavId(nextId)) {\n this._updateActiveId(nextId, false);\n this._cd.detectChanges();\n }\n }\n this.items.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this._notifyItemChanged(this.activeId));\n }\n ngOnChanges({ activeId }) {\n if (activeId && !activeId.firstChange) {\n this._notifyItemChanged(activeId.currentValue);\n }\n }\n ngOnDestroy() { this.destroy$.next(); }\n _updateActiveId(nextId, emitNavChange = true) {\n if (this.activeId !== nextId) {\n let defaultPrevented = false;\n if (emitNavChange) {\n this.navChange.emit({ activeId: this.activeId, nextId, preventDefault: () => { defaultPrevented = true; } });\n }\n if (!defaultPrevented) {\n this.activeId = nextId;\n this.activeIdChange.emit(nextId);\n this._notifyItemChanged(nextId);\n }\n }\n }\n _notifyItemChanged(nextItemId) { this.navItemChange$.next(this._getItemById(nextItemId)); }\n _getItemById(itemId) {\n return this.items && this.items.find(item => item.id === itemId) || null;\n }\n}\nNgbNav.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNav, deps: [{ token: 'role', attribute: true }, { token: NgbNavConfig }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNav.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbNav, selector: \"[ngbNav]\", inputs: { activeId: \"activeId\", animation: \"animation\", destroyOnHide: \"destroyOnHide\", orientation: \"orientation\", roles: \"roles\", keyboard: \"keyboard\" }, outputs: { activeIdChange: \"activeIdChange\", shown: \"shown\", hidden: \"hidden\", navChange: \"navChange\" }, host: { listeners: { \"keydown.arrowLeft\": \"onKeyDown($event)\", \"keydown.arrowRight\": \"onKeyDown($event)\", \"keydown.arrowDown\": \"onKeyDown($event)\", \"keydown.arrowUp\": \"onKeyDown($event)\", \"keydown.Home\": \"onKeyDown($event)\", \"keydown.End\": \"onKeyDown($event)\" }, properties: { \"class.nav\": \"true\", \"class.flex-column\": \"orientation === 'vertical'\", \"attr.aria-orientation\": \"orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined\", \"attr.role\": \"role ? role : roles ? 'tablist' : undefined\" } }, queries: [{ propertyName: \"items\", predicate: NgbNavItem }, { propertyName: \"links\", predicate: i0.forwardRef(function () { return NgbNavLink; }), descendants: true }], exportAs: [\"ngbNav\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNav, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbNav]',\n exportAs: 'ngbNav',\n host: {\n '[class.nav]': 'true',\n '[class.flex-column]': `orientation === 'vertical'`,\n '[attr.aria-orientation]': `orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined`,\n '[attr.role]': `role ? role : roles ? 'tablist' : undefined`,\n '(keydown.arrowLeft)': 'onKeyDown($event)',\n '(keydown.arrowRight)': 'onKeyDown($event)',\n '(keydown.arrowDown)': 'onKeyDown($event)',\n '(keydown.arrowUp)': 'onKeyDown($event)',\n '(keydown.Home)': 'onKeyDown($event)',\n '(keydown.End)': 'onKeyDown($event)'\n }\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavConfig }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { activeId: [{\n type: Input\n }], activeIdChange: [{\n type: Output\n }], animation: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], orientation: [{\n type: Input\n }], roles: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], items: [{\n type: ContentChildren,\n args: [NgbNavItem]\n }], links: [{\n type: ContentChildren,\n args: [forwardRef(() => NgbNavLink), { descendants: true }]\n }], navChange: [{\n type: Output\n }] } });\n/**\n * A directive to put on the nav link.\n *\n * @since 5.2.0\n */\nclass NgbNavLink {\n constructor(role, navItem, nav, elRef) {\n this.role = role;\n this.navItem = navItem;\n this.nav = nav;\n this.elRef = elRef;\n }\n hasNavItemClass() {\n // with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\n return this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\n }\n}\nNgbNavLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavLink, deps: [{ token: 'role', attribute: true }, { token: NgbNavItem }, { token: NgbNav }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbNavLink, selector: \"a[ngbNavLink]\", host: { attributes: { \"href\": \"\" }, listeners: { \"click\": \"nav.click(navItem); $event.preventDefault()\" }, properties: { \"id\": \"navItem.domId\", \"class.nav-link\": \"true\", \"class.nav-item\": \"hasNavItemClass()\", \"attr.role\": \"role ? role : nav.roles ? 'tab' : undefined\", \"class.active\": \"navItem.active\", \"class.disabled\": \"navItem.disabled\", \"attr.tabindex\": \"navItem.disabled ? -1 : undefined\", \"attr.aria-controls\": \"navItem.isPanelInDom() ? navItem.panelDomId : null\", \"attr.aria-selected\": \"navItem.active\", \"attr.aria-disabled\": \"navItem.disabled\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavLink, decorators: [{\n type: Directive,\n args: [{\n selector: 'a[ngbNavLink]',\n host: {\n '[id]': 'navItem.domId',\n '[class.nav-link]': 'true',\n '[class.nav-item]': 'hasNavItemClass()',\n '[attr.role]': `role ? role : nav.roles ? 'tab' : undefined`,\n 'href': '',\n '[class.active]': 'navItem.active',\n '[class.disabled]': 'navItem.disabled',\n '[attr.tabindex]': 'navItem.disabled ? -1 : undefined',\n '[attr.aria-controls]': 'navItem.isPanelInDom() ? navItem.panelDomId : null',\n '[attr.aria-selected]': 'navItem.active',\n '[attr.aria-disabled]': 'navItem.disabled',\n '(click)': 'nav.click(navItem); $event.preventDefault()'\n }\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavItem }, { type: NgbNav }, { type: i0.ElementRef }]; } });\n\nconst ngbNavFadeOutTransition = ({ classList }) => {\n classList.remove('show');\n return () => classList.remove('active');\n};\nconst ngbNavFadeInTransition = (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n};\n\nclass NgbNavPane {\n constructor(elRef) {\n this.elRef = elRef;\n }\n}\nNgbNavPane.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavPane, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbNavPane.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbNavPane, selector: \"[ngbNavPane]\", inputs: { item: \"item\", nav: \"nav\", role: \"role\" }, host: { properties: { \"id\": \"item.panelDomId\", \"class.fade\": \"nav.animation\", \"attr.role\": \"role ? role : nav.roles ? \\\"tabpanel\\\" : undefined\", \"attr.aria-labelledby\": \"item.domId\" }, classAttribute: \"tab-pane\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavPane, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngbNavPane]',\n host: {\n '[id]': 'item.panelDomId',\n 'class': 'tab-pane',\n '[class.fade]': 'nav.animation',\n '[attr.role]': 'role ? role : nav.roles ? \"tabpanel\" : undefined',\n '[attr.aria-labelledby]': 'item.domId'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { item: [{\n type: Input\n }], nav: [{\n type: Input\n }], role: [{\n type: Input\n }] } });\n/**\n * The outlet where currently active nav content will be displayed.\n *\n * @since 5.2.0\n */\nclass NgbNavOutlet {\n constructor(_cd, _ngZone) {\n this._cd = _cd;\n this._ngZone = _ngZone;\n this._activePane = null;\n }\n isPanelTransitioning(item) { return this._activePane?.item === item; }\n ngAfterViewInit() {\n // initial display\n this._updateActivePane();\n // this will be emitted for all 3 types of nav changes: .select(), [activeId] or (click)\n this.nav.navItemChange$\n .pipe(takeUntil(this.nav.destroy$), startWith(this._activePane?.item || null), distinctUntilChanged(), skip(1))\n .subscribe(nextItem => {\n const options = { animation: this.nav.animation, runningTransition: 'stop' };\n // next panel we're switching to will only appear in DOM after the change detection is done\n // and `this._panes` will be updated\n this._cd.detectChanges();\n // fading out\n if (this._activePane) {\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeOutTransition, options)\n .subscribe(() => {\n const activeItem = this._activePane?.item;\n this._activePane = this._getPaneForItem(nextItem);\n // mark for check when transition finishes as outlet or parent containers might be OnPush\n // without this the panes that have \"faded out\" will stay in DOM\n this._cd.markForCheck();\n // fading in\n if (this._activePane) {\n // we have to add the '.active' class before running the transition,\n // because it should be in place before `ngbRunTransition` does `reflow()`\n this._activePane.elRef.nativeElement.classList.add('active');\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeInTransition, options)\n .subscribe(() => {\n if (nextItem) {\n nextItem.shown.emit();\n this.nav.shown.emit(nextItem.id);\n }\n });\n }\n if (activeItem) {\n activeItem.hidden.emit();\n this.nav.hidden.emit(activeItem.id);\n }\n });\n }\n else {\n this._updateActivePane();\n }\n });\n }\n _updateActivePane() {\n this._activePane = this._getActivePane();\n this._activePane?.elRef.nativeElement.classList.add('show');\n this._activePane?.elRef.nativeElement.classList.add('active');\n }\n _getPaneForItem(item) {\n return this._panes && this._panes.find(pane => pane.item === item) || null;\n }\n _getActivePane() {\n return this._panes && this._panes.find(pane => pane.item.active) || null;\n }\n}\nNgbNavOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavOutlet, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbNavOutlet.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbNavOutlet, selector: \"[ngbNavOutlet]\", inputs: { paneRole: \"paneRole\", nav: [\"ngbNavOutlet\", \"nav\"] }, host: { properties: { \"class.tab-content\": \"true\" } }, viewQueries: [{ propertyName: \"_panes\", predicate: NgbNavPane, descendants: true }], ngImport: i0, template: `\n \n
\n \n
\n
\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: NgbNavPane, selector: \"[ngbNavPane]\", inputs: [\"item\", \"nav\", \"role\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavOutlet, decorators: [{\n type: Component,\n args: [{\n selector: '[ngbNavOutlet]',\n host: { '[class.tab-content]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n
\n \n
\n
\n `\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { _panes: [{\n type: ViewChildren,\n args: [NgbNavPane]\n }], paneRole: [{\n type: Input\n }], nav: [{\n type: Input,\n args: ['ngbNavOutlet']\n }] } });\n\nconst NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane];\nclass NgbNavModule {\n}\nNgbNavModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbNavModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavModule, declarations: [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane], imports: [CommonModule], exports: [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane] });\nNgbNavModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbNavModule, decorators: [{\n type: NgModule,\n args: [{ declarations: NGB_NAV_DIRECTIVES, exports: NGB_NAV_DIRECTIVES, imports: [CommonModule] }]\n }] });\n\n/**\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the paginations used in the application.\n */\nclass NgbPaginationConfig {\n constructor() {\n this.disabled = false;\n this.boundaryLinks = false;\n this.directionLinks = true;\n this.ellipses = true;\n this.maxSize = 0;\n this.pageSize = 10;\n this.rotate = false;\n }\n}\nNgbPaginationConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbPaginationConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A directive to match the 'ellipsis' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationEllipsis {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationEllipsis.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationEllipsis, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationEllipsis.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPaginationEllipsis, selector: \"ng-template[ngbPaginationEllipsis]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationEllipsis, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationEllipsis]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'first' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationFirst {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationFirst.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationFirst, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationFirst.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPaginationFirst, selector: \"ng-template[ngbPaginationFirst]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationFirst, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationFirst]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'last' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationLast {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationLast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationLast, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationLast.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPaginationLast, selector: \"ng-template[ngbPaginationLast]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationLast, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationLast]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'next' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationNext {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationNext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationNext, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationNext.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPaginationNext, selector: \"ng-template[ngbPaginationNext]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationNext, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNext]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the page 'number' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationNumber {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationNumber, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationNumber.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPaginationNumber, selector: \"ng-template[ngbPaginationNumber]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationNumber, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNumber]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'previous' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationPrevious {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationPrevious.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationPrevious, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationPrevious.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPaginationPrevious, selector: \"ng-template[ngbPaginationPrevious]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationPrevious, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPrevious]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A directive to match the 'pages' whole content\n *\n * @since 9.1.0\n */\nclass NgbPaginationPages {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationPages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationPages, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPaginationPages.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPaginationPages, selector: \"ng-template[ngbPaginationPages]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationPages, decorators: [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPages]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nclass NgbPagination {\n constructor(config) {\n this.pageCount = 0;\n this.pages = [];\n /**\n * The current page.\n *\n * Page numbers start with `1`.\n */\n this.page = 1;\n /**\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n *\n * Event payload is the number of the newly selected page.\n *\n * Page numbers start with `1`.\n */\n this.pageChange = new EventEmitter(true);\n this.disabled = config.disabled;\n this.boundaryLinks = config.boundaryLinks;\n this.directionLinks = config.directionLinks;\n this.ellipses = config.ellipses;\n this.maxSize = config.maxSize;\n this.pageSize = config.pageSize;\n this.rotate = config.rotate;\n this.size = config.size;\n }\n hasPrevious() { return this.page > 1; }\n hasNext() { return this.page < this.pageCount; }\n nextDisabled() { return !this.hasNext() || this.disabled; }\n previousDisabled() { return !this.hasPrevious() || this.disabled; }\n selectPage(pageNumber) { this._updatePages(pageNumber); }\n ngOnChanges(changes) { this._updatePages(this.page); }\n isEllipsis(pageNumber) { return pageNumber === -1; }\n /**\n * Appends ellipses and first/last page number to the displayed pages\n */\n _applyEllipses(start, end) {\n if (this.ellipses) {\n if (start > 0) {\n // The first page will always be included. If the displayed range\n // starts after the third page, then add ellipsis. But if the range\n // starts on the third page, then add the second page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (start > 2) {\n this.pages.unshift(-1);\n }\n else if (start === 2) {\n this.pages.unshift(2);\n }\n this.pages.unshift(1);\n }\n if (end < this.pageCount) {\n // The last page will always be included. If the displayed range\n // ends before the third-last page, then add ellipsis. But if the range\n // ends on third-last page, then add the second-last page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (end < (this.pageCount - 2)) {\n this.pages.push(-1);\n }\n else if (end === (this.pageCount - 2)) {\n this.pages.push(this.pageCount - 1);\n }\n this.pages.push(this.pageCount);\n }\n }\n }\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n */\n _applyRotation() {\n let start = 0;\n let end = this.pageCount;\n let leftOffset = Math.floor(this.maxSize / 2);\n let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n if (this.page <= leftOffset) {\n // very beginning, no rotation -> [0..maxSize]\n end = this.maxSize;\n }\n else if (this.pageCount - this.page < leftOffset) {\n // very end, no rotation -> [len-maxSize..len]\n start = this.pageCount - this.maxSize;\n }\n else {\n // rotate\n start = this.page - leftOffset - 1;\n end = this.page + rightOffset;\n }\n return [start, end];\n }\n /**\n * Paginates page numbers based on maxSize items per page.\n */\n _applyPagination() {\n let page = Math.ceil(this.page / this.maxSize) - 1;\n let start = page * this.maxSize;\n let end = start + this.maxSize;\n return [start, end];\n }\n _setPageInRange(newPageNo) {\n const prevPageNo = this.page;\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n this.pageChange.emit(this.page);\n }\n }\n _updatePages(newPage) {\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n if (!isNumber(this.pageCount)) {\n this.pageCount = 0;\n }\n // fill-in model needed to render pages\n this.pages.length = 0;\n for (let i = 1; i <= this.pageCount; i++) {\n this.pages.push(i);\n }\n // set page within 1..max range\n this._setPageInRange(newPage);\n // apply maxSize if necessary\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n let start = 0;\n let end = this.pageCount;\n // either paginating or rotating page numbers\n if (this.rotate) {\n [start, end] = this._applyRotation();\n }\n else {\n [start, end] = this._applyPagination();\n }\n this.pages = this.pages.slice(start, end);\n // adding ellipses\n this._applyEllipses(start, end);\n }\n }\n}\nNgbPagination.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPagination, deps: [{ token: NgbPaginationConfig }], target: i0.ɵɵFactoryTarget.Component });\nNgbPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPagination, selector: \"ngb-pagination\", inputs: { disabled: \"disabled\", boundaryLinks: \"boundaryLinks\", directionLinks: \"directionLinks\", ellipses: \"ellipses\", rotate: \"rotate\", collectionSize: \"collectionSize\", maxSize: \"maxSize\", page: \"page\", pageSize: \"pageSize\", size: \"size\" }, outputs: { pageChange: \"pageChange\" }, host: { attributes: { \"role\": \"navigation\" } }, queries: [{ propertyName: \"tplEllipsis\", first: true, predicate: NgbPaginationEllipsis, descendants: true }, { propertyName: \"tplFirst\", first: true, predicate: NgbPaginationFirst, descendants: true }, { propertyName: \"tplLast\", first: true, predicate: NgbPaginationLast, descendants: true }, { propertyName: \"tplNext\", first: true, predicate: NgbPaginationNext, descendants: true }, { propertyName: \"tplNumber\", first: true, predicate: NgbPaginationNumber, descendants: true }, { propertyName: \"tplPrevious\", first: true, predicate: NgbPaginationPrevious, descendants: true }, { propertyName: \"tplPages\", first: true, predicate: NgbPaginationPages, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n ««\n «\n »\n »»\n ...\n \n {{ page }}\n (current)\n \n \n
  • \n \n \n \n \n \n \n
  • \n
    \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPagination, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'role': 'navigation' },\n template: `\n ««\n «\n »\n »»\n ...\n \n {{ page }}\n (current)\n \n \n
  • \n \n \n \n \n \n \n
  • \n
    \n \n `\n }]\n }], ctorParameters: function () { return [{ type: NgbPaginationConfig }]; }, propDecorators: { tplEllipsis: [{\n type: ContentChild,\n args: [NgbPaginationEllipsis, { static: false }]\n }], tplFirst: [{\n type: ContentChild,\n args: [NgbPaginationFirst, { static: false }]\n }], tplLast: [{\n type: ContentChild,\n args: [NgbPaginationLast, { static: false }]\n }], tplNext: [{\n type: ContentChild,\n args: [NgbPaginationNext, { static: false }]\n }], tplNumber: [{\n type: ContentChild,\n args: [NgbPaginationNumber, { static: false }]\n }], tplPrevious: [{\n type: ContentChild,\n args: [NgbPaginationPrevious, { static: false }]\n }], tplPages: [{\n type: ContentChild,\n args: [NgbPaginationPages, { static: false }]\n }], disabled: [{\n type: Input\n }], boundaryLinks: [{\n type: Input\n }], directionLinks: [{\n type: Input\n }], ellipses: [{\n type: Input\n }], rotate: [{\n type: Input\n }], collectionSize: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], page: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], size: [{\n type: Input\n }] } });\n\nconst DIRECTIVES = [\n NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n NgbPaginationPrevious, NgbPaginationPages\n];\nclass NgbPaginationModule {\n}\nNgbPaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbPaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationModule, declarations: [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n NgbPaginationPrevious, NgbPaginationPages], imports: [CommonModule], exports: [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n NgbPaginationPrevious, NgbPaginationPages] });\nNgbPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPaginationModule, decorators: [{\n type: NgModule,\n args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] }]\n }] });\n\nclass Trigger {\n constructor(open, close) {\n this.open = open;\n this.close = close;\n if (!close) {\n this.close = open;\n }\n }\n isManual() { return this.open === 'manual' || this.close === 'manual'; }\n}\nconst DEFAULT_ALIASES = {\n 'hover': ['mouseenter', 'mouseleave'],\n 'focus': ['focusin', 'focusout'],\n};\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map((triggerPair) => {\n let alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw 'Triggers parse error: only one manual trigger is allowed';\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\n }\n return parsedTriggers;\n}\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n return new Observable(subscriber => {\n const listeners = [];\n const openFn = () => subscriber.next(true);\n const closeFn = () => subscriber.next(false);\n const toggleFn = () => subscriber.next(!isOpenedFn());\n triggers.forEach((trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n }\n else {\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n });\n return () => { listeners.forEach(unsubscribeFn => unsubscribeFn()); };\n });\n}\nconst delayOrNoop = (time) => time > 0 ? delay(time) : (a) => a;\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\n return (input$) => {\n let pending = null;\n const filteredInput$ = input$.pipe(map(open => ({ open })), filter(event => {\n const currentlyOpen = isOpenedFn();\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n pending = event;\n return true;\n }\n if (pending && pending.open !== event.open) {\n pending = null;\n }\n return false;\n }), share());\n const delayedOpen$ = filteredInput$.pipe(filter(event => event.open), delayOrNoop(openDelay));\n const delayedClose$ = filteredInput$.pipe(filter(event => !event.open), delayOrNoop(closeDelay));\n return merge(delayedOpen$, delayedClose$)\n .pipe(filter(event => {\n if (event === pending) {\n pending = null;\n return event.open !== isOpenedFn();\n }\n return false;\n }), map(event => event.open));\n };\n}\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay = 0, closeDelay = 0) {\n const parsedTriggers = parseTriggers(triggers);\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return () => { };\n }\n const subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\n .subscribe(open => (open ? openFn() : closeFn()));\n return () => subscription.unsubscribe();\n}\n\n/**\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the popovers used in the application.\n */\nclass NgbPopoverConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'click';\n this.disablePopover = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbPopoverConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbPopoverConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nlet nextId$1 = 0;\nclass NgbPopoverWindow {\n isTitleTemplate() { return this.title instanceof TemplateRef; }\n}\nNgbPopoverWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverWindow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nNgbPopoverWindow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPopoverWindow, selector: \"ngb-popover-window\", inputs: { animation: \"animation\", title: \"title\", id: \"id\", popoverClass: \"popoverClass\", context: \"context\" }, host: { attributes: { \"role\": \"tooltip\" }, properties: { \"class\": \"\\\"popover\\\" + (popoverClass ? \\\" \\\" + popoverClass : \\\"\\\")\", \"class.fade\": \"animation\", \"id\": \"id\" } }, ngImport: i0, template: `\n
    \n

    \n {{title}}\n \n

    \n
    `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverWindow, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'tooltip',\n '[id]': 'id'\n },\n template: `\n
    \n

    \n {{title}}\n \n

    \n
    `\n }]\n }], propDecorators: { animation: [{\n type: Input\n }], title: [{\n type: Input\n }], id: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], context: [{\n type: Input\n }] } });\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nclass NgbPopover {\n constructor(_elementRef, _renderer, injector, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the popover opening animation has finished. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover closing animation has finished. Contains no payload.\n *\n * At this point popover is not in the DOM anymore.\n */\n this.hidden = new EventEmitter();\n this._ngbPopoverWindowId = `ngb-popover-${nextId$1++}`;\n this._windowRef = null;\n this._positioning = ngbPositioning();\n this.animation = config.animation;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disablePopover = config.disablePopover;\n this.popoverClass = config.popoverClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, this._ngZone, applicationRef);\n }\n _isDisabled() {\n if (this.disablePopover) {\n return true;\n }\n if (!this.ngbPopover && !this.popoverTitle) {\n return true;\n }\n return false;\n }\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n */\n open(context) {\n if (!this._windowRef && !this._isDisabled()) {\n // this type assertion is safe because otherwise _isDisabled would return true\n const { windowRef, transition$ } = this._popupService.open(this.ngbPopover, context, this.animation);\n this._windowRef = windowRef;\n this._windowRef.instance.animation = this.animation;\n this._windowRef.instance.title = this.popoverTitle;\n this._windowRef.instance.context = context;\n this._windowRef.instance.popoverClass = this.popoverClass;\n this._windowRef.instance.id = this._ngbPopoverWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening popover from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because popover won't work inside the OnPush component.\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the popover from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._elementRef.nativeElement,\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n baseClass: 'bs-popover',\n updatePopperOptions: addPopperOffset([0, 8]),\n });\n Promise.resolve().then(() => {\n // This update is required for correct arrow placement\n this._positioning.update();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n });\n });\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n transition$.subscribe(() => this.shown.emit());\n }\n }\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n close(animation = this.animation) {\n if (this._windowRef) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close(animation).subscribe(() => {\n this._windowRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this.hidden.emit();\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() { return this._windowRef != null; }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({ ngbPopover, popoverTitle, disablePopover, popoverClass }) {\n if (popoverClass && this.isOpen()) {\n this._windowRef.instance.popoverClass = popoverClass.currentValue;\n }\n // close popover if title and content become empty, or disablePopover set to true\n if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\n this.close();\n }\n }\n ngOnDestroy() {\n this.close(false);\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n this._unregisterListenersFn?.();\n }\n}\nNgbPopover.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopover, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: NgbPopoverConfig }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbPopover.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbPopover, selector: \"[ngbPopover]\", inputs: { animation: \"animation\", autoClose: \"autoClose\", ngbPopover: \"ngbPopover\", popoverTitle: \"popoverTitle\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disablePopover: \"disablePopover\", popoverClass: \"popoverClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbPopover\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopover, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: NgbPopoverConfig }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ApplicationRef }]; }, propDecorators: { animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], ngbPopover: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disablePopover: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }] } });\n\nclass NgbPopoverModule {\n}\nNgbPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverModule, declarations: [NgbPopover, NgbPopoverWindow], imports: [CommonModule], exports: [NgbPopover] });\nNgbPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbPopoverModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbPopover, NgbPopoverWindow], exports: [NgbPopover], imports: [CommonModule] }]\n }] });\n\n/**\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the progress bars used in the application.\n */\nclass NgbProgressbarConfig {\n constructor() {\n this.max = 100;\n this.animated = false;\n this.striped = false;\n this.showValue = false;\n }\n}\nNgbProgressbarConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbarConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbProgressbarConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbarConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbarConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nclass NgbProgressbar {\n constructor(config) {\n /**\n * The current value for the progress bar.\n *\n * Should be in the `[0, max]` range.\n */\n this.value = 0;\n this.max = config.max;\n this.animated = config.animated;\n this.striped = config.striped;\n this.textType = config.textType;\n this.type = config.type;\n this.showValue = config.showValue;\n this.height = config.height;\n }\n /**\n * The maximal value to be displayed in the progress bar.\n *\n * Should be a positive number. Will default to 100 otherwise.\n */\n set max(max) {\n this._max = !isNumber(max) || max <= 0 ? 100 : max;\n }\n get max() { return this._max; }\n getValue() { return getValueInRange(this.value, this.max); }\n getPercentValue() { return 100 * this.getValue() / this.max; }\n}\nNgbProgressbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbar, deps: [{ token: NgbProgressbarConfig }], target: i0.ɵɵFactoryTarget.Component });\nNgbProgressbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbProgressbar, selector: \"ngb-progressbar\", inputs: { max: \"max\", animated: \"animated\", striped: \"striped\", showValue: \"showValue\", textType: \"textType\", type: \"type\", value: \"value\", height: \"height\" }, host: { properties: { \"style.height\": \"this.height\" }, classAttribute: \"progress\" }, ngImport: i0, template: `\n
    \n {{getValue() / max | percent}}\n
    \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"pipe\", type: i2.PercentPipe, name: \"percent\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbar, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'progress' },\n template: `\n
    \n {{getValue() / max | percent}}\n
    \n `\n }]\n }], ctorParameters: function () { return [{ type: NgbProgressbarConfig }]; }, propDecorators: { max: [{\n type: Input\n }], animated: [{\n type: Input\n }], striped: [{\n type: Input\n }], showValue: [{\n type: Input\n }], textType: [{\n type: Input\n }], type: [{\n type: Input\n }], value: [{\n type: Input\n }], height: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.height']\n }] } });\n\nclass NgbProgressbarModule {\n}\nNgbProgressbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbProgressbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbarModule, declarations: [NgbProgressbar], imports: [CommonModule], exports: [NgbProgressbar] });\nNgbProgressbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbarModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbProgressbarModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] }]\n }] });\n\n/**\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the ratings used in the application.\n */\nclass NgbRatingConfig {\n constructor() {\n this.max = 10;\n this.readonly = false;\n this.resettable = false;\n }\n}\nNgbRatingConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRatingConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbRatingConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRatingConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRatingConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nclass NgbRating {\n constructor(config, _changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this.contexts = [];\n this.disabled = false;\n /**\n * An event emitted when the user is hovering over a given rating.\n *\n * Event payload equals to the rating being hovered over.\n */\n this.hover = new EventEmitter();\n /**\n * An event emitted when the user stops hovering over a given rating.\n *\n * Event payload equals to the rating of the last item being hovered over.\n */\n this.leave = new EventEmitter();\n /**\n * An event emitted when the rating is changed.\n *\n * Event payload equals to the newly selected rating.\n */\n this.rateChange = new EventEmitter(true);\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.max = config.max;\n this.readonly = config.readonly;\n }\n ariaValueText() { return `${this.nextRate} out of ${this.max}`; }\n isInteractive() { return !this.readonly && !this.disabled; }\n enter(value) {\n if (this.isInteractive()) {\n this._updateState(value);\n }\n this.hover.emit(value);\n }\n handleBlur() { this.onTouched(); }\n handleClick(value) {\n if (this.isInteractive()) {\n this.update(this.resettable && this.rate === value ? 0 : value);\n }\n }\n handleKeyDown(event) {\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.ArrowDown:\n case Key.ArrowLeft:\n this.update(this.rate - 1);\n break;\n case Key.ArrowUp:\n case Key.ArrowRight:\n this.update(this.rate + 1);\n break;\n case Key.Home:\n this.update(0);\n break;\n case Key.End:\n this.update(this.max);\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n }\n ngOnChanges(changes) {\n if (changes['rate']) {\n this.update(this.rate);\n }\n if (changes['max']) {\n this._updateMax();\n }\n }\n ngOnInit() {\n this._setupContexts();\n this._updateState(this.rate);\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n reset() {\n this.leave.emit(this.nextRate);\n this._updateState(this.rate);\n }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n update(value, internalChange = true) {\n const newRate = getValueInRange(value, this.max, 0);\n if (this.isInteractive() && this.rate !== newRate) {\n this.rate = newRate;\n this.rateChange.emit(this.rate);\n }\n if (internalChange) {\n this.onChange(this.rate);\n this.onTouched();\n }\n this._updateState(this.rate);\n }\n writeValue(value) {\n this.update(value, false);\n this._changeDetectorRef.markForCheck();\n }\n _updateState(nextValue) {\n this.nextRate = nextValue;\n this.contexts.forEach((context, index) => context.fill = Math.round(getValueInRange(nextValue - index, 1, 0) * 100));\n }\n _updateMax() {\n if (this.max > 0) {\n this._setupContexts();\n this.update(this.rate);\n }\n }\n _setupContexts() { this.contexts = Array.from({ length: this.max }, (v, k) => ({ fill: 0, index: k })); }\n}\nNgbRating.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRating, deps: [{ token: NgbRatingConfig }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nNgbRating.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbRating, selector: \"ngb-rating\", inputs: { max: \"max\", rate: \"rate\", readonly: \"readonly\", resettable: \"resettable\", starTemplate: \"starTemplate\" }, outputs: { hover: \"hover\", leave: \"leave\", rateChange: \"rateChange\" }, host: { attributes: { \"role\": \"slider\", \"aria-valuemin\": \"0\" }, listeners: { \"blur\": \"handleBlur()\", \"keydown\": \"handleKeyDown($event)\", \"mouseleave\": \"reset()\" }, properties: { \"tabindex\": \"disabled ? -1 : 0\", \"attr.aria-valuemax\": \"max\", \"attr.aria-valuenow\": \"nextRate\", \"attr.aria-valuetext\": \"ariaValueText()\", \"attr.aria-disabled\": \"readonly ? true : null\" }, classAttribute: \"d-inline-flex\" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }], queries: [{ propertyName: \"starTemplateFromContent\", first: true, predicate: TemplateRef, descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n {{ fill === 100 ? '★' : '☆' }}\n \n ({{ index < nextRate ? '*' : ' ' }})\n \n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRating, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'd-inline-flex',\n '[tabindex]': 'disabled ? -1 : 0',\n 'role': 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()'\n },\n template: `\n {{ fill === 100 ? '★' : '☆' }}\n \n ({{ index < nextRate ? '*' : ' ' }})\n \n \n \n \n \n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }]\n }]\n }], ctorParameters: function () { return [{ type: NgbRatingConfig }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { max: [{\n type: Input\n }], rate: [{\n type: Input\n }], readonly: [{\n type: Input\n }], resettable: [{\n type: Input\n }], starTemplate: [{\n type: Input\n }], starTemplateFromContent: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }], hover: [{\n type: Output\n }], leave: [{\n type: Output\n }], rateChange: [{\n type: Output\n }] } });\n\nclass NgbRatingModule {\n}\nNgbRatingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbRatingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRatingModule, declarations: [NgbRating], imports: [CommonModule], exports: [NgbRating] });\nNgbRatingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRatingModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbRatingModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] }]\n }] });\n\nclass NgbTime {\n constructor(hour, minute, second) {\n this.hour = toInteger(hour);\n this.minute = toInteger(minute);\n this.second = toInteger(second);\n }\n changeHour(step = 1) { this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step); }\n updateHour(hour) {\n if (isNumber(hour)) {\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n }\n else {\n this.hour = NaN;\n }\n }\n changeMinute(step = 1) { this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step); }\n updateMinute(minute) {\n if (isNumber(minute)) {\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n this.changeHour(Math.floor(minute / 60));\n }\n else {\n this.minute = NaN;\n }\n }\n changeSecond(step = 1) { this.updateSecond((isNaN(this.second) ? 0 : this.second) + step); }\n updateSecond(second) {\n if (isNumber(second)) {\n this.second = second < 0 ? 60 + second % 60 : second % 60;\n this.changeMinute(Math.floor(second / 60));\n }\n else {\n this.second = NaN;\n }\n }\n isValid(checkSecs = true) {\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n }\n toString() { return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`; }\n}\n\n/**\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the timepickers used in the application.\n */\nclass NgbTimepickerConfig {\n constructor() {\n this.meridian = false;\n this.spinners = true;\n this.seconds = false;\n this.hourStep = 1;\n this.minuteStep = 1;\n this.secondStep = 1;\n this.disabled = false;\n this.readonlyInputs = false;\n this.size = 'medium';\n }\n}\nNgbTimepickerConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimepickerConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n return new NgbTimeStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * @since 2.2.0\n */\nclass NgbTimeAdapter {\n}\nNgbTimeAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimeAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimeAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimeAdapter, providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimeAdapter, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY }]\n }] });\nclass NgbTimeStructAdapter extends NgbTimeAdapter {\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n fromModel(time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n }\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n toModel(time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n }\n}\nNgbTimeStructAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimeStructAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimeStructAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimeStructAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimeStructAdapter, decorators: [{\n type: Injectable\n }] });\n\nfunction NGB_TIMEPICKER_I18N_FACTORY(locale) {\n return new NgbTimepickerI18nDefault(locale);\n}\n/**\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\n * as explained in the Angular i18n guide.\n */\nclass NgbTimepickerI18n {\n}\nNgbTimepickerI18n.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerI18n, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimepickerI18n.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerI18n, providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerI18n, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID] }]\n }] });\nclass NgbTimepickerI18nDefault extends NgbTimepickerI18n {\n constructor(locale) {\n super();\n this._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\n }\n getMorningPeriod() { return this._periods[0]; }\n getAfternoonPeriod() { return this._periods[1]; }\n}\nNgbTimepickerI18nDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerI18nDefault, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTimepickerI18nDefault.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerI18nDefault });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerI18nDefault, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\nconst FILTER_REGEX = /[^0-9]/g;\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nclass NgbTimepicker {\n constructor(_config, _ngbTimeAdapter, _cd, i18n) {\n this._config = _config;\n this._ngbTimeAdapter = _ngbTimeAdapter;\n this._cd = _cd;\n this.i18n = i18n;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.meridian = _config.meridian;\n this.spinners = _config.spinners;\n this.seconds = _config.seconds;\n this.hourStep = _config.hourStep;\n this.minuteStep = _config.minuteStep;\n this.secondStep = _config.secondStep;\n this.disabled = _config.disabled;\n this.readonlyInputs = _config.readonlyInputs;\n this.size = _config.size;\n }\n /**\n * The number of hours to add/subtract when clicking hour spinners.\n */\n set hourStep(step) {\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\n }\n get hourStep() { return this._hourStep; }\n /**\n * The number of minutes to add/subtract when clicking minute spinners.\n */\n set minuteStep(step) {\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n }\n get minuteStep() { return this._minuteStep; }\n /**\n * The number of seconds to add/subtract when clicking second spinners.\n */\n set secondStep(step) {\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\n }\n get secondStep() { return this._secondStep; }\n writeValue(value) {\n const structValue = this._ngbTimeAdapter.fromModel(value);\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n this.model.second = 0;\n }\n this._cd.markForCheck();\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n changeHour(step) {\n this.model.changeHour(step);\n this.propagateModelChange();\n }\n changeMinute(step) {\n this.model.changeMinute(step);\n this.propagateModelChange();\n }\n changeSecond(step) {\n this.model.changeSecond(step);\n this.propagateModelChange();\n }\n updateHour(newVal) {\n const isPM = this.model.hour >= 12;\n const enteredHour = toInteger(newVal);\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n this.model.updateHour(enteredHour + 12);\n }\n else {\n this.model.updateHour(enteredHour);\n }\n this.propagateModelChange();\n }\n updateMinute(newVal) {\n this.model.updateMinute(toInteger(newVal));\n this.propagateModelChange();\n }\n updateSecond(newVal) {\n this.model.updateSecond(toInteger(newVal));\n this.propagateModelChange();\n }\n toggleMeridian() {\n if (this.meridian) {\n this.changeHour(12);\n }\n }\n formatInput(input) { input.value = input.value.replace(FILTER_REGEX, ''); }\n formatHour(value) {\n if (isNumber(value)) {\n if (this.meridian) {\n return padNumber(value % 12 === 0 ? 12 : value % 12);\n }\n else {\n return padNumber(value % 24);\n }\n }\n else {\n return padNumber(NaN);\n }\n }\n formatMinSec(value) { return padNumber(isNumber(value) ? value : NaN); }\n handleBlur() { this.onTouched(); }\n get isSmallSize() { return this.size === 'small'; }\n get isLargeSize() { return this.size === 'large'; }\n ngOnChanges(changes) {\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n this.model.second = 0;\n this.propagateModelChange(false);\n }\n }\n propagateModelChange(touched = true) {\n if (touched) {\n this.onTouched();\n }\n if (this.model.isValid(this.seconds)) {\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\n }\n else {\n this.onChange(this._ngbTimeAdapter.toModel(null));\n }\n }\n}\nNgbTimepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepicker, deps: [{ token: NgbTimepickerConfig }, { token: NgbTimeAdapter }, { token: i0.ChangeDetectorRef }, { token: NgbTimepickerI18n }], target: i0.ɵɵFactoryTarget.Component });\nNgbTimepicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbTimepicker, selector: \"ngb-timepicker\", inputs: { meridian: \"meridian\", spinners: \"spinners\", seconds: \"seconds\", hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondStep: \"secondStep\", readonlyInputs: \"readonlyInputs\", size: \"size\" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }], usesOnChanges: true, ngImport: i0, template: `\n
    \n
    \n
    \n \n \n \n
    \n
    :
    \n
    \n \n \n \n
    \n
    :
    \n
    \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n `, isInline: true, styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-minute,.ngb-tp-second,.ngb-tp-meridian{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepicker, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-timepicker', encapsulation: ViewEncapsulation.None, template: `\n
    \n
    \n
    \n \n \n \n
    \n
    :
    \n
    \n \n \n \n
    \n
    :
    \n
    \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n `, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }], styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-minute,.ngb-tp-second,.ngb-tp-meridian{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\\n\"] }]\n }], ctorParameters: function () { return [{ type: NgbTimepickerConfig }, { type: NgbTimeAdapter }, { type: i0.ChangeDetectorRef }, { type: NgbTimepickerI18n }]; }, propDecorators: { meridian: [{\n type: Input\n }], spinners: [{\n type: Input\n }], seconds: [{\n type: Input\n }], hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondStep: [{\n type: Input\n }], readonlyInputs: [{\n type: Input\n }], size: [{\n type: Input\n }] } });\n\nclass NgbTimepickerModule {\n}\nNgbTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerModule, declarations: [NgbTimepicker], imports: [CommonModule], exports: [NgbTimepicker] });\nNgbTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTimepickerModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] }]\n }] });\n\nconst ngbToastFadeInTransition = (element, animation) => {\n const { classList } = element;\n if (!animation) {\n classList.add('show');\n return;\n }\n classList.remove('hide');\n reflow(element);\n classList.add('showing');\n return () => {\n classList.remove('showing');\n classList.add('show');\n };\n};\nconst ngbToastFadeOutTransition = ({ classList }) => {\n classList.remove('show');\n return () => { classList.add('hide'); };\n};\n\n/**\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\n * and customize the values of its properties in order to provide default values for all the toasts used in the\n * application.\n *\n * @since 5.0.0\n */\nclass NgbToastConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autohide = true;\n this.delay = 5000;\n this.ariaLive = 'polite';\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbToastConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbToastConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/**\n * This directive allows the usage of HTML markup or other directives\n * inside of the toast's header.\n *\n * @since 5.0.0\n */\nclass NgbToastHeader {\n}\nNgbToastHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgbToastHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbToastHeader, selector: \"[ngbToastHeader]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastHeader, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbToastHeader]' }]\n }] });\n/**\n * Toasts provide feedback messages as notifications to the user.\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\n *\n * @since 5.0.0\n */\nclass NgbToast {\n constructor(ariaLive, config, _zone, _element) {\n this.ariaLive = ariaLive;\n this._zone = _zone;\n this._element = _element;\n /**\n * A template like `` can be\n * used in the projected content to allow markup usage.\n */\n this.contentHeaderTpl = null;\n /**\n * An event fired after the animation triggered by calling `.show()` method has finished.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event fired after the animation triggered by calling `.hide()` method has finished.\n *\n * It can only occur in 2 different scenarios:\n * - `autohide` timeout fires\n * - user clicks on a closing cross\n *\n * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\n * to the user to take care of that.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n if (this.ariaLive == null) {\n this.ariaLive = config.ariaLive;\n }\n this.delay = config.delay;\n this.autohide = config.autohide;\n this.animation = config.animation;\n }\n ngAfterContentInit() {\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this._init();\n this.show();\n });\n }\n ngOnChanges(changes) {\n if ('autohide' in changes) {\n this._clearTimeout();\n this._init();\n }\n }\n /**\n * Triggers toast closing programmatically.\n *\n * The returned observable will emit and be completed once the closing transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(hidden)` output\n *\n * @since 8.0.0\n */\n hide() {\n this._clearTimeout();\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, { animation: this.animation, runningTransition: 'stop' });\n transition.subscribe(() => { this.hidden.emit(); });\n return transition;\n }\n /**\n * Triggers toast opening programmatically.\n *\n * The returned observable will emit and be completed once the opening transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(shown)` output\n *\n * @since 8.0.0\n */\n show() {\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\n animation: this.animation,\n runningTransition: 'continue',\n });\n transition.subscribe(() => { this.shown.emit(); });\n return transition;\n }\n _init() {\n if (this.autohide && !this._timeoutID) {\n this._timeoutID = setTimeout(() => this.hide(), this.delay);\n }\n }\n _clearTimeout() {\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n }\n}\nNgbToast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToast, deps: [{ token: 'aria-live', attribute: true }, { token: NgbToastConfig }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nNgbToast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbToast, selector: \"ngb-toast\", inputs: { animation: \"animation\", delay: \"delay\", autohide: \"autohide\", header: \"header\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, host: { attributes: { \"role\": \"alert\", \"aria-atomic\": \"true\" }, properties: { \"attr.aria-live\": \"ariaLive\", \"class.fade\": \"animation\" }, classAttribute: \"toast\" }, queries: [{ propertyName: \"contentHeaderTpl\", first: true, predicate: NgbToastHeader, descendants: true, read: TemplateRef, static: true }], exportAs: [\"ngbToast\"], usesOnChanges: true, ngImport: i0, template: `\n \n {{header}}\n \n \n
    \n \n \n
    \n
    \n
    \n \n
    \n `, isInline: true, styles: [\"ngb-toast{display:block}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToast, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-toast', exportAs: 'ngbToast', encapsulation: ViewEncapsulation.None, host: {\n 'role': 'alert',\n '[attr.aria-live]': 'ariaLive',\n 'aria-atomic': 'true',\n 'class': 'toast',\n '[class.fade]': 'animation',\n }, template: `\n \n {{header}}\n \n \n
    \n \n \n
    \n
    \n
    \n \n
    \n `, styles: [\"ngb-toast{display:block}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\\n\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: NgbToastConfig }, { type: i0.NgZone }, { type: i0.ElementRef }]; }, propDecorators: { animation: [{\n type: Input\n }], delay: [{\n type: Input\n }], autohide: [{\n type: Input\n }], header: [{\n type: Input\n }], contentHeaderTpl: [{\n type: ContentChild,\n args: [NgbToastHeader, { read: TemplateRef, static: true }]\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }] } });\n\nclass NgbToastModule {\n}\nNgbToastModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbToastModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastModule, declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] });\nNgbToastModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbToastModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] }]\n }] });\n\n/**\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tooltips used in the application.\n */\nclass NgbTooltipConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'hover focus';\n this.disableTooltip = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbTooltipConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTooltipConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\nlet nextId = 0;\nclass NgbTooltipWindow {\n}\nNgbTooltipWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipWindow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nNgbTooltipWindow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbTooltipWindow, selector: \"ngb-tooltip-window\", inputs: { animation: \"animation\", id: \"id\", tooltipClass: \"tooltipClass\" }, host: { attributes: { \"role\": \"tooltip\" }, properties: { \"class\": \"\\\"tooltip\\\" + (tooltipClass ? \\\" \\\" + tooltipClass : \\\"\\\")\", \"class.fade\": \"animation\", \"id\": \"id\" } }, ngImport: i0, template: `
    `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipWindow, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"tooltip\" + (tooltipClass ? \" \" + tooltipClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'tooltip',\n '[id]': 'id'\n },\n template: `
    `\n }]\n }], propDecorators: { animation: [{\n type: Input\n }], id: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }] } });\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nclass NgbTooltip {\n constructor(_elementRef, _renderer, injector, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the tooltip opening animation has finished. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the tooltip closing animation has finished. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbTooltipWindowId = `ngb-tooltip-${nextId++}`;\n this._windowRef = null;\n this._positioning = ngbPositioning();\n this.animation = config.animation;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disableTooltip = config.disableTooltip;\n this.tooltipClass = config.tooltipClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, this._ngZone, applicationRef);\n }\n /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n */\n set ngbTooltip(value) {\n this._ngbTooltip = value;\n if (!value && this._windowRef) {\n this.close();\n }\n }\n get ngbTooltip() { return this._ngbTooltip; }\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n */\n open(context) {\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n const { windowRef, transition$ } = this._popupService.open(this._ngbTooltip, context, this.animation);\n this._windowRef = windowRef;\n this._windowRef.instance.animation = this.animation;\n this._windowRef.instance.tooltipClass = this.tooltipClass;\n this._windowRef.instance.id = this._ngbTooltipWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because tooltip won't work inside the OnPush component.\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the tooltip from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._elementRef.nativeElement,\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n baseClass: 'bs-tooltip',\n });\n Promise.resolve().then(() => {\n // This update is required for correct arrow placement\n this._positioning.update();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n });\n });\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n transition$.subscribe(() => this.shown.emit());\n }\n }\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n close(animation = this.animation) {\n if (this._windowRef != null) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close(animation).subscribe(() => {\n this._windowRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this.hidden.emit();\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() { return this._windowRef != null; }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({ tooltipClass }) {\n if (tooltipClass && this.isOpen()) {\n this._windowRef.instance.tooltipClass = tooltipClass.currentValue;\n }\n }\n ngOnDestroy() {\n this.close(false);\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n this._unregisterListenersFn?.();\n }\n}\nNgbTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltip, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: NgbTooltipConfig }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbTooltip, selector: \"[ngbTooltip]\", inputs: { animation: \"animation\", autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disableTooltip: \"disableTooltip\", tooltipClass: \"tooltipClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbTooltip: \"ngbTooltip\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbTooltip\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltip, decorators: [{\n type: Directive,\n args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: NgbTooltipConfig }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ChangeDetectorRef }, { type: i0.ApplicationRef }]; }, propDecorators: { animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disableTooltip: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], ngbTooltip: [{\n type: Input\n }] } });\n\nclass NgbTooltipModule {\n}\nNgbTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipModule, declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] });\nNgbTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTooltipModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] }]\n }] });\n\n/**\n * A component that helps with text highlighting.\n *\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n * highlighting:\n *\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\n */\nclass NgbHighlight {\n constructor() {\n /**\n * The CSS class for `` elements wrapping the `term` inside the `result`.\n */\n this.highlightClass = 'ngb-highlight';\n /**\n * Boolean option to determine if the highlighting should be sensitive to accents or not.\n *\n * This feature is only available for browsers that implement the `String.normalize` function\n * (typically not Internet Explorer).\n * If you want to use this feature in a browser that does not implement `String.normalize`,\n * you will have to include a polyfill in your application (`unorm` for example).\n *\n * @since 9.1.0\n */\n this.accentSensitive = true;\n }\n ngOnChanges(changes) {\n if (!this.accentSensitive && !String.prototype.normalize) {\n console.warn('The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser ' +\n 'that does not implement the `String.normalize` function. ' +\n 'You will have to include a polyfill in your application to use this feature in the current browser.');\n this.accentSensitive = true;\n }\n const result = toString(this.result);\n const terms = Array.isArray(this.term) ? this.term : [this.term];\n const prepareTerm = term => this.accentSensitive ? term : removeAccents(term);\n const escapedTerms = terms.map(term => regExpEscape(prepareTerm(toString(term)))).filter(term => term);\n const toSplit = this.accentSensitive ? result : removeAccents(result);\n const parts = escapedTerms.length ? toSplit.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi')) : [result];\n if (this.accentSensitive) {\n this.parts = parts;\n }\n else {\n let offset = 0;\n this.parts = parts.map(part => result.substring(offset, offset += part.length));\n }\n }\n}\nNgbHighlight.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbHighlight, deps: [], target: i0.ɵɵFactoryTarget.Component });\nNgbHighlight.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbHighlight, selector: \"ngb-highlight\", inputs: { highlightClass: \"highlightClass\", result: \"result\", term: \"term\", accentSensitive: \"accentSensitive\" }, usesOnChanges: true, ngImport: i0, template: \"{{part}}{{part}}\", isInline: true, styles: [\".ngb-highlight{font-weight:700}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbHighlight, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-highlight', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: `` +\n `{{part}}{{part}}` +\n ``, styles: [\".ngb-highlight{font-weight:700}\\n\"] }]\n }], propDecorators: { highlightClass: [{\n type: Input\n }], result: [{\n type: Input\n }], term: [{\n type: Input\n }], accentSensitive: [{\n type: Input\n }] } });\n\nclass NgbTypeaheadWindow {\n constructor() {\n this.activeIdx = 0;\n /**\n * Flag indicating if the first row should be active initially\n */\n this.focusFirst = true;\n /**\n * A function used to format a given result before display. This function should return a formatted string without any\n * HTML markup\n */\n this.formatter = toString;\n /**\n * Event raised when user selects a particular result row\n */\n this.selectEvent = new EventEmitter();\n this.activeChangeEvent = new EventEmitter();\n }\n hasActive() { return this.activeIdx > -1 && this.activeIdx < this.results.length; }\n getActive() { return this.results[this.activeIdx]; }\n markActive(activeIdx) {\n this.activeIdx = activeIdx;\n this._activeChanged();\n }\n next() {\n if (this.activeIdx === this.results.length - 1) {\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n }\n else {\n this.activeIdx++;\n }\n this._activeChanged();\n }\n prev() {\n if (this.activeIdx < 0) {\n this.activeIdx = this.results.length - 1;\n }\n else if (this.activeIdx === 0) {\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n }\n else {\n this.activeIdx--;\n }\n this._activeChanged();\n }\n resetActive() {\n this.activeIdx = this.focusFirst ? 0 : -1;\n this._activeChanged();\n }\n select(item) { this.selectEvent.emit(item); }\n ngOnInit() { this.resetActive(); }\n _activeChanged() {\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n }\n}\nNgbTypeaheadWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadWindow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nNgbTypeaheadWindow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbTypeaheadWindow, selector: \"ngb-typeahead-window\", inputs: { id: \"id\", focusFirst: \"focusFirst\", results: \"results\", term: \"term\", formatter: \"formatter\", resultTemplate: \"resultTemplate\", popupClass: \"popupClass\" }, outputs: { selectEvent: \"select\", activeChangeEvent: \"activeChange\" }, host: { attributes: { \"role\": \"listbox\" }, listeners: { \"mousedown\": \"$event.preventDefault()\" }, properties: { \"class\": \"\\\"dropdown-menu show\\\" + (popupClass ? \\\" \\\" + popupClass : \\\"\\\")\", \"id\": \"id\" } }, exportAs: [\"ngbTypeaheadWindow\"], ngImport: i0, template: `\n \n \n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: NgbHighlight, selector: \"ngb-highlight\", inputs: [\"highlightClass\", \"result\", \"term\", \"accentSensitive\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadWindow, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n encapsulation: ViewEncapsulation.None,\n host: {\n '(mousedown)': '$event.preventDefault()',\n '[class]': '\"dropdown-menu show\" + (popupClass ? \" \" + popupClass : \"\")',\n 'role': 'listbox',\n '[id]': 'id'\n },\n template: `\n \n \n \n \n \n \n `\n }]\n }], propDecorators: { id: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], results: [{\n type: Input\n }], term: [{\n type: Input\n }], formatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], selectEvent: [{\n type: Output,\n args: ['select']\n }], activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }] } });\n\n/**\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the typeaheads used in the application.\n */\nclass NgbTypeaheadConfig {\n constructor() {\n this.editable = true;\n this.focusFirst = true;\n this.showHint = false;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n }\n}\nNgbTypeaheadConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgbTypeaheadConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nconst ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\nfunction ARIA_LIVE_DELAY_FACTORY() {\n return 100;\n}\nfunction getLiveElement(document, lazyCreate = false) {\n let element = document.body.querySelector('#ngb-live');\n if (element == null && lazyCreate) {\n element = document.createElement('div');\n element.setAttribute('id', 'ngb-live');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.classList.add('visually-hidden');\n document.body.appendChild(element);\n }\n return element;\n}\nclass Live {\n constructor(_document, _delay) {\n this._document = _document;\n this._delay = _delay;\n }\n ngOnDestroy() {\n const element = getLiveElement(this._document);\n if (element) {\n // if exists, it will always be attached to the \n element.parentElement.removeChild(element);\n }\n }\n say(message) {\n const element = getLiveElement(this._document, true);\n const delay = this._delay;\n if (element != null) {\n element.textContent = '';\n const setText = () => element.textContent = message;\n if (delay === null) {\n setText();\n }\n else {\n setTimeout(setText, delay);\n }\n }\n }\n}\nLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: Live, deps: [{ token: DOCUMENT }, { token: ARIA_LIVE_DELAY }], target: i0.ɵɵFactoryTarget.Injectable });\nLive.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: Live, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: Live, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ARIA_LIVE_DELAY]\n }] }]; } });\n\nlet nextWindowId = 0;\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nclass NgbTypeahead {\n constructor(_elementRef, viewContainerRef, _renderer, injector, config, ngZone, _live, _document, _ngZone, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._live = _live;\n this._document = _document;\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n this._subscription = null;\n this._closed$ = new Subject();\n this._inputValueBackup = null;\n this._windowRef = null;\n this._positioning = ngbPositioning();\n /**\n * The value for the `autocomplete` attribute for the `` element.\n *\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n *\n * @since 2.1.0\n */\n this.autocomplete = 'off';\n /**\n * The preferred placement of the typeahead, among the [possible values](#/guides/positioning#api).\n *\n * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = 'bottom-start';\n /**\n * An event emitted right before an item is selected from the result list.\n *\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n */\n this.selectItem = new EventEmitter();\n this.activeDescendant = null;\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\n this._onTouched = () => { };\n this._onChange = (_) => { };\n this.container = config.container;\n this.editable = config.editable;\n this.focusFirst = config.focusFirst;\n this.showHint = config.showHint;\n this.placement = config.placement;\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input')\n .pipe(map($event => $event.target.value));\n this._resubscribeTypeahead = new BehaviorSubject(null);\n this._popupService = new PopupService(NgbTypeaheadWindow, injector, viewContainerRef, _renderer, this._ngZone, applicationRef);\n }\n ngOnInit() { this._subscribeToUserInput(); }\n ngOnChanges({ ngbTypeahead }) {\n if (ngbTypeahead && !ngbTypeahead.firstChange) {\n this._unsubscribeFromUserInput();\n this._subscribeToUserInput();\n }\n }\n ngOnDestroy() {\n this._closePopup();\n this._unsubscribeFromUserInput();\n }\n registerOnChange(fn) { this._onChange = fn; }\n registerOnTouched(fn) { this._onTouched = fn; }\n writeValue(value) {\n this._writeInputValue(this._formatItemForInput(value));\n if (this.showHint) {\n this._inputValueBackup = value;\n }\n }\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n /**\n * Dismisses typeahead popup window\n */\n dismissPopup() {\n if (this.isPopupOpen()) {\n this._resubscribeTypeahead.next(null);\n this._closePopup();\n if (this.showHint && this._inputValueBackup !== null) {\n this._writeInputValue(this._inputValueBackup);\n }\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Returns true if the typeahead popup window is displayed\n */\n isPopupOpen() { return this._windowRef != null; }\n handleBlur() {\n this._resubscribeTypeahead.next(null);\n this._onTouched();\n }\n handleKeyDown(event) {\n if (!this.isPopupOpen()) {\n return;\n }\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.ArrowDown:\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case Key.ArrowUp:\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case Key.Enter:\n case Key.Tab: {\n const result = this._windowRef.instance.getActive();\n if (isDefined(result)) {\n event.preventDefault();\n event.stopPropagation();\n this._selectResult(result);\n }\n this._closePopup();\n break;\n }\n }\n }\n _openPopup() {\n if (!this.isPopupOpen()) {\n this._inputValueBackup = this._elementRef.nativeElement.value;\n const { windowRef } = this._popupService.open();\n this._windowRef = windowRef;\n this._windowRef.instance.id = this.popupId;\n this._windowRef.instance.selectEvent.subscribe((result) => this._selectResultClosePopup(result));\n this._windowRef.instance.activeChangeEvent.subscribe((activeId) => this.activeDescendant = activeId);\n this._windowRef.instance.popupClass = this.popupClass;\n if (this.container === 'body') {\n this._renderer.setStyle(this._windowRef.location.nativeElement, 'z-index', '1055');\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n this._changeDetector.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n if (this._windowRef) {\n this._positioning.createPopper({\n hostElement: this._elementRef.nativeElement,\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: addPopperOffset([0, 2]),\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n }\n });\n ngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\n }\n }\n _closePopup() {\n this._popupService.close().subscribe(() => {\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._closed$.next();\n this._windowRef = null;\n this.activeDescendant = null;\n });\n }\n _selectResult(result) {\n let defaultPrevented = false;\n this.selectItem.emit({ item: result, preventDefault: () => { defaultPrevented = true; } });\n this._resubscribeTypeahead.next(null);\n if (!defaultPrevented) {\n this.writeValue(result);\n this._onChange(result);\n }\n }\n _selectResultClosePopup(result) {\n this._selectResult(result);\n this._closePopup();\n }\n _showHint() {\n if (this.showHint && this._windowRef?.instance.hasActive() && this._inputValueBackup != null) {\n const userInputLowerCase = this._inputValueBackup.toLowerCase();\n const formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n if (userInputLowerCase === formattedVal.substring(0, this._inputValueBackup.length).toLowerCase()) {\n this._writeInputValue(this._inputValueBackup + formattedVal.substring(this._inputValueBackup.length));\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n }\n else {\n this._writeInputValue(formattedVal);\n }\n }\n }\n _formatItemForInput(item) {\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n }\n _writeInputValue(value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n }\n _subscribeToUserInput() {\n const results$ = this._valueChanges.pipe(tap(value => {\n this._inputValueBackup = this.showHint ? value : null;\n this._onChange(this.editable ? value : undefined);\n }), this.ngbTypeahead ? this.ngbTypeahead : () => of([]));\n this._subscription = this._resubscribeTypeahead.pipe(switchMap(() => results$)).subscribe(results => {\n if (!results || results.length === 0) {\n this._closePopup();\n }\n else {\n this._openPopup();\n this._windowRef.instance.focusFirst = this.focusFirst;\n this._windowRef.instance.results = results;\n this._windowRef.instance.term = this._elementRef.nativeElement.value;\n if (this.resultFormatter) {\n this._windowRef.instance.formatter = this.resultFormatter;\n }\n if (this.resultTemplate) {\n this._windowRef.instance.resultTemplate = this.resultTemplate;\n }\n this._windowRef.instance.resetActive();\n // The observable stream we are subscribing to might have async steps\n // and if a component containing typeahead is using the OnPush strategy\n // the change detection turn wouldn't be invoked automatically.\n this._windowRef.changeDetectorRef.detectChanges();\n this._showHint();\n }\n // live announcer\n const count = results ? results.length : 0;\n this._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\n });\n }\n _unsubscribeFromUserInput() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n this._subscription = null;\n }\n}\nNgbTypeahead.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeahead, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: NgbTypeaheadConfig }, { token: i0.NgZone }, { token: Live }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgbTypeahead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbTypeahead, selector: \"input[ngbTypeahead]\", inputs: { autocomplete: \"autocomplete\", container: \"container\", editable: \"editable\", focusFirst: \"focusFirst\", inputFormatter: \"inputFormatter\", ngbTypeahead: \"ngbTypeahead\", resultFormatter: \"resultFormatter\", resultTemplate: \"resultTemplate\", showHint: \"showHint\", placement: \"placement\", popupClass: \"popupClass\" }, outputs: { selectItem: \"selectItem\" }, host: { attributes: { \"autocapitalize\": \"off\", \"autocorrect\": \"off\", \"role\": \"combobox\", \"aria-multiline\": \"false\" }, listeners: { \"blur\": \"handleBlur()\", \"keydown\": \"handleKeyDown($event)\" }, properties: { \"class.open\": \"isPopupOpen()\", \"autocomplete\": \"autocomplete\", \"attr.aria-autocomplete\": \"showHint ? \\\"both\\\" : \\\"list\\\"\", \"attr.aria-activedescendant\": \"activeDescendant\", \"attr.aria-owns\": \"isPopupOpen() ? popupId : null\", \"attr.aria-expanded\": \"isPopupOpen()\" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }], exportAs: [\"ngbTypeahead\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeahead, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n 'autocapitalize': 'off',\n 'autocorrect': 'off',\n 'role': 'combobox',\n 'aria-multiline': 'false',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()'\n },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }]\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: NgbTypeaheadConfig }, { type: i0.NgZone }, { type: Live }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i0.ApplicationRef }]; }, propDecorators: { autocomplete: [{\n type: Input\n }], container: [{\n type: Input\n }], editable: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], inputFormatter: [{\n type: Input\n }], ngbTypeahead: [{\n type: Input\n }], resultFormatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], showHint: [{\n type: Input\n }], placement: [{\n type: Input\n }], popupClass: [{\n type: Input\n }], selectItem: [{\n type: Output\n }] } });\n\nclass NgbTypeaheadModule {\n}\nNgbTypeaheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbTypeaheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadModule, declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow], imports: [CommonModule], exports: [NgbTypeahead, NgbHighlight] });\nNgbTypeaheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbTypeaheadModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule]\n }]\n }] });\n\nvar OffcanvasDismissReasons;\n(function (OffcanvasDismissReasons) {\n OffcanvasDismissReasons[OffcanvasDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n OffcanvasDismissReasons[OffcanvasDismissReasons[\"ESC\"] = 1] = \"ESC\";\n})(OffcanvasDismissReasons || (OffcanvasDismissReasons = {}));\n\nclass NgbOffcanvasBackdrop {\n constructor(_el, _zone) {\n this._el = _el;\n this._zone = _zone;\n this.dismissEvent = new EventEmitter();\n }\n ngOnInit() {\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n ngbRunTransition(this._zone, this._el.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, { animation: this.animation, runningTransition: 'continue' });\n });\n }\n hide() {\n return ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), { animation: this.animation, runningTransition: 'stop' });\n }\n dismiss() { this.dismissEvent.emit(OffcanvasDismissReasons.BACKDROP_CLICK); }\n}\nNgbOffcanvasBackdrop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasBackdrop, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbOffcanvasBackdrop.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbOffcanvasBackdrop, selector: \"ngb-offcanvas-backdrop\", inputs: { animation: \"animation\", backdropClass: \"backdropClass\" }, outputs: { dismissEvent: \"dismiss\" }, host: { listeners: { \"mousedown\": \"dismiss()\" }, properties: { \"class\": \"\\\"offcanvas-backdrop\\\" + (backdropClass ? \\\" \\\" + backdropClass : \\\"\\\")\", \"class.show\": \"!animation\", \"class.fade\": \"animation\" } }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasBackdrop, decorators: [{\n type: Component,\n args: [{\n selector: 'ngb-offcanvas-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: {\n '[class]': '\"offcanvas-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n '[class.show]': '!animation',\n '[class.fade]': 'animation',\n '(mousedown)': 'dismiss()'\n }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }] } });\n\nclass NgbOffcanvasPanel {\n constructor(_document, _elRef, _zone) {\n this._document = _document;\n this._elRef = _elRef;\n this._zone = _zone;\n this._closed$ = new Subject();\n this._elWithFocus = null; // element that is focused prior to offcanvas opening\n this.keyboard = true;\n this.position = 'start';\n this.dismissEvent = new EventEmitter();\n this.shown = new Subject();\n this.hidden = new Subject();\n }\n dismiss(reason) { this.dismissEvent.emit(reason); }\n ngOnInit() {\n this._elWithFocus = this._document.activeElement;\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => { this._show(); });\n }\n ngOnDestroy() { this._disableEventHandling(); }\n hide() {\n const { nativeElement } = this._elRef;\n const context = { animation: this.animation, runningTransition: 'stop' };\n // TODO when we target Bootstrap 5.2+, the style.visibility handling can be removed, because Bootstrap has improved\n // its CSS\n const offcanvasTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element) => {\n nativeElement.classList.remove('show');\n return () => element.style.visibility = 'hidden';\n }, context);\n offcanvasTransition$.subscribe(() => {\n this.hidden.next();\n this.hidden.complete();\n });\n this._disableEventHandling();\n this._restoreFocus();\n return offcanvasTransition$;\n }\n _show() {\n const context = { animation: this.animation, runningTransition: 'continue' };\n // TODO when we target Bootstrap 5.2+, the style.visibility handling can be removed, because Bootstrap has improved\n // its CSS\n const offcanvasTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n element.style.visibility = 'visible';\n }, context);\n offcanvasTransition$.subscribe(() => {\n this.shown.next();\n this.shown.complete();\n });\n this._enableEventHandling();\n this._setFocus();\n }\n _enableEventHandling() {\n const { nativeElement } = this._elRef;\n this._zone.runOutsideAngular(() => {\n fromEvent(nativeElement, 'keydown')\n .pipe(takeUntil(this._closed$), \n /* eslint-disable-next-line deprecation/deprecation */\n filter(e => e.which === Key.Escape))\n .subscribe(event => {\n if (this.keyboard) {\n requestAnimationFrame(() => {\n if (!event.defaultPrevented) {\n this._zone.run(() => this.dismiss(OffcanvasDismissReasons.ESC));\n }\n });\n }\n });\n });\n }\n _disableEventHandling() { this._closed$.next(); }\n _setFocus() {\n const { nativeElement } = this._elRef;\n if (!nativeElement.contains(document.activeElement)) {\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n }\n _restoreFocus() {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular(() => {\n setTimeout(() => elementToFocus.focus());\n this._elWithFocus = null;\n });\n }\n}\nNgbOffcanvasPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasPanel, deps: [{ token: DOCUMENT }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nNgbOffcanvasPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.1\", type: NgbOffcanvasPanel, selector: \"ngb-offcanvas-panel\", inputs: { animation: \"animation\", ariaLabelledBy: \"ariaLabelledBy\", ariaDescribedBy: \"ariaDescribedBy\", keyboard: \"keyboard\", panelClass: \"panelClass\", position: \"position\" }, outputs: { dismissEvent: \"dismiss\" }, host: { attributes: { \"role\": \"dialog\", \"tabindex\": \"-1\" }, properties: { \"class\": \"\\\"offcanvas offcanvas-\\\" + position + (panelClass ? \\\" \\\" + panelClass : \\\"\\\")\", \"attr.aria-modal\": \"true\", \"attr.aria-labelledby\": \"ariaLabelledBy\", \"attr.aria-describedby\": \"ariaDescribedBy\" } }, ngImport: i0, template: '', isInline: true, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasPanel, decorators: [{\n type: Component,\n args: [{ selector: 'ngb-offcanvas-panel', template: '', encapsulation: ViewEncapsulation.None, host: {\n '[class]': '\"offcanvas offcanvas-\" + position + (panelClass ? \" \" + panelClass : \"\")',\n 'role': 'dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[attr.aria-describedby]': 'ariaDescribedBy',\n } }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { animation: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], panelClass: [{\n type: Input\n }], position: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }] } });\n\n/**\n * A reference to the currently opened (active) offcanvas.\n *\n * Instances of this class can be injected into your component passed as offcanvas content.\n * So you can `.close()` or `.dismiss()` the offcanvas window from your component.\n *\n * @since 12.1.0\n */\nclass NgbActiveOffcanvas {\n /**\n * Closes the offcanvas with an optional `result` value.\n *\n * The `NgbOffcanvasRef.result` promise will be resolved with the provided value.\n */\n close(result) { }\n /**\n * Dismisses the offcanvas with an optional `reason` value.\n *\n * The `NgbOffcanvasRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) { }\n}\n/**\n * A reference to the newly opened offcanvas returned by the `NgbOffcanvas.open()` method.\n *\n * @since 12.1.0\n */\nclass NgbOffcanvasRef {\n constructor(_panelCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._panelCmptRef = _panelCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n this._closed = new Subject();\n this._dismissed = new Subject();\n this._hidden = new Subject();\n _panelCmptRef.instance.dismissEvent.subscribe((reason) => { this.dismiss(reason); });\n if (_backdropCmptRef) {\n _backdropCmptRef.instance.dismissEvent.subscribe((reason) => { this.dismiss(reason); });\n }\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => { });\n }\n /**\n * The instance of a component used for the offcanvas content.\n *\n * When a `TemplateRef` is used as the content or when the offcanvas is closed, will return `undefined`.\n */\n get componentInstance() {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * The observable that emits when the offcanvas is closed via the `.close()` method.\n *\n * It will emit the result passed to the `.close()` method.\n */\n get closed() { return this._closed.asObservable().pipe(takeUntil(this._hidden)); }\n /**\n * The observable that emits when the offcanvas is dismissed via the `.dismiss()` method.\n *\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n * reasons like backdrop click or ESC key press.\n */\n get dismissed() { return this._dismissed.asObservable().pipe(takeUntil(this._hidden)); }\n /**\n * The observable that emits when both offcanvas window and backdrop are closed and animations were finished.\n * At this point offcanvas and backdrop elements will be removed from the DOM tree.\n *\n * This observable will be completed after emitting.\n */\n get hidden() { return this._hidden.asObservable(); }\n /**\n * The observable that emits when offcanvas is fully visible and animation was finished.\n * The offcanvas DOM element is always available synchronously after calling 'offcanvas.open()' service.\n *\n * This observable will be completed after emitting.\n * It will not emit, if offcanvas is closed before open animation is finished.\n */\n get shown() { return this._panelCmptRef.instance.shown.asObservable(); }\n /**\n * Closes the offcanvas with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) {\n if (this._panelCmptRef) {\n this._closed.next(result);\n this._resolve(result);\n this._removeOffcanvasElements();\n }\n }\n _dismiss(reason) {\n this._dismissed.next(reason);\n this._reject(reason);\n this._removeOffcanvasElements();\n }\n /**\n * Dismisses the offcanvas with an optional `reason` value.\n *\n * The `NgbOffcanvasRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {\n if (this._panelCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n const dismiss = this._beforeDismiss();\n if (isPromise(dismiss)) {\n dismiss.then(result => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => { });\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n _removeOffcanvasElements() {\n const panelTransition$ = this._panelCmptRef.instance.hide();\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n // hiding panel\n panelTransition$.subscribe(() => {\n const { nativeElement } = this._panelCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._panelCmptRef.destroy();\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._panelCmptRef = null;\n this._contentRef = null;\n });\n // hiding backdrop\n backdropTransition$.subscribe(() => {\n if (this._backdropCmptRef) {\n const { nativeElement } = this._backdropCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._backdropCmptRef.destroy();\n this._backdropCmptRef = null;\n }\n });\n // all done\n zip(panelTransition$, backdropTransition$).subscribe(() => {\n this._hidden.next();\n this._hidden.complete();\n });\n }\n}\n\n/* eslint-disable deprecation/deprecation */\nclass NgbOffcanvasStack {\n constructor(_applicationRef, _injector, _document, _scrollBar, _ngZone) {\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._ngZone = _ngZone;\n this._activePanelCmptHasChanged = new Subject();\n this._scrollBarRestoreFn = null;\n this._backdropAttributes = ['animation', 'backdropClass'];\n this._panelAttributes = ['animation', 'ariaDescribedBy', 'ariaLabelledBy', 'keyboard', 'panelClass', 'position'];\n this._activeInstance = new EventEmitter();\n // Trap focus on active PanelCmpt\n this._activePanelCmptHasChanged.subscribe(() => {\n if (this._panelCmpt) {\n ngbFocusTrap(this._ngZone, this._panelCmpt.location.nativeElement, this._activePanelCmptHasChanged);\n }\n });\n }\n _restoreScrollBar() {\n const scrollBarRestoreFn = this._scrollBarRestoreFn;\n if (scrollBarRestoreFn) {\n this._scrollBarRestoreFn = null;\n scrollBarRestoreFn();\n }\n }\n _hideScrollBar() {\n if (!this._scrollBarRestoreFn) {\n this._scrollBarRestoreFn = this._scrollBar.hide();\n }\n }\n open(moduleCFR, contentInjector, content, options) {\n const containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ?\n this._document.querySelector(options.container) :\n this._document.body;\n if (!containerEl) {\n throw new Error(`The specified offcanvas container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n if (!options.scroll) {\n this._hideScrollBar();\n }\n const activeOffcanvas = new NgbActiveOffcanvas();\n const contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeOffcanvas);\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : undefined;\n let panelCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n let ngbOffcanvasRef = new NgbOffcanvasRef(panelCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerOffcanvasRef(ngbOffcanvasRef);\n this._registerPanelCmpt(panelCmptRef);\n ngbOffcanvasRef.hidden.pipe(finalize(() => this._restoreScrollBar())).subscribe();\n activeOffcanvas.close = (result) => { ngbOffcanvasRef.close(result); };\n activeOffcanvas.dismiss = (reason) => { ngbOffcanvasRef.dismiss(reason); };\n this._applyPanelOptions(panelCmptRef.instance, options);\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n panelCmptRef.changeDetectorRef.detectChanges();\n return ngbOffcanvasRef;\n }\n get activeInstance() { return this._activeInstance; }\n dismiss(reason) { this._offcanvasRef?.dismiss(reason); }\n hasOpenOffcanvas() { return !!this._offcanvasRef; }\n _attachBackdrop(moduleCFR, containerEl) {\n let backdropFactory = moduleCFR.resolveComponentFactory(NgbOffcanvasBackdrop);\n let backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n _attachWindowComponent(moduleCFR, containerEl, contentRef) {\n let panelFactory = moduleCFR.resolveComponentFactory(NgbOffcanvasPanel);\n let panelCmptRef = panelFactory.create(this._injector, contentRef.nodes);\n this._applicationRef.attachView(panelCmptRef.hostView);\n containerEl.appendChild(panelCmptRef.location.nativeElement);\n return panelCmptRef;\n }\n _applyPanelOptions(windowInstance, options) {\n this._panelAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n _applyBackdropOptions(backdropInstance, options) {\n this._backdropAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n }\n _getContentRef(moduleCFR, contentInjector, content, activeOffcanvas) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeOffcanvas);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(moduleCFR, contentInjector, content, activeOffcanvas);\n }\n }\n _createFromTemplateRef(content, activeOffcanvas) {\n const context = {\n $implicit: activeOffcanvas,\n close(result) { activeOffcanvas.close(result); },\n dismiss(reason) { activeOffcanvas.dismiss(reason); }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n _createFromString(content) {\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n _createFromComponent(moduleCFR, contentInjector, content, context) {\n const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n const offcanvasContentInjector = Injector.create({ providers: [{ provide: NgbActiveOffcanvas, useValue: context }], parent: contentInjector });\n const componentRef = contentCmptFactory.create(offcanvasContentInjector);\n const componentNativeEl = componentRef.location.nativeElement;\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n _registerOffcanvasRef(ngbOffcanvasRef) {\n const unregisterOffcanvasRef = () => {\n this._offcanvasRef = undefined;\n this._activeInstance.emit(this._offcanvasRef);\n };\n this._offcanvasRef = ngbOffcanvasRef;\n this._activeInstance.emit(this._offcanvasRef);\n ngbOffcanvasRef.result.then(unregisterOffcanvasRef, unregisterOffcanvasRef);\n }\n _registerPanelCmpt(ngbPanelCmpt) {\n this._panelCmpt = ngbPanelCmpt;\n this._activePanelCmptHasChanged.next();\n ngbPanelCmpt.onDestroy(() => {\n this._panelCmpt = undefined;\n this._activePanelCmptHasChanged.next();\n });\n }\n}\nNgbOffcanvasStack.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasStack, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: DOCUMENT }, { token: ScrollBar }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbOffcanvasStack.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasStack, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasStack, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: i0.NgZone }]; } });\n\n/**\n * A configuration service for the [`NgbOffcanvas`](#/components/offcanvas/api#NgbOffcanvas) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all offcanvases used in the application.\n *\n * @since 12.1.0\n */\nclass NgbOffcanvasConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.backdrop = true;\n this.keyboard = true;\n this.position = 'start';\n this.scroll = false;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbOffcanvasConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasConfig, deps: [{ token: NgbConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbOffcanvasConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasConfig, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: NgbConfig }]; } });\n\n/* eslint-disable deprecation/deprecation */\n/**\n * A service for opening an offcanvas.\n *\n * Creating an offcanvas is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n *\n * @since 12.1.0\n */\nclass NgbOffcanvas {\n constructor(_moduleCFR, _injector, _offcanvasStack, _config) {\n this._moduleCFR = _moduleCFR;\n this._injector = _injector;\n this._offcanvasStack = _offcanvasStack;\n this._config = _config;\n }\n /**\n * Opens a new offcanvas panel with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveOffcanvas` class. You can then\n * use `NgbActiveOffcanvas` methods to close / dismiss offcanvas from \"inside\" of your component.\n *\n * Also see the [`NgbOffcanvasOptions`](#/components/offcanvas/api#NgbOffcanvasOptions) for the list of supported\n * options.\n */\n open(content, options = {}) {\n const combinedOptions = { ...this._config, animation: this._config.animation, ...options };\n return this._offcanvasStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n }\n /**\n * Returns an observable that holds the active offcanvas instance.\n */\n get activeInstance() { return this._offcanvasStack.activeInstance; }\n /**\n * Dismisses the currently displayed offcanvas with the supplied reason.\n */\n dismiss(reason) { this._offcanvasStack.dismiss(reason); }\n /**\n * Indicates if there is currently an open offcanvas in the application.\n */\n hasOpenOffcanvas() { return this._offcanvasStack.hasOpenOffcanvas(); }\n}\nNgbOffcanvas.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvas, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: NgbOffcanvasStack }, { token: NgbOffcanvasConfig }], target: i0.ɵɵFactoryTarget.Injectable });\nNgbOffcanvas.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvas, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvas, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: NgbOffcanvasStack }, { type: NgbOffcanvasConfig }]; } });\n\nclass NgbOffcanvasModule {\n}\nNgbOffcanvasModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbOffcanvasModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasModule, declarations: [NgbOffcanvasPanel, NgbOffcanvasBackdrop] });\nNgbOffcanvasModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbOffcanvasModule, decorators: [{\n type: NgModule,\n args: [{ declarations: [NgbOffcanvasPanel, NgbOffcanvasBackdrop] }]\n }] });\n\nconst NGB_MODULES = [\n NgbAccordionModule, NgbAlertModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule,\n NgbModalModule, NgbNavModule, NgbOffcanvasModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\n NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule\n];\nclass NgbModule {\n}\nNgbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModule, imports: [NgbAccordionModule, NgbAlertModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule,\n NgbModalModule, NgbNavModule, NgbOffcanvasModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\n NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule], exports: [NgbAccordionModule, NgbAlertModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule,\n NgbModalModule, NgbNavModule, NgbOffcanvasModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\n NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule] });\nNgbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModule, imports: [NGB_MODULES, NgbAccordionModule, NgbAlertModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule,\n NgbModalModule, NgbNavModule, NgbOffcanvasModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\n NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.1\", ngImport: i0, type: NgbModule, decorators: [{\n type: NgModule,\n args: [{ imports: NGB_MODULES, exports: NGB_MODULES }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ModalDismissReasons, NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbActiveModal, NgbActiveOffcanvas, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbCalendar, NgbCalendarBuddhist, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCollapse, NgbCollapseConfig, NgbCollapseModule, NgbConfig, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nDefault, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavLink, NgbNavModule, NgbNavOutlet, NgbNavPane, NgbNavbar, NgbOffcanvas, NgbOffcanvasConfig, NgbOffcanvasModule, NgbOffcanvasRef, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPages, NgbPaginationPrevious, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbRating, NgbRatingConfig, NgbRatingModule, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, OffcanvasDismissReasons };\n","import { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function endWith(...values) {\n return (source) => concat(source, of(...values));\n}\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
    {{Centers}}
    \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
    {{Category}}
    \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
    0\">\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \"Center-logo\"\r\n
    \r\n
    \r\n

    \r\n {{item.serviceName}}\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

    {{showCount< response.length?showCount:response.length }}\r\n {{servicesof}} {{response.length}}

    \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 { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ServicesResponse } from 'src/app/models/ServicesResponse';\r\nimport { Service } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { RouteApiService } from 'src/app/services/route-api.service';\r\nimport { ServiceStructureTagsList } from 'src/app/models/ServiceStructureTagsList';\r\nimport { CenterList } from 'src/app/models/CenterList';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\n\r\n\r\nenum SERVICESECTOR {\r\n Personal = 1,\r\n Business = 2\r\n}\r\n\r\n@Component({\r\n selector: 'app-products',\r\n templateUrl: './products.component.html',\r\n styleUrls: ['./products.component.css']\r\n})\r\n\r\n\r\nexport class ProductsComponent implements OnInit {\r\n public p: number = 1;\r\n showCount = 12;\r\n searchText: any;\r\n more: string = '';\r\n PageTitle: string = '';\r\n home: string = '';\r\n all: string = '';\r\n Individuals: string = '';\r\n Institutions: string = '';\r\n Centers: string = '';\r\n ServiceType: string = '';\r\n Category: string = '';\r\n destroy$: Subject = new Subject();\r\n tags: ServiceStructureTagsList[] = [];\r\n tagsNumber: number[] = [];\r\n tagsStaus: boolean[] = [];\r\n selectedTags: string[] = [];\r\n centerStatus: boolean[] = [];\r\n selectedCenter: number[] = [];\r\n response: Service[] = [];\r\n responseService: Service[] = [];\r\n selectedResponse: Service[] = [];\r\n centers: CenterList[] = [];\r\n tab = 'single';\r\n filterAll = true;\r\n sectorAll = false;\r\n tagsAll = true;\r\n subTitle = '';\r\n centerId = -1;\r\n servicesof: string;\r\n EtecFullName = 'هيئة تقويم التعليم والتدريب';\r\n filter = { qiyas: true, Ncaaa: true, Ncsee: true, Masar: true, NCMAA: true, etec: true, nacademy: true};\r\n sectorFilter = { personal: true, business: true };\r\n Products: Service[] = this.response;\r\n _lang = '';\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiRersources.clearResource();\r\n }\r\n\r\n constructor(private apiServices: ApiService, private apiRoute: RouteApiService, private router: Router, private actRoute: ActivatedRoute\r\n , private Title: Title, private apiRersources: ResourcesService, private loading: LoadingService) {\r\n\r\n this.actRoute.params.subscribe(async params => {\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n \r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n\r\n this.tab = params[\"id\"] == null ? '' : params[\"id\"]\r\n if (this.tab === 'indviduals') {\r\n this.sectorFilter.business = false;\r\n this.sectorFilter.personal = true;\r\n }\r\n else if (this.tab === 'corporate') {\r\n this.sectorFilter.personal = false;\r\n this.sectorFilter.business = true;\r\n }\r\n else {\r\n this.sectorAll = true\r\n this.sectorFilter.personal = true;\r\n this.sectorFilter.business = true;\r\n }\r\n\r\n this.apiServices.getList('centers').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data) => {\r\n this.centers = data; //.filter(\r\n //(x: CenterList) => x.ItemId != 1);\r\n //console.log(this.centers);\r\n this.centers.forEach(element => {\r\n this.centerStatus.push(false);\r\n });\r\n this.apiServices.getListTopN('Services', 100, false, 'ServiceSectorId', this.sectorFilter.personal ? SERVICESECTOR.Personal : SERVICESECTOR.Business).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicesResponse[]) => {\r\n data.forEach(element => {\r\n var obj: Service = {\r\n GUID: element.ItemFields.GUID,\r\n ServiceCode: element.ItemFields?.ServiceCode,\r\n serviceTitle: element.ItemFields.Title,\r\n serviceId: element.ItemId,\r\n serviceName: element.ItemFields.ServiceName,\r\n ServiceCenterId: element.ItemFields.ServiceCenterId?.LookupId,\r\n ServiceCenterName: this.centers.find(elm => elm.ItemId == element.ItemFields?.ServiceCenterId?.LookupId)?.ItemFields.CenterShortName,\r\n ServiceCenterIcon: this.centers.find(elm => elm.ItemId == element.ItemFields?.ServiceCenterId?.LookupId)?.ItemFields.CenterLogoIcon?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n ServiceDescription: element.ItemFields?.ServiceDescription?.replace(/<[^>]*>/g, ''),\r\n serviceIconUrl: './assets/img/icon/exam/GAT.svg',\r\n serviceLevel: 0,\r\n serviceVisitCount: element.ItemFields.VisitingCount ? element.ItemFields.VisitingCount : 0,\r\n serviceDetailsFileUrl: element.ItemFields?.ServiceDescription,\r\n serviceKeyword: '',\r\n serviceRegistrationLink: data[0]?.ItemFields?.DetailsButtonLink?.Url,\r\n serviceRegistrationTitle: data[0]?.ItemFields?.DetailsButtonLabel,\r\n serviceSectorId: element.ItemFields.ServiceSectorId.LookupId,\r\n serviceTagId: element.ItemFields.ServiceTagId?.LookupValue,\r\n isActive: element.ItemFields.IsActive1,\r\n ShowDetailsButton: element.ItemFields.ShowDetailsButton\r\n };\r\n if(!element.ItemFields?.IsHiddenFromServiceList){\r\n this.responseService.push(obj);\r\n }\r\n \r\n });\r\n this.filterChange();\r\n });\r\n }\r\n );\r\n\r\n\r\n\r\n });\r\n }\r\n\r\n /** Custom methods */\r\n filterChange() {\r\n this.tagsNumber = [];\r\n this.selectedTags = [];\r\n this.selectedCenter = [];\r\n this.response = [];\r\n this.tagsStaus.forEach((element, index) => {\r\n if (element === true) {\r\n this.selectedTags.push(this.tags[index].ItemFields.ServiceTagName);\r\n\r\n }\r\n this.tagsNumber.push(0);\r\n });\r\n\r\n this.filterAll = this.centerId == -1;\r\n if (this.sectorFilter.personal) {\r\n this.getServiceByType(SERVICESECTOR.Personal);\r\n }\r\n if (this.sectorFilter.business) {\r\n this.getServiceByType(SERVICESECTOR.Business);\r\n }\r\n\r\n if (this.sectorFilter.business && this.sectorFilter.personal) {\r\n this.sectorAll = true;\r\n }\r\n else {\r\n this.sectorAll = false;\r\n }\r\n\r\n\r\n // this.centerStatus.forEach((element) => {\r\n // if(!element){\r\n // this.filterAll = false;\r\n // }\r\n // });\r\n\r\n this.tagsAll = true;\r\n this.tagsStaus.forEach((element) => {\r\n if (!element) {\r\n this.tagsAll = false;\r\n }\r\n });\r\n }\r\n getCenter() {\r\n this.apiServices.getList('centers').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data) => {\r\n this.centers = data.filter(\r\n (x: CenterList) => x.ItemId != 1);\r\n\r\n this.centers.forEach(element => {\r\n this.centerStatus.push(false);\r\n });\r\n this.filterChange();\r\n }\r\n );\r\n\r\n }\r\n\r\n route(product: Service) {\r\n this.apiRoute.setService(product);\r\n return \"/service/\" + product.ServiceCode\r\n }\r\n\r\n putVisitNo(itemId: string) {\r\n this.apiServices.putVisitingCount('Services', itemId).subscribe();\r\n }\r\n\r\n navigateUrl(product: Service) {\r\n\r\n //this.router.navigate(['mediacenter'])\r\n this.putVisitNo(product.serviceId.toString());\r\n this.router.navigateByUrl('/service/' + product.ServiceCode);\r\n\r\n }\r\n\r\n getStructureTags() {\r\n this.apiServices.getList('ServiceStructureTags').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceStructureTagsList[]) => {\r\n this.tags = data;\r\n data.forEach(element => {\r\n this.tagsStaus.push(true);\r\n this.selectedTags.push(element.ItemFields.ServiceTagName);\r\n this.tagsNumber.push(0);\r\n });\r\n }\r\n );\r\n }\r\n\r\n private getServiceByType(serviceSectorId: number) {\r\n //console.log(serviceSectorId);\r\n this.tagsStaus.forEach((element, index) => {\r\n if (element === true) {\r\n this.selectedTags.push(this.tags[index].ItemFields.ServiceTagName);\r\n }\r\n });\r\n\r\n\r\n //this.responseService.forEach(val => this.response.push(Object.assign({}, val)));\r\n\r\n this.responseService.forEach(obj => {\r\n if (!this.filterAll && this.centerId == (obj.ServiceCenterId)) {\r\n this.response.push(obj);\r\n }\r\n if (this.filterAll) {\r\n this.response.push(obj);\r\n }\r\n });\r\n\r\n //console.log(this.response);\r\n //Sort Array by visiting count\r\n this.response = this.response.sort((a, b) => b.serviceVisitCount - a.serviceVisitCount);\r\n //\r\n // this.response = this.response.filter(\r\n // x =>\r\n // (x.ServiceCenterId === 2 && this.filter.qiyas) ||\r\n // (x.ServiceCenterId === 3 && this.filter.Ncaaa) ||\r\n // (x.ServiceCenterId === 5 && this.filter.Ncsee) ||\r\n // (x.ServiceCenterId === 4 && this.filter.Masar) ||\r\n // (x.ServiceCenterId === 6 && this.filter.NCMAA) ||\r\n // (x.ServiceCenterId === 7 && this.filter.nacademy) ||\r\n // (x.ServiceCenterId === 1 && this.filter.etec)\r\n // );\r\n\r\n\r\n this.response.forEach(element => {\r\n this.centers.forEach((e, index) => {\r\n if (e.ItemId === element.ServiceCenterId) {\r\n this.centerStatus[index] = true;\r\n }\r\n });\r\n });\r\n\r\n //number count \r\n this.response.forEach(element => {\r\n var index = this.tags.findIndex(x => x.ItemFields.ServiceTagName === element.serviceTagId!);\r\n if (index != -1) {\r\n this.tagsNumber[index]++;\r\n }\r\n });\r\n\r\n this.response = this.response.filter(el => {\r\n //console.log('hi' + this.selectedTags.indexOf(el.serviceTagId!));\r\n return this.selectedTags.indexOf(el.serviceTagId!) != -1;\r\n });\r\n this.showCount = this.response.length > 12 ? 12 : this.response.length;\r\n }\r\n\r\n changeCategry() {\r\n this.sectorFilter.personal = this.sectorAll;\r\n this.sectorFilter.business = this.sectorAll;\r\n this.filterChange();\r\n }\r\n\r\n allCategoryToggle() {\r\n if (this.sectorFilter.business && this.sectorFilter.personal) {\r\n this.sectorAll = true;\r\n }\r\n else {\r\n this.sectorAll = false;\r\n }\r\n }\r\n\r\n changeCenter() {\r\n this.filterAll = true;\r\n this.centerStatus.forEach((element, index) => {\r\n if (this.centerStatus[index]) {\r\n this.centerStatus[index] = this.filterAll;\r\n }\r\n\r\n });\r\n this.centerId = -1;\r\n\r\n this.filterChange();\r\n }\r\n\r\n changeTage() {\r\n this.tagsStaus.forEach((element, index) => {\r\n this.tagsStaus[index] = this.tagsAll;\r\n });\r\n this.filterChange();\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n\r\n this.getStructureTags();\r\n this.more = await this.apiRersources.getByKey(\"more\");\r\n this.home = await this.apiRersources.getByKey(\"home\");\r\n this.all = await this.apiRersources.getByKey(\"all\");\r\n this.servicesof = await this.apiRersources.getByKey(\"servicesof\");\r\n\r\n this.Individuals = await this.apiRersources.getByKey(\"Individuals\");\r\n this.Institutions = await this.apiRersources.getByKey(\"Institutions\");\r\n this.Centers = await this.apiRersources.getByKey(\"Centers\");\r\n this.ServiceType = await this.apiRersources.getByKey(\"ServiceType\");\r\n this.Category = await this.apiRersources.getByKey(\"Category\");\r\n\r\n this.apiServices.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (this.tab === 'indviduals') {\r\n if (element.ItemFields.Title.toLowerCase() === 'single services') {\r\n\r\n this.PageTitle = element.ItemFields.MenuName;\r\n\r\n this.Title.setTitle(this.EtecFullName + \" - \" + this.PageTitle);\r\n }\r\n }\r\n if (this.tab === 'corporate') {\r\n if (element.ItemFields.Title.toLowerCase() === 'corporate services') {\r\n\r\n this.PageTitle = element.ItemFields.MenuName;\r\n\r\n this.Title.setTitle(this.EtecFullName + \" - \" + this.PageTitle);\r\n }\r\n }\r\n\r\n });\r\n }\r\n );\r\n }\r\n}\r\n","
    0\">\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
    1\">\r\n
    \r\n
    \r\n
    \r\n
    {{i+1}}
    \r\n
    \r\n

    \r\n

    \r\n
    \r\n
    \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CenterBusinessDetailsList } from 'src/app/models/CenterBusinessDetailsList';\r\n \r\nimport { ApiService } from 'src/app/services/api.service';\r\n\r\n@Component({\r\n selector: 'app-center-details',\r\n templateUrl: './center-details.component.html',\r\n styleUrls: ['./center-details.component.css']\r\n})\r\nexport class CenterDetailsComponent implements OnInit {\r\n\r\n @Input() businssType : number; \r\n @Input() centerId : number; \r\n @Input() typeName : string; \r\n\r\n cId : number;\r\n ResponsbilityETEC: CenterBusinessDetailsList[] =[];\r\n destroy$: Subject = new Subject();\r\n \r\n constructor(private centerService: ApiService) { }\r\n\r\n /** Custom methods */\r\n getCenterBusiness(){\r\n this.centerService.getListWithTwoConditionsTopN('CenterBusinessDetails',100,false,'CenterId',this.cId,'CBDetailTypeId', this.businssType, 'Eq','And','Eq' ).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: CenterBusinessDetailsList[]) => {\r\n this.ResponsbilityETEC = data.reverse();\r\n }\r\n );\r\n }\r\n\r\n /** Component events */\r\n ngOnInit(): void {\r\n \r\n }\r\n\r\n ngOnChanges() {\r\n this.cId = this.centerId;\r\n this.getCenterBusiness();\r\n }\r\n \r\n \r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n \r\n}\r\n","
    \r\n
    \r\n

    \r\n {{ cenetrLeader?.centerLeaderCurriculumVite }}\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 { Component, Input, OnInit } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CenterBusinessDetailsList } from 'src/app/models/CenterBusinessDetailsList';\r\nimport { CenterBusinessDetailTypeList } from 'src/app/models/CenterBusinessDetailTypeList';\r\nimport { Center, CenterLeader } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-about-center',\r\n templateUrl: './about-center.component.html',\r\n styleUrls: ['./about-center.component.css']\r\n})\r\nexport class AboutCenterComponent implements OnInit {\r\n @Input() centerId!: number;\r\n @Input() center: Center;\r\n @Input() cenetrLeader!: CenterLeader;\r\n isFound : boolean = false;\r\n\r\n ResponsbilityETEC: CenterBusinessDetailsList[] =[];\r\n CenterBDetailTypeList : CenterBusinessDetailTypeList[] =[];\r\n dummy: CenterBusinessDetailTypeList[] =[];\r\n destroy$: Subject = new Subject();\r\n PageTitle : string = '';\r\n\r\n\r\n \r\n constructor(private centerService: ApiService,private Title : Title) {\r\n this.getCenterBusinessDetailTypes(); \r\n }\r\n\r\n /** Custom methods */\r\n getCenterBusinessDetailTypes(){\r\n this.centerService.getList('CenterBusinessDetailTypes').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: CenterBusinessDetailTypeList[]) => {\r\n this.CenterBDetailTypeList = data.sort((a,b) => a.ItemFields.TypeOrder - b.ItemFields.TypeOrder);\r\n //console.log(this.CenterBDetailTypeList);\r\n }\r\n ); \r\n }\r\n\r\n /** Component events */\r\n ngOnInit(): void {\r\n }\r\n \r\n ngOnChanges() { \r\n this.Title.setTitle(this.center?.centerName);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {{cenetrLeader?.centerLeaderPrefixId}}

    \r\n

    \r\n {{cenetrLeader?.centerLeaderName}}\r\n

    \r\n
    \r\n {{cenetrLeader?.centerLeaderPosition}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n\r\n
    \r\n
    \r\n Loading...\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {{ cenetrLeader?.centerLeaderCurriculumVite }}\r\n

    \r\n
    \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CenterLeader, Service } from 'src/app/models/ResponseModel';\r\n \r\n\r\n@Component({\r\n selector: 'app-center-leader',\r\n templateUrl: './center-leader.component.html',\r\n styleUrls: ['./center-leader.component.css']\r\n})\r\n\r\nexport class CenterLeaderComponent {\r\n @Input() centerId!: number;\r\n @Input() cenetrLeader!: CenterLeader;\r\n isFound : boolean = false;\r\n\r\n constructor() { \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

    {{noServices}}

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    0\">\r\n
      \r\n
    • \r\n \r\n {{item.ServiceCategory}}\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n
    0\">\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{item.serviceName}}\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

    {{showCount<\r\n findItems(cenetrservices,item2.ServiceCategoryId).length?showCount:findItems(cenetrservices,item2.ServiceCategoryId).length\r\n }} {{servicesof}} {{findItems(cenetrservices,item2.ServiceCategoryId).length}}

    \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 {{item.serviceName}}\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 { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Service } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { Subject } from 'rxjs';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { CenterList } from 'src/app/models/CenterList';\r\n\r\n@Component({\r\n selector: 'app-center-services',\r\n templateUrl: './center-services.component.html',\r\n styleUrls: ['./center-services.component.css']\r\n})\r\n\r\nexport class CenterServicesComponent implements OnInit {\r\n @Input() centerId: number;\r\n @Input() cenetrservices: Service[];\r\n @Input() cenetrservicesCategory: Service[];\r\n @Input() serviceCengerIcon: string;\r\n @Input() ServiceCategoryTag: string;\r\n //@Input() dynamicUrl! : string;\r\n @Output() dynamicUrl = new EventEmitter();\r\n searchText: any = '';\r\n more: string = '';\r\n search: string = '';\r\n noServices: string = '';\r\n centerCode = '';\r\n showCount = 12;\r\n servicesof = '';\r\n destroy$: Subject = new Subject();\r\n cid: number;\r\n _lang = '';\r\n\r\n\r\n constructor(private apiResources: ResourcesService, private apiServices: ApiService) {\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n /** Custom methods */\r\n route(product: Service) {\r\n\r\n //return \"/service/\" + product.GUID;\r\n return \"/service/\" + product.ServiceCode;\r\n }\r\n\r\n changeUrl(title: string){\r\n let url = `${this._lang}/${this.centerCode?.toLocaleLowerCase()}/services/${title}`;\r\n window.history.pushState(\"object or string\", \"Title\", `/${url}`);\r\n // let urlTemp = window.location.origin;\r\n // this.dynamicUrl.emit(urlTemp+'/'+url);\r\n this.getUrl();\r\n\r\n }\r\n\r\n getUrl(){\r\n this.dynamicUrl.emit(window.location.href);\r\n }\r\n findItems(people: any[], categoryid?: number): any[] {\r\n return people.filter(p => p.ServiceCategoryId == categoryid);\r\n }\r\n\r\n cateogry(categoryitems: any[]): any[] {\r\n let sortedcategoryitems = categoryitems.sort((a, b) => (a.ServiceCategoryId < b.ServiceCategoryId) ? -1 : ((b.ServiceCategoryId > a.ServiceCategoryId) ? 1 : 0))\r\n return sortedcategoryitems;\r\n }\r\n\r\n haveCateogry(categoryitems: Service[]): boolean {\r\n if (categoryitems.length > 1) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n\r\n\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.search = await this.apiResources.getByKey(\"search\");\r\n this.noServices = await this.apiResources.getByKey(\"noservices\");\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n }\r\n\r\n\r\n ngOnChanges() {\r\n this.cid = this.centerId;\r\n this.getCenterCode(this.cid);\r\n }\r\n\r\n getCenterCode(id: number) {\r\n this.apiServices.getListById('centers', id).subscribe(\r\n (res: CenterList) => {\r\n this.centerCode = res.ItemFields?.CenterCode;\r\n\r\n }\r\n )\r\n }\r\n\r\n}\r\n","
    \r\n \r\n \r\n \r\n
    \r\n {{all}}\r\n {{item?.Title}}\r\n
    \r\n
    ","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-combobox',\r\n templateUrl: './combobox.component.html',\r\n styleUrls: ['./combobox.component.css']\r\n})\r\n\r\nexport class ComboboxComponent implements OnInit, OnChanges {\r\n\r\n @Input() list: any[];\r\n @Input() outSideIndex :number;\r\n @Output() listChange = new EventEmitter();\r\n\r\n @Input() Title: string;\r\n @Output() Item: EventEmitter = new EventEmitter();\r\n // two way binding for input text\r\n inputItem = '';\r\n all ='';\r\n // enable or disable visiblility of dropdown\r\n listHidden = true;\r\n showError = false;\r\n selectedIndex = -1;\r\n\r\n // the list to be shown after filtering\r\n filteredList: any[] = [];\r\n\r\n constructor( private apiResources: ResourcesService) { \r\n \r\n }\r\n\r\n async ngOnInit() {\r\n this.all = await this.apiResources.getByKey(\"all\");\r\n this.filteredList = this.list;\r\n // this.selectedIndex = this.outSideIndex;\r\n // this.inputItem = this.all;\r\n }\r\n\r\n ngOnChanges() {\r\n //Write your code here\r\n this.filteredList = this.list;\r\n this.selectedIndex = this.outSideIndex;\r\n this.inputItem = '';\r\n } \r\n // modifies the filtered list as per input\r\n getFilteredList() {\r\n\r\n this.listHidden = false;\r\n // this.selectedIndex = 0;\r\n if (!this.listHidden && this.inputItem !== undefined && this.inputItem != this.all) {\r\n this.filteredList = this.list.filter((item) => item.Title.toLowerCase()\r\n .includes(this.inputItem.toLowerCase()));\r\n }\r\n }\r\n\r\n // select highlighted item when enter is pressed or any item that is clicked\r\n selectItem(ind : number) {\r\n\r\n if(ind == 0){\r\n this.inputItem = this.all;\r\n this.listHidden = true;\r\n this.selectedIndex = ind;\r\n this.Item.emit('0');\r\n }else{\r\n this.inputItem = this.filteredList[ind-1].Title;\r\n this.listHidden = true;\r\n this.selectedIndex = ind;\r\n this.Item.emit(this.inputItem);\r\n }\r\n \r\n\r\n }\r\n\r\n // navigate through the list of items\r\n onKeyPress(event: any) {\r\n\r\n if (!this.listHidden) {\r\n if (event.key === 'Escape') {\r\n this.selectedIndex = -1;\r\n this.toggleListDisplay(0);\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n\r\n this.toggleListDisplay(0);\r\n }\r\n if (event.key === 'ArrowDown') {\r\n\r\n this.listHidden = false;\r\n this.selectedIndex = (this.selectedIndex + 1) % this.filteredList.length;\r\n if (this.filteredList.length > 0 && !this.listHidden) {\r\n document.getElementsByTagName('list-item')[this.selectedIndex].scrollIntoView();\r\n }\r\n } else if (event.key === 'ArrowUp') {\r\n\r\n this.listHidden = false;\r\n if (this.selectedIndex <= 0) {\r\n this.selectedIndex = this.filteredList.length;\r\n }\r\n this.selectedIndex = (this.selectedIndex - 1) % this.filteredList.length;\r\n\r\n if (this.filteredList.length > 0 && !this.listHidden) {\r\n\r\n document.getElementsByTagName('list-item')[this.selectedIndex].scrollIntoView();\r\n }\r\n }\r\n } \r\n }\r\n\r\n // show or hide the dropdown list when input is focused or moves out of focus\r\n toggleListDisplay(sender: number) {\r\n console.log('hi');\r\n if (sender === 1) {\r\n // this.selectedIndex = -1;\r\n this.listHidden = false;\r\n this.getFilteredList();\r\n } else {\r\n // helps to select item by clicking\r\n setTimeout(() => {\r\n // this.selectItem(this.selectedIndex);\r\n this.listHidden = true;\r\n if (!this.list.includes(this.inputItem)) {\r\n this.showError = true;\r\n this.filteredList = this.list;\r\n } else {\r\n this.showError = false;\r\n }\r\n }, 250);\r\n }\r\n }\r\n\r\n}\r\n","\r\n\r\n
    \r\n
    \r\n
    {{accreditationCategory}}
    \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 {{item.OrganizationName}} \r\n

    \r\n {{item.OrganizationName}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {{OrganizationType}}\r\n

    \r\n

    \r\n {{item.OrgTypeName}}\r\n

    \r\n
    \r\n\r\n
    \r\n

    \r\n {{DateAccreditation}}\r\n

    \r\n

    \r\n {{item.AccFrom | date:\"MM YYYY\"}} - {{item.AccTo| date:\"MM YYYY\"}}\r\n\r\n

    \r\n
    \r\n\r\n
    \r\n

    \r\n {{Typeofaccreditation}}\r\n

    \r\n

    \r\n {{item.AccTypeName}}\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

    {{showCount<\r\n viewItemsinstitution.length?showCount:viewItemsinstitution?.length }} {{servicesof}}\r\n {{viewItemsinstitution?.length}}

    \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 {{item.OrganizationName}} \r\n

    \r\n {{item.OrganizationName}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {{ProgramName}}\r\n

    \r\n

    \r\n {{item.OrganizationProgramName}}\r\n

    \r\n
    \r\n\r\n
    \r\n

    \r\n {{DegreeName}}\r\n

    \r\n

    \r\n {{item.OrganizationDegreeProgramName}}\r\n

    \r\n
    \r\n\r\n
    \r\n

    \r\n {{DateAccreditation}}\r\n

    \r\n

    \r\n {{item.AccFrom | date:\"MM YYYY\"}} - {{item.AccTo| date:\"MM YYYY\"}}\r\n\r\n

    \r\n
    \r\n\r\n
    \r\n

    \r\n {{OrganizationType}}\r\n

    \r\n

    \r\n {{item.OrgTypeName}}\r\n

    \r\n
    \r\n\r\n
    \r\n

    \r\n {{Typeofaccreditation}}\r\n

    \r\n

    \r\n {{item.AccTypeName}}\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

    {{showCount<\r\n viewItemsprograms.length?showCount:viewItemsprograms.length }} {{servicesof}}\r\n {{viewItemsprograms.length}}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n","import { formatDate } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\n\r\nimport { Title } from '@angular/platform-browser';\r\nimport { map, Observable, startWith, Subject, takeUntil } from 'rxjs';\r\nimport { Accreditationresultslist } from 'src/app/models/accreditationresultslist';\r\nimport { Configurationlist } from 'src/app/models/configurationlist';\r\nimport { Organazationlist } from 'src/app/models/organazationlist';\r\n// import { ResourcesList } from 'src/app/models/ResourcesList';\r\nimport { Accreditationresults, Configuration, Organazation } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-accreditationresult',\r\n templateUrl: './accreditationresult.component.html',\r\n styleUrls: ['./accreditationresult.component.css']\r\n})\r\nexport class AccreditationresultComponent implements OnInit {\r\n\r\n Itemsinstitution: Accreditationresults[] = [];\r\n ItemsinstitutionDDL: Accreditationresults[] = [];\r\n viewItemsinstitution: Accreditationresults[] = [];\r\n @Input() centerId!: number;\r\n all: string ='';\r\n Itemsprograms: Accreditationresults[] = [];\r\n viewItemsprograms: Accreditationresults[] = [];\r\n Organazation: Organazation[] = [];\r\n TypeAccrediation: Organazation[] = [];\r\n allTitle : string = '';\r\n destroy$: Subject = new Subject();\r\n searchText: any = '';\r\n selectedValue: string;\r\n public p: number = 1;\r\n AccreditationresultsSearch: Accreditationresults[] = [];\r\n showCount = 6;\r\n cId: number;\r\n selectedItemCategory: string = '0';\r\n selectedItemAccType: string = '0';\r\n selectedItemProgram: string = '0';\r\n selectedItemAccrediation: string = '0';\r\n selectedIteminstitution: string = '0';\r\n selectedTabinstitution: boolean = false;\r\n selectedTabPrograms: boolean = false;\r\n LabelTitle: string = '';\r\n LabelTitle2: string = '';\r\n more: string = '';\r\n servicesof: string = '';\r\n EtecFullName = '';\r\n programs: string = '';\r\n Institutions: string = '';\r\n Typeofaccreditation: string = '';\r\n nameofuniversity: string = '';\r\n OrganizationType: string = '';\r\n DateAccreditation: string = '';\r\n TypeAccreditation: string = '';\r\n DegreeName: string = '';\r\n ProgramName: string = '';\r\n accreditationCategory: string = '';\r\n AccreditationResults: string = '';\r\n HaveProgramsItems: boolean;\r\n HaveInstitutionsItems: boolean;\r\n expired = '';\r\n full = '';\r\n ShowExpireAcrediationResult?: boolean = false;\r\n outsideIndex = 0;\r\n myControl = new FormControl('');\r\n filteredOptions: Observable;\r\n filterControl = new FormControl();\r\n\r\n myControl2 = new FormControl('');\r\n filteredOptions2: Observable;\r\n\r\n constructor(private apiServices: ApiService, private Title: Title, private apiResources: ResourcesService) {\r\n //this.FillinstitutionDDL();\r\n\r\n }\r\n\r\n ngOnInit() {\r\n this.FillTypeAccrediationDDL();\r\n \r\n // this.filteredOptions = this.myControl.valueChanges.pipe(\r\n // startWith(''),\r\n // map(value => value !=''? this._filter(value || '') : this.Organazation),\r\n // );\r\n\r\n // this.filteredOptions2 = this.myControl2.valueChanges.pipe(\r\n // startWith(''),\r\n // map(value => value !=''? this._filter2(value || '') : this.TypeAccrediation),\r\n // );\r\n \r\n \r\n }\r\n\r\n // displayFn(value: string): string {\r\n // let _lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n\r\n // return value == '0' ? (_lang == 'en'?'All': 'الكل') : value ;\r\n // }\r\n\r\n // private _filter(value: string): Organazation[] {\r\n // const filterValue = value.toLowerCase();\r\n // return this.Organazation.filter(option => option.Title.toLowerCase().includes(filterValue));\r\n // }\r\n\r\n // private _filter2(value: string): Organazation[] {\r\n \r\n // const filterValue = value.toLowerCase();\r\n // return this.TypeAccrediation.filter(option => option.Title.toLowerCase().includes(filterValue));\r\n // }\r\n\r\n\r\n updateTitle(title: string) {\r\n // console.log(title);\r\n this.Title.setTitle(this.EtecFullName + \" - \" + title);\r\n }\r\n\r\n getConfigurations() {\r\n\r\n this.apiServices.getList('Configurations').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Configurationlist[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.ConfigurationName == \"ShowExpireAcrediationResult\") {\r\n\r\n this.ShowExpireAcrediationResult = element.ItemFields.ShowExpireAcrediationResult;\r\n }\r\n }\r\n );\r\n }\r\n );\r\n }\r\n institutionAccrediation() {\r\n var now = new Date();\r\n const Today = new Date(now.getTime() + now.getTimezoneOffset() * 60000);\r\n\r\n //console.log(\"institutionAccrediation\"+this.centerId);\r\n this.selectedTabinstitution = true;\r\n this.selectedItemCategory = this.Institutions;\r\n this.HaveInstitutionsItems = false;\r\n //this.HaveProgramsItems = false;\r\n\r\n //console.log(\"test\");\r\n this.Itemsinstitution.splice(0, this.Itemsinstitution.length);\r\n this.viewItemsinstitution.splice(0, this.viewItemsinstitution.length);\r\n //getListWithTwoConditionsTopN('AccrediationsResults',100,false,'CenterId',this.cId,'Category', 'مؤسسي', 'Eq','And','Eq' )\r\n this.apiServices.getListWithTwoConditionsTopN('AccrediationsResults', 0, false, 'CenterId', this.cId, 'Category', 'مؤسسي', 'Eq', 'And', 'Eq').pipe(takeUntil(this.destroy$)).subscribe(\r\n //this.apiServices.getList('AcademicAccreditationResults').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Accreditationresultslist[]) => {\r\n data.forEach(element => {\r\n if (this.ShowExpireAcrediationResult) {\r\n var obj: Accreditationresults = {\r\n ID: element.ItemFields.ID,\r\n Title: '',\r\n ServiceName: '',\r\n CenterName: '',\r\n Link: element.ItemFields?.link?.Url,\r\n OrganizationName: element.ItemFields.OrganizationId.LookupValue,\r\n OrganizationProgramName: '',\r\n OrganizationDegreeProgramName: '',\r\n OrgTypeName: element.ItemFields.OrgTypeId.LookupValue,\r\n AccTypeName: (formatDate(element.ItemFields.AccTo, 'yyyy-MM-dd', 'en_US') < formatDate(Today, 'yyyy-MM-dd', 'en_US') ? 'منتهي' : element.ItemFields.AccTypeId.LookupValue),\r\n AccFrom: element.ItemFields.AccFrom,\r\n AccTo: element.ItemFields.AccTo,\r\n IsActive: element.ItemFields.IsActive1\r\n \r\n };\r\n \r\n this.Itemsinstitution.push(obj);\r\n this.viewItemsinstitution.push(obj);\r\n this.AccreditationresultsSearch = this.viewItemsinstitution;\r\n if (this.viewItemsinstitution.length > 0) {\r\n this.HaveInstitutionsItems = true;\r\n }\r\n } else {\r\n if (formatDate(element.ItemFields.AccTo, 'yyyy-MM-dd', 'en_US') >= formatDate(Today, 'yyyy-MM-dd', 'en_US')) {\r\n var obj: Accreditationresults = {\r\n ID: element.ItemFields.ID,\r\n Title: '',\r\n ServiceName: '',\r\n CenterName: '',\r\n Link: element.ItemFields?.link?.Url,\r\n OrganizationName: element.ItemFields.OrganizationId.LookupValue,\r\n OrganizationProgramName: '',\r\n OrganizationDegreeProgramName: '',\r\n OrgTypeName: element.ItemFields.OrgTypeId.LookupValue,\r\n AccTypeName: element.ItemFields.AccTypeId.LookupValue,\r\n AccFrom: element.ItemFields.AccFrom,\r\n AccTo: element.ItemFields.AccTo,\r\n IsActive: element.ItemFields.IsActive1\r\n };\r\n \r\n this.Itemsinstitution.push(obj);\r\n this.viewItemsinstitution.push(obj);\r\n this.AccreditationresultsSearch = this.viewItemsinstitution;\r\n if (this.viewItemsinstitution.length > 0) {\r\n this.HaveInstitutionsItems = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n );\r\n // this.FillinstitutionDDL();\r\n\r\n }\r\n SortItemsinstitution(categoryitems: any[]): any[] {\r\n let sortedcategoryitems = categoryitems.sort((a, b) => (a.OrganizationName < b.OrganizationName) ? -1 : ((b.OrganizationName > a.OrganizationName) ? 1 : 0));\r\n return sortedcategoryitems;\r\n }\r\n SortItemsprograms(categoryitems: any[]): any[] {\r\n let sortedcategoryitems = categoryitems.sort((a, b) => (a.OrganizationProgramName < b.OrganizationProgramName) ? -1 : ((b.OrganizationProgramName > a.OrganizationProgramName) ? 1 : 0));\r\n return sortedcategoryitems;\r\n }\r\n ProgramsAccrediation() {\r\n const Today = new Date();\r\n //console.log(\"ProgramsAccrediation\"+ this.cId);\r\n this.selectedTabinstitution = false;\r\n this.selectedTabPrograms = true;\r\n this.Itemsprograms.splice(0, this.Itemsprograms.length);\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n\r\n this.apiServices.getListWithTwoConditionsTopN('AccrediationsResults', 0, false, 'CenterId', this.cId, 'Category', 'برامجي', 'Eq', 'And', 'Eq').pipe(takeUntil(this.destroy$)).subscribe(\r\n\r\n (data: Accreditationresultslist[]) => {\r\n data.forEach(element => {\r\n if (this.ShowExpireAcrediationResult) {\r\n var obj: Accreditationresults = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n ServiceName: '',\r\n CenterName: element.ItemFields.CenterId.LookupValue,\r\n OrganizationName: element.ItemFields.OrganizationId.LookupValue,\r\n OrganizationProgramName: element.ItemFields.OrganizationProgramId.LookupValue,\r\n OrganizationDegreeProgramName: element.ItemFields.OrganizationDegreeProgramId.LookupValue,\r\n OrgTypeName: element.ItemFields.OrgTypeId.LookupValue,\r\n Link: element.ItemFields?.link?.Url,\r\n AccTypeName: (formatDate(element.ItemFields.AccTo, 'yyyy-MM-dd', 'en_US') < formatDate(Today, 'yyyy-MM-dd', 'en_US') ? this.expired : element.ItemFields.AccTypeId.LookupValue),\r\n AccFrom: element.ItemFields.AccFrom,\r\n AccTo: element.ItemFields.AccTo,\r\n IsActive: element.ItemFields.IsActive1\r\n };\r\n\r\n\r\n this.Itemsprograms.push(obj);\r\n this.viewItemsprograms.push(obj);\r\n this.AccreditationresultsSearch = this.viewItemsprograms;\r\n if (this.viewItemsprograms.length > 0) {\r\n this.HaveProgramsItems = true;\r\n }\r\n }\r\n else {\r\n if (formatDate(element.ItemFields.AccTo, 'yyyy-MM-dd', 'en_US') >= formatDate(Today, 'yyyy-MM-dd', 'en_US')) {\r\n var obj: Accreditationresults = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n ServiceName: '',\r\n CenterName: element.ItemFields.CenterId.LookupValue,\r\n OrganizationName: element.ItemFields.OrganizationId.LookupValue,\r\n OrganizationProgramName: element.ItemFields.OrganizationProgramId.LookupValue,\r\n OrganizationDegreeProgramName: element.ItemFields.OrganizationDegreeProgramId.LookupValue,\r\n OrgTypeName: element.ItemFields.OrgTypeId.LookupValue,\r\n AccTypeName: element.ItemFields.AccTypeId.LookupValue,\r\n AccFrom: element.ItemFields.AccFrom,\r\n Link: element.ItemFields?.link?.Url,\r\n AccTo: element.ItemFields.AccTo,\r\n IsActive: element.ItemFields.IsActive1\r\n };\r\n\r\n\r\n this.Itemsprograms.push(obj);\r\n this.viewItemsprograms.push(obj);\r\n this.AccreditationresultsSearch = this.viewItemsprograms;\r\n if (this.viewItemsprograms.length > 0) {\r\n this.HaveProgramsItems = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n );\r\n //console.log(\" this.viewItemsprograms\" + this.viewItemsprograms.length);\r\n }\r\n\r\n changeRatio() {\r\n if (this.selectedTabinstitution) {\r\n\r\n if (this.selectedItemAccrediation != '0' && this.selectedIteminstitution == '0') {\r\n\r\n this.viewItemsinstitution.splice(0, this.viewItemsinstitution.length);\r\n this.viewItemsinstitution = this.Itemsinstitution.filter(\r\n item => item.AccTypeName === this.selectedItemAccrediation\r\n );\r\n }\r\n if (this.selectedItemAccrediation == '0' && this.selectedIteminstitution != '0') {\r\n\r\n this.viewItemsinstitution.splice(0, this.Itemsinstitution.length);\r\n this.viewItemsinstitution = this.Itemsinstitution.filter(\r\n item => item.OrganizationName === this.selectedIteminstitution\r\n );\r\n }\r\n if (this.selectedItemAccrediation != '0' && this.selectedIteminstitution != '0') {\r\n this.viewItemsinstitution.splice(0, this.Itemsinstitution.length);\r\n this.viewItemsinstitution = this.Itemsinstitution.filter(\r\n item => item.AccTypeName === this.selectedItemAccrediation && item.OrganizationName == this.selectedIteminstitution\r\n );\r\n }\r\n\r\n if (this.selectedItemAccrediation == '0' && this.selectedIteminstitution == '0') {\r\n this.viewItemsinstitution.splice(0, this.Itemsinstitution.length);\r\n this.institutionAccrediation();\r\n this.ProgramsAccrediation();\r\n }\r\n }\r\n if (this.selectedTabPrograms) {\r\n\r\n\r\n if (this.selectedItemAccrediation != '0' && this.selectedIteminstitution == '0') {\r\n\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n this.viewItemsprograms = this.Itemsprograms.filter(\r\n item => item.OrganizationProgramName === this.selectedItemAccrediation\r\n );\r\n }\r\n if (this.selectedItemAccrediation == '0' && this.selectedIteminstitution != '0') {\r\n\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n this.viewItemsprograms = this.Itemsprograms.filter(\r\n item => item.OrganizationName === this.selectedIteminstitution\r\n );\r\n }\r\n if (this.selectedItemAccrediation != '0' && this.selectedIteminstitution != '0') {\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n this.viewItemsprograms = this.Itemsprograms.filter(\r\n item => item.OrganizationProgramName === this.selectedItemAccrediation && item.OrganizationName == this.selectedIteminstitution\r\n );\r\n }\r\n\r\n if (this.selectedItemAccrediation == '0' && this.selectedIteminstitution == '0') {\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n this.institutionAccrediation();\r\n this.ProgramsAccrediation();\r\n }\r\n }\r\n }\r\n ShowItems(category: any, org: any, AccType: any, Program: any) {\r\n if (category == this.Institutions) {\r\n //console.log(\"category\"+ category + \" -- \"+ this.Institutions );\r\n if (AccType != '0' && org == '0') {\r\n\r\n this.viewItemsinstitution.splice(0, this.viewItemsinstitution.length);\r\n this.viewItemsinstitution = this.Itemsinstitution.filter(\r\n item => item.AccTypeName === AccType\r\n );\r\n }\r\n if (AccType == '0' && org != '0') {\r\n\r\n this.viewItemsinstitution.splice(0, this.Itemsinstitution.length);\r\n this.viewItemsinstitution = this.Itemsinstitution.filter(\r\n item => item.OrganizationName === org\r\n );\r\n }\r\n if (AccType != '0' && org != '0') {\r\n this.viewItemsinstitution.splice(0, this.Itemsinstitution.length);\r\n this.viewItemsinstitution = this.Itemsinstitution.filter(\r\n item => item.AccTypeName === AccType && item.OrganizationName == org\r\n );\r\n }\r\n\r\n if (AccType == '0' && org == '0') {\r\n this.viewItemsinstitution.splice(0, this.Itemsinstitution.length);\r\n this.institutionAccrediation();\r\n //this.ProgramsAccrediation();\r\n }\r\n }\r\n if (category == this.programs) {\r\n\r\n //console.log(\"category\"+ category + \" -- \"+ this.programs );\r\n if (Program != '0' && org == '0') {\r\n\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n this.viewItemsprograms = this.Itemsprograms.filter(\r\n item => item.OrganizationProgramName === Program\r\n );\r\n }\r\n if (Program == '0' && org != '0') {\r\n\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n this.viewItemsprograms = this.Itemsprograms.filter(\r\n item => item.OrganizationName === org\r\n );\r\n }\r\n if (Program != '0' && org != '0') {\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n this.viewItemsprograms = this.Itemsprograms.filter(\r\n item => item.OrganizationProgramName === Program && item.OrganizationName == org\r\n );\r\n }\r\n\r\n if (Program == '0' && org == '0') {\r\n this.viewItemsprograms.splice(0, this.viewItemsprograms.length);\r\n //this.institutionAccrediation();\r\n this.ProgramsAccrediation();\r\n }\r\n }\r\n }\r\n async ngOnChanges() {\r\n this.getConfigurations();\r\n this.cId = this.centerId;\r\n this.institutionAccrediation();\r\n this.ProgramsAccrediation();\r\n this.FillinstitutionDDL();\r\n //this.FillTypeAccrediationDDL();\r\n\r\n this.selectedTabinstitution = true;\r\n this.selectedTabPrograms = false;\r\n\r\n\r\n this.selectedItemCategory = await this.apiResources.getByKey(\"Institutions\");\r\n\r\n\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n this.EtecFullName = await this.apiResources.getByKey(\"etecfullname\");\r\n this.programs = await this.apiResources.getByKey(\"programs\");\r\n this.Institutions = await this.apiResources.getByKey(\"Institutions\");\r\n this.Typeofaccreditation = await this.apiResources.getByKey(\"Typeofaccreditation\");\r\n this.nameofuniversity = await this.apiResources.getByKey(\"nameofuniversity\");\r\n this.Typeofaccreditation = await this.apiResources.getByKey(\"Typeofaccreditation\");\r\n if (this.cId == 4) {\r\n this.LabelTitle = await this.apiResources.getByKey(\"nameoffacility\");\r\n } else {\r\n this.LabelTitle = await this.apiResources.getByKey(\"nameofuniversity\");\r\n }\r\n\r\n this.LabelTitle2 = await this.apiResources.getByKey(\"Typeofaccreditation\");\r\n this.OrganizationType = await this.apiResources.getByKey(\"OrganizationType\");\r\n this.DateAccreditation = await this.apiResources.getByKey(\"DateAccreditation\");\r\n this.DegreeName = await this.apiResources.getByKey(\"DegreeName\");\r\n this.ProgramName = await this.apiResources.getByKey(\"ProgramName\");\r\n this.accreditationCategory = await this.apiResources.getByKey(\"accreditationCategory\");\r\n this.AccreditationResults = await this.apiResources.getByKey(\"AccreditationResults\");\r\n this.all = await this.apiResources.getByKey(\"all\");\r\n this.expired = await this.apiResources.getByKey(\"Expired\");\r\n this.full = await this.apiResources.getByKey(\"Full\");\r\n }\r\n onChangeOrganazation(event: any) {\r\n\r\n this.showCount = 6;\r\n this.selectedIteminstitution = event;//.target.value;\r\n //console.log(\"selectedItemCategory \"+this.selectedItemCategory+\" selectedIteminstitution\"+this.selectedIteminstitution+\" selectedItemAccType\"+this.selectedItemAccType+\" selectedItemProgram\"+this.selectedItemProgram);\r\n this.ShowItems(this.selectedItemCategory, this.selectedIteminstitution, this.selectedItemAccType, this.selectedItemProgram);\r\n // I want to do something here with the new selectedDevice, but what I\r\n // get here is always the last selection, not the one I just selected.\r\n }\r\n onChangeTypeAccrediation(event: any) {\r\n\r\n this.selectedItemAccType = event;//.target.value;\r\n this.selectedItemProgram = event;//.target.value;\r\n //console.log(\" hi :\" + this.selectedItemAccType);\r\n this.ShowItems(this.selectedItemCategory, this.selectedIteminstitution, this.selectedItemAccType, this.selectedItemProgram);\r\n // I want to do something here with the new selectedDevice, but what I\r\n // get here is always the last selection, not the one I just selected.\r\n }\r\n async onChangeCategory(event: any) {\r\n this.outsideIndex = this.selectedItemCategory == this.Institutions? 1:0;\r\n this.selectedItemCategory = event.target.value;\r\n this.showCount = 6;\r\n if (this.selectedItemCategory === this.Institutions) {\r\n this.selectedTabinstitution = true;\r\n this.selectedTabPrograms = false;\r\n //this.LabelTitle2 ='نوع الاعتماد';\r\n this.LabelTitle2 = await this.apiResources.getByKey(\"Typeofaccreditation\");\r\n this.FillTypeAccrediationDDL();\r\n this.institutionAccrediation();\r\n //this.FillinstitutionDDL();\r\n\r\n // this.myControl2.reset();\r\n // this.filteredOptions2 = this.myControl2.valueChanges.pipe(\r\n // startWith(''),\r\n // map(value => this.TypeAccrediation),\r\n // );\r\n }\r\n if (this.selectedItemCategory === this.programs) {\r\n this.selectedTabinstitution = false;\r\n this.selectedTabPrograms = true;\r\n //this.LabelTitle2 = 'اسم البرنامج' ;\r\n this.LabelTitle2 = await this.apiResources.getByKey(\"ProgramName\");\r\n this.FillProgramsDDL();\r\n //this.FillTypeAccrediationDDL();\r\n this.ProgramsAccrediation();\r\n this.FillinstitutionDDL();\r\n\r\n // this.myControl2.reset();\r\n // this.filteredOptions2 = this.myControl2.valueChanges.pipe(\r\n // startWith(''),\r\n // map(value => this.TypeAccrediation),\r\n // );\r\n\r\n }\r\n //this.institutionAccrediation();\r\n // I want to do something here with the new selectedDevice, but what I\r\n // get here is always the last selection, not the one I just selected.\r\n }\r\n\r\n\r\n FillinstitutionDDL() {\r\n this.Organazation.splice(0, this.Organazation.length);\r\n this.apiServices.getListTopN('AccOrganization', 0, false, 'CenterId', this.cId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Organazationlist[]) => {\r\n data.forEach(element => {\r\n var obj: Organazation = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n //name: element.ItemFields.name\r\n };\r\n //console.log(\"FillinstitutionDDL :\" +obj.Title);\r\n this.Organazation.push(obj);\r\n });\r\n }\r\n );\r\n }\r\n FillProgramsDDL() {\r\n //this.TypeAccrediation.splice(0, this.TypeAccrediation.length);\r\n this.TypeAccrediation =[];\r\n this.TypeAccrediation.length = 0;\r\n this.apiServices.getList('AccOrganizationPrograms').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Organazationlist[]) => {\r\n data.forEach(element => {\r\n var obj: Organazation = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n //name: element.ItemFields.name\r\n };\r\n\r\n this.TypeAccrediation.push(obj);\r\n });\r\n }\r\n );\r\n }\r\n\r\n FillTypeAccrediationDDL() {\r\n //this.TypeAccrediation.splice(0, this.TypeAccrediation.length);\r\n this.TypeAccrediation =[];\r\n this.TypeAccrediation.length = 0;\r\n this.apiServices.getList('AccreditationTypes').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Organazationlist[]) => {\r\n data.forEach(element => {\r\n var obj: Organazation = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n //name: element.ItemFields.name\r\n };\r\n\r\n this.TypeAccrediation.push(obj);\r\n \r\n });\r\n }\r\n );\r\n }\r\n\r\n /* async clickTabPrograms()\r\n { this.showCount = 5;\r\n //this.LabelTitle ='الجهة التعليمية';\r\n //this.LabelTitle2 = 'اسم البرنامج';\r\n this.LabelTitle = await this.apiResources.getByKey(\"nameofuniversity\");\r\n this.LabelTitle2 = await this.apiResources.getByKey(\"ProgramName\");\r\n this.selectedTabPrograms = true;\r\n this.selectedTabinstitution = false;\r\n this.FillinstitutionDDL();\r\n this.FillProgramsDDL();\r\n }\r\n async clickTabinstitution()\r\n { \r\n this.showCount = 5;\r\n //this.LabelTitle = 'الجهة التعليمية';\r\n //this.LabelTitle2 = 'نوع الاعتماد';\r\n this.LabelTitle = await this.apiResources.getByKey(\"nameofuniversity\");\r\n this.LabelTitle2 = await this.apiResources.getByKey(\"Typeofaccreditation\");\r\n this.selectedTabPrograms = false;\r\n this.selectedTabinstitution = true;\r\n this.FillinstitutionDDL();\r\n this. FillTypeAccrediationDDL();\r\n this.institutionAccrediation();\r\n }*/\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, Subject, takeUntil, throwIfEmpty } from 'rxjs';\r\nimport { CenterLeaderList } from 'src/app/models/CenterLeaderList';\r\n \r\nimport { Center, CenterLeader, MenuResponse } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n \r\n\r\n@Component({\r\n selector: 'app-centers',\r\n templateUrl: './centers.component.html',\r\n styleUrls: ['./centers.component.css']\r\n})\r\nexport class CentersComponent implements OnInit {\r\n centerId!: number;\r\n center!: Center;\r\n centerLeader!: CenterLeader;\r\n aboutcenter ='';\r\n ceo = '';\r\n\r\n destroy$: Subject = new Subject();\r\n\r\n\r\n constructor(private centerService: ApiService, private actRoute: ActivatedRoute, private apiResources: ResourcesService) {\r\n this.centerId = this.actRoute.snapshot.params['id'];\r\n actRoute.params.subscribe(params =>\r\n this.centerId = params[\"id\"]);\r\n\r\n // this.centerService.getList('centers').pipe(takeUntil(this.destroy$)).subscribe(\r\n // (data: CenterList[]) => {\r\n // data.forEach(element => {\r\n // // console.log(element.ItemId + ' ' + this.centerId );\r\n // if (element.ItemId == this.centerId) {\r\n // var obj: Center = {\r\n // centerId: element.ItemId,\r\n // centerName: element.ItemFields.CenterName,\r\n // centerDescription: element.ItemFields.CenterDescription?.toString(),\r\n // centerVision: element.ItemFields.CenterVision?.toString(),\r\n // centerVisionIcon: '',\r\n // centerMission: element.ItemFields.CenterMission?.toString(),\r\n // centerMissionIcon: '',\r\n // centerOrgnizationalStructureUrl: '',\r\n // centerMainImageCoverUrl: '',\r\n // centerParenetId: -1,\r\n // isActive: element.ItemFields.IsActive1\r\n // };\r\n // this.center = obj;\r\n // //console.log(data);\r\n // }\r\n // });\r\n\r\n\r\n // }\r\n // );\r\n\r\n // this.centerService.getList('centersleader').pipe(takeUntil(this.destroy$)).subscribe(\r\n // (data: CenterLeaderList[]) => {\r\n // data.forEach(element => {\r\n // if (element.ItemFields.CenterId.LookupId == this.centerId) {\r\n // var obj: CenterLeader = {\r\n // centerLeaderId: element.ItemId,\r\n // centerLeaderPosition: element.ItemFields.CentersLeaderPositionId.LookupValue,\r\n // centerLeaderPrefixId: element.ItemFields.CentersLeaderPrefixId.LookupValue,\r\n // centerLeaderName: element.ItemFields.CentersLeaderName,\r\n // centerLeaderPortrait: element.ItemFields?.CentersLeaderPortrait,\r\n // centerLeaderCurriculumVite: element.ItemFields.CentersLeaderCurriculumVitae,\r\n // Sequence: element.ItemFields.Sequence,\r\n // isActive: element.ItemFields.IsActive1,\r\n // };\r\n // this.centerLeader = obj;\r\n // }\r\n // });\r\n // }\r\n // );\r\n\r\n this.centerService.getListById('centers' ,this.centerId).pipe(takeUntil(this.destroy$)).subscribe(data => {\r\n this.center = data;\r\n });\r\n\r\n\r\n this.centerService.getListTopN('centersleader', 1, true, 'CenterId', this.centerId).pipe(takeUntil(this.destroy$), map((res: CenterLeaderList[]) => res.map(re => {\r\n return this.cloneCenterLeaderObj(re)\r\n }))).subscribe(data => {\r\n this.centerLeader = data[0];\r\n });\r\n}\r\n\r\n\r\ncloneCenterLeaderObj(element :CenterLeaderList ): CenterLeader {\r\n return ({\r\n centerLeaderId: element.ItemId,\r\n centerLeaderPosition: element.ItemFields.CentersLeaderPositionId.LookupValue,\r\n centerLeaderPrefixId: element.ItemFields.CentersLeaderPrefixId.LookupValue,\r\n centerLeaderName: element.ItemFields.CentersLeaderName,\r\n centerLeaderPortrait: element.ItemFields?.CentersLeaderPortrait,\r\n centerLeaderCurriculumVite: element.ItemFields.CentersLeaderCurriculumVitae,\r\n Sequence: element.ItemFields.Sequence,\r\n isActive: element.ItemFields.IsActive1,\r\n } as CenterLeader)\r\n}\r\n\r\n async ngOnInit(): Promise {\r\n this.aboutcenter = await this.apiResources.getByKey(\"aboutcenter\"); \r\n this.ceo = await this.apiResources.getByKey(\"ceo\"); \r\n}\r\n\r\nngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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 { Component } from '@angular/core';\r\nimport { map, Subject, takeUntil } from 'rxjs';\r\nimport { CenterBusinessDetailTypeList } from 'src/app/models/CenterBusinessDetailTypeList';\r\nimport { CenterList } from 'src/app/models/CenterList';\r\nimport { Centerresponsibilities } from 'src/app/models/centerresponsibilities';\r\n \r\nimport { Center, ResponsbilityETEC } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\n\r\n@Component({\r\n selector: 'app-establishing',\r\n templateUrl: './establishing.component.html',\r\n styleUrls: ['./establishing.component.css']\r\n})\r\n\r\nexport class EstablishingComponent {\r\n destroy$: Subject = new Subject();\r\n centerId: number = 1;\r\n center: Center;\r\n CenterBDetailTypeList: CenterBusinessDetailTypeList[] = [];\r\n ResponsbilityETEC: ResponsbilityETEC[] = [];\r\n\r\n\r\n constructor(private centerService: ApiService) {\r\n this.getCenter();\r\n this.getCenterBusinessDetailTypes();\r\n this.getCenterResponsibilities();\r\n }\r\n\r\n /** Component events */\r\n getCenter() {\r\n\r\n this.centerService.getListById('centers', 1).pipe(takeUntil(this.destroy$)).subscribe(\r\n (element: CenterList) => {\r\n var obj: Center = {\r\n centerId: element.ItemId,\r\n centerName: element.ItemFields.CenterName,\r\n centerDescription: element.ItemFields?.CenterDescription?.toString(),\r\n centerVision: element.ItemFields.CenterVision?.toString(),\r\n centerVisionIcon: '',\r\n centerMission: element.ItemFields.CenterMission?.toString(),\r\n centerMissionIcon: '',\r\n centerOrgnizationalStructureUrl: '',\r\n centerMainImageCoverUrl: '',\r\n centerParenetId: -1,\r\n isActive: element.ItemFields.IsActive1\r\n };\r\n this.center = obj;\r\n }\r\n );\r\n }\r\n\r\n getCenterBusinessDetailTypes() {\r\n\r\n this.centerService.getList('CenterBusinessDetailTypes').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: CenterBusinessDetailTypeList[]) => {\r\n this.CenterBDetailTypeList = data.sort((a, b) => a.ItemFields.TypeOrder - b.ItemFields.TypeOrder);\r\n }\r\n );\r\n }\r\n\r\n cloneObj(data: Centerresponsibilities): ResponsbilityETEC {\r\n return ({\r\n CenterResponsibilityId: data.ItemFields.CenterResponsibilityId,\r\n CenterResponsibilityTitle: data.ItemFields.CenterResponsibility\r\n } as ResponsbilityETEC)\r\n }\r\n\r\n getCenterResponsibilities() {\r\n\r\n this.centerService.getList('CenterResponsibilities').pipe(takeUntil(this.destroy$),\r\n map((res: Centerresponsibilities[]) => res.map(re => {\r\n return this.cloneObj(re)\r\n }))).subscribe(data => {\r\n this.ResponsbilityETEC = data.reverse();\r\n })\r\n\r\n // this.centerService.getList('CenterResponsibilities').pipe(takeUntil(this.destroy$)\r\n // ).subscribe(\r\n // (data: Centerresponsibilities[]) => {\r\n // data.forEach(element => {\r\n // var obj: ResponsbilityETEC = { \r\n // CenterResponsibilityId: element.ItemFields.CenterResponsibilityId,\r\n // CenterResponsibilityTitle: element.ItemFields.CenterResponsibility \r\n // };\r\n // this.ResponsbilityETEC.push(obj);\r\n // });\r\n // this.ResponsbilityETEC.reverse();\r\n // }\r\n // );\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n

    {{cEOonly?.centerLeaderPrefixId}}

    \r\n

    \r\n {{cEOonly?.centerLeaderName}}\r\n

    \r\n
    {{cEOonly?.centerLeaderPosition}}
    \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

    {{item?.centerLeaderPrefixId}}

    \r\n

    \r\n {{item?.centerLeaderName}}\r\n

    \r\n
    {{item?.centerLeaderPosition}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n ","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, Subject, takeUntil } from 'rxjs';\r\nimport { CenterLeaderList } from 'src/app/models/CenterLeaderList';\r\nimport { CenterLeader } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { environment } from 'src/environments/environment';\r\n \r\n\r\n@Component({\r\n selector: 'app-board',\r\n templateUrl: './board.component.html',\r\n styleUrls: ['./board.component.css']\r\n})\r\n\r\nexport class BoardComponent implements OnInit {\r\n boardMembers: CenterLeader[] = [];\r\n allMembers: CenterLeader[] = [];\r\n cEOonly: CenterLeader;\r\n destroy$: Subject = new Subject();\r\n\r\n constructor(private centerService: ApiService, private actRoute: ActivatedRoute) {\r\n\r\n this.actRoute.params.subscribe(params => {\r\n if (params[\"id\"] === 'board') {\r\n if (!this.boardMembers.length) {\r\n this.getLeaders();\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n /** Custom methods */\r\n cloneObj(data: CenterLeaderList):CenterLeader {\r\n return (\r\n {\r\n centerLeaderId: data.ItemFields.ID,\r\n centerLeaderPosition: data.ItemFields.CentersLeaderPositionId.LookupValue,\r\n centerLeaderPrefixId: data.ItemFields.CentersLeaderPrefixId.LookupValue,\r\n centerLeaderName: data.ItemFields.CentersLeaderName,\r\n centerLeaderPortrait: data.ItemFields.CentersLeaderPortrait?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n centerLeaderCurriculumVite: '',\r\n isActive: false,\r\n Sequence: data.ItemFields.Sequence,\r\n IsCenterCEO: data.ItemFields.IsCenterCEO,\r\n IsChairman: data.ItemFields.IsChairman,\r\n IsBoardMember: data.ItemFields.IsBoardMember\r\n }\r\n )\r\n }\r\n\r\n getLeaders() {\r\n\r\n this.centerService.getList('CentersLeader').pipe(takeUntil(this.destroy$), map((res: CenterLeaderList[]) => res.map(re => {\r\n return this.cloneObj(re)\r\n }))).subscribe(data => {\r\n this.allMembers = data;\r\n this.allMembers.forEach(element => {\r\n if (element.IsChairman == false && element.IsBoardMember == true) {\r\n this.boardMembers.push(element)\r\n }\r\n else if (element.IsChairman == true){\r\n this.cEOonly = element;\r\n }\r\n })\r\n \r\n this.boardMembers = this.boardMembers.sort((a, b) => a.Sequence - b.Sequence);\r\n console.log(this.boardMembers);\r\n })\r\n }\r\n\r\n /** Component events */\r\n ngOnInit(): void { }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n} ","/*!\n * lightgallery | 2.7.2 | September 20th 2023\n * http://www.lightgalleryjs.com/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar zoomSettings = {\r\n scale: 1,\r\n zoom: true,\r\n infiniteZoom: true,\r\n actualSize: true,\r\n showZoomInOutIcons: false,\r\n actualSizeIcons: {\r\n zoomIn: 'lg-zoom-in',\r\n zoomOut: 'lg-zoom-out',\r\n },\r\n enableZoomAfter: 300,\r\n zoomPluginStrings: {\r\n zoomIn: 'Zoom in',\r\n zoomOut: 'Zoom out',\r\n viewActualSize: 'View actual size',\r\n },\r\n};\n\n/**\r\n * List of lightGallery events\r\n * All events should be documented here\r\n * Below interfaces are used to build the website documentations\r\n * */\r\nvar lGEvents = {\r\n afterAppendSlide: 'lgAfterAppendSlide',\r\n init: 'lgInit',\r\n hasVideo: 'lgHasVideo',\r\n containerResize: 'lgContainerResize',\r\n updateSlides: 'lgUpdateSlides',\r\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\r\n beforeOpen: 'lgBeforeOpen',\r\n afterOpen: 'lgAfterOpen',\r\n slideItemLoad: 'lgSlideItemLoad',\r\n beforeSlide: 'lgBeforeSlide',\r\n afterSlide: 'lgAfterSlide',\r\n posterClick: 'lgPosterClick',\r\n dragStart: 'lgDragStart',\r\n dragMove: 'lgDragMove',\r\n dragEnd: 'lgDragEnd',\r\n beforeNextSlide: 'lgBeforeNextSlide',\r\n beforePrevSlide: 'lgBeforePrevSlide',\r\n beforeClose: 'lgBeforeClose',\r\n afterClose: 'lgAfterClose',\r\n rotateLeft: 'lgRotateLeft',\r\n rotateRight: 'lgRotateRight',\r\n flipHorizontal: 'lgFlipHorizontal',\r\n flipVertical: 'lgFlipVertical',\r\n autoplay: 'lgAutoplay',\r\n autoplayStart: 'lgAutoplayStart',\r\n autoplayStop: 'lgAutoplayStop',\r\n};\n\nvar ZOOM_TRANSITION_DURATION = 500;\r\nvar Zoom = /** @class */ (function () {\r\n function Zoom(instance, $LG) {\r\n // get lightGallery core plugin instance\r\n this.core = instance;\r\n this.$LG = $LG;\r\n this.settings = __assign(__assign({}, zoomSettings), this.core.settings);\r\n return this;\r\n }\r\n // Append Zoom controls. Actual size, Zoom-in, Zoom-out\r\n Zoom.prototype.buildTemplates = function () {\r\n var zoomIcons = this.settings.showZoomInOutIcons\r\n ? \"\"\r\n : '';\r\n if (this.settings.actualSize) {\r\n zoomIcons += \"\";\r\n }\r\n this.core.outer.addClass('lg-use-transition-for-zoom');\r\n this.core.$toolbar.first().append(zoomIcons);\r\n };\r\n /**\r\n * @desc Enable zoom option only once the image is completely loaded\r\n * If zoomFromOrigin is true, Zoom is enabled once the dummy image has been inserted\r\n *\r\n * Zoom styles are defined under lg-zoomable CSS class.\r\n */\r\n Zoom.prototype.enableZoom = function (event) {\r\n var _this = this;\r\n // delay will be 0 except first time\r\n var _speed = this.settings.enableZoomAfter + event.detail.delay;\r\n // set _speed value 0 if gallery opened from direct url and if it is first slide\r\n if (this.$LG('body').first().hasClass('lg-from-hash') &&\r\n event.detail.delay) {\r\n // will execute only once\r\n _speed = 0;\r\n }\r\n else {\r\n // Remove lg-from-hash to enable starting animation.\r\n this.$LG('body').first().removeClass('lg-from-hash');\r\n }\r\n this.zoomableTimeout = setTimeout(function () {\r\n if (!_this.isImageSlide(_this.core.index)) {\r\n return;\r\n }\r\n _this.core.getSlideItem(event.detail.index).addClass('lg-zoomable');\r\n if (event.detail.index === _this.core.index) {\r\n _this.setZoomEssentials();\r\n }\r\n }, _speed + 30);\r\n };\r\n Zoom.prototype.enableZoomOnSlideItemLoad = function () {\r\n // Add zoomable class\r\n this.core.LGel.on(lGEvents.slideItemLoad + \".zoom\", this.enableZoom.bind(this));\r\n };\r\n Zoom.prototype.getDragCords = function (e) {\r\n return {\r\n x: e.pageX,\r\n y: e.pageY,\r\n };\r\n };\r\n Zoom.prototype.getSwipeCords = function (e) {\r\n var x = e.touches[0].pageX;\r\n var y = e.touches[0].pageY;\r\n return {\r\n x: x,\r\n y: y,\r\n };\r\n };\r\n Zoom.prototype.getDragAllowedAxises = function (scale, scaleDiff) {\r\n var $image = this.core\r\n .getSlideItem(this.core.index)\r\n .find('.lg-image')\r\n .first()\r\n .get();\r\n var height = 0;\r\n var width = 0;\r\n var rect = $image.getBoundingClientRect();\r\n if (scale) {\r\n height = $image.offsetHeight * scale;\r\n width = $image.offsetWidth * scale;\r\n }\r\n else if (scaleDiff) {\r\n height = rect.height + scaleDiff * rect.height;\r\n width = rect.width + scaleDiff * rect.width;\r\n }\r\n else {\r\n height = rect.height;\r\n width = rect.width;\r\n }\r\n var allowY = height > this.containerRect.height;\r\n var allowX = width > this.containerRect.width;\r\n return {\r\n allowX: allowX,\r\n allowY: allowY,\r\n };\r\n };\r\n Zoom.prototype.setZoomEssentials = function () {\r\n this.containerRect = this.core.$content.get().getBoundingClientRect();\r\n };\r\n /**\r\n * @desc Image zoom\r\n * Translate the wrap and scale the image to get better user experience\r\n *\r\n * @param {String} scale - Zoom decrement/increment value\r\n */\r\n Zoom.prototype.zoomImage = function (scale, scaleDiff, reposition, resetToMax) {\r\n if (Math.abs(scaleDiff) <= 0)\r\n return;\r\n var offsetX = this.containerRect.width / 2 + this.containerRect.left;\r\n var offsetY = this.containerRect.height / 2 +\r\n this.containerRect.top +\r\n this.scrollTop;\r\n var originalX;\r\n var originalY;\r\n if (scale === 1) {\r\n this.positionChanged = false;\r\n }\r\n var dragAllowedAxises = this.getDragAllowedAxises(0, scaleDiff);\r\n var allowY = dragAllowedAxises.allowY, allowX = dragAllowedAxises.allowX;\r\n if (this.positionChanged) {\r\n originalX = this.left / (this.scale - scaleDiff);\r\n originalY = this.top / (this.scale - scaleDiff);\r\n this.pageX = offsetX - originalX;\r\n this.pageY = offsetY - originalY;\r\n this.positionChanged = false;\r\n }\r\n var possibleSwipeCords = this.getPossibleSwipeDragCords(scaleDiff);\r\n var x;\r\n var y;\r\n var _x = offsetX - this.pageX;\r\n var _y = offsetY - this.pageY;\r\n if (scale - scaleDiff > 1) {\r\n var scaleVal = (scale - scaleDiff) / Math.abs(scaleDiff);\r\n _x =\r\n (scaleDiff < 0 ? -_x : _x) +\r\n this.left * (scaleVal + (scaleDiff < 0 ? -1 : 1));\r\n _y =\r\n (scaleDiff < 0 ? -_y : _y) +\r\n this.top * (scaleVal + (scaleDiff < 0 ? -1 : 1));\r\n x = _x / scaleVal;\r\n y = _y / scaleVal;\r\n }\r\n else {\r\n var scaleVal = (scale - scaleDiff) * scaleDiff;\r\n x = _x * scaleVal;\r\n y = _y * scaleVal;\r\n }\r\n if (reposition) {\r\n if (allowX) {\r\n if (this.isBeyondPossibleLeft(x, possibleSwipeCords.minX)) {\r\n x = possibleSwipeCords.minX;\r\n }\r\n else if (this.isBeyondPossibleRight(x, possibleSwipeCords.maxX)) {\r\n x = possibleSwipeCords.maxX;\r\n }\r\n }\r\n else {\r\n if (scale > 1) {\r\n if (x < possibleSwipeCords.minX) {\r\n x = possibleSwipeCords.minX;\r\n }\r\n else if (x > possibleSwipeCords.maxX) {\r\n x = possibleSwipeCords.maxX;\r\n }\r\n }\r\n }\r\n // @todo fix this\r\n if (allowY) {\r\n if (this.isBeyondPossibleTop(y, possibleSwipeCords.minY)) {\r\n y = possibleSwipeCords.minY;\r\n }\r\n else if (this.isBeyondPossibleBottom(y, possibleSwipeCords.maxY)) {\r\n y = possibleSwipeCords.maxY;\r\n }\r\n }\r\n else {\r\n // If the translate value based on index of beyond the viewport, utilize the available space to prevent image being cut out\r\n if (scale > 1) {\r\n //If image goes beyond viewport top, use the minim possible translate value\r\n if (y < possibleSwipeCords.minY) {\r\n y = possibleSwipeCords.minY;\r\n }\r\n else if (y > possibleSwipeCords.maxY) {\r\n y = possibleSwipeCords.maxY;\r\n }\r\n }\r\n }\r\n }\r\n this.setZoomStyles({\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n });\r\n this.left = x;\r\n this.top = y;\r\n if (resetToMax) {\r\n this.setZoomImageSize();\r\n }\r\n };\r\n Zoom.prototype.resetImageTranslate = function (index) {\r\n if (!this.isImageSlide(index)) {\r\n return;\r\n }\r\n var $image = this.core.getSlideItem(index).find('.lg-image').first();\r\n this.imageReset = false;\r\n $image.removeClass('reset-transition reset-transition-y reset-transition-x');\r\n this.core.outer.removeClass('lg-actual-size');\r\n $image.css('width', 'auto').css('height', 'auto');\r\n setTimeout(function () {\r\n $image.removeClass('no-transition');\r\n }, 10);\r\n };\r\n Zoom.prototype.setZoomImageSize = function () {\r\n var _this = this;\r\n var $image = this.core\r\n .getSlideItem(this.core.index)\r\n .find('.lg-image')\r\n .first();\r\n setTimeout(function () {\r\n var actualSizeScale = _this.getCurrentImageActualSizeScale();\r\n if (_this.scale >= actualSizeScale) {\r\n $image.addClass('no-transition');\r\n _this.imageReset = true;\r\n }\r\n }, ZOOM_TRANSITION_DURATION);\r\n setTimeout(function () {\r\n var actualSizeScale = _this.getCurrentImageActualSizeScale();\r\n if (_this.scale >= actualSizeScale) {\r\n var dragAllowedAxises = _this.getDragAllowedAxises(_this.scale);\r\n $image\r\n .css('width', $image.get().naturalWidth + 'px')\r\n .css('height', $image.get().naturalHeight + 'px');\r\n _this.core.outer.addClass('lg-actual-size');\r\n if (dragAllowedAxises.allowX && dragAllowedAxises.allowY) {\r\n $image.addClass('reset-transition');\r\n }\r\n else if (dragAllowedAxises.allowX &&\r\n !dragAllowedAxises.allowY) {\r\n $image.addClass('reset-transition-x');\r\n }\r\n else if (!dragAllowedAxises.allowX &&\r\n dragAllowedAxises.allowY) {\r\n $image.addClass('reset-transition-y');\r\n }\r\n }\r\n }, ZOOM_TRANSITION_DURATION + 50);\r\n };\r\n /**\r\n * @desc apply scale3d to image and translate to image wrap\r\n * @param {style} X,Y and scale\r\n */\r\n Zoom.prototype.setZoomStyles = function (style) {\r\n var $imageWrap = this.core\r\n .getSlideItem(this.core.index)\r\n .find('.lg-img-wrap')\r\n .first();\r\n var $image = this.core\r\n .getSlideItem(this.core.index)\r\n .find('.lg-image')\r\n .first();\r\n var $dummyImage = this.core.outer\r\n .find('.lg-current .lg-dummy-img')\r\n .first();\r\n this.scale = style.scale;\r\n $image.css('transform', 'scale3d(' + style.scale + ', ' + style.scale + ', 1)');\r\n $dummyImage.css('transform', 'scale3d(' + style.scale + ', ' + style.scale + ', 1)');\r\n var transform = 'translate3d(' + style.x + 'px, ' + style.y + 'px, 0)';\r\n $imageWrap.css('transform', transform);\r\n };\r\n /**\r\n * @param index - Index of the current slide\r\n * @param event - event will be available only if the function is called on clicking/taping the imags\r\n */\r\n Zoom.prototype.setActualSize = function (index, event) {\r\n var _this = this;\r\n if (this.zoomInProgress) {\r\n return;\r\n }\r\n this.zoomInProgress = true;\r\n var currentItem = this.core.galleryItems[this.core.index];\r\n this.resetImageTranslate(index);\r\n setTimeout(function () {\r\n // Allow zoom only on image\r\n if (!currentItem.src ||\r\n _this.core.outer.hasClass('lg-first-slide-loading')) {\r\n return;\r\n }\r\n var scale = _this.getCurrentImageActualSizeScale();\r\n var prevScale = _this.scale;\r\n if (_this.core.outer.hasClass('lg-zoomed')) {\r\n _this.scale = 1;\r\n }\r\n else {\r\n _this.scale = _this.getScale(scale);\r\n }\r\n _this.setPageCords(event);\r\n _this.beginZoom(_this.scale);\r\n _this.zoomImage(_this.scale, _this.scale - prevScale, true, true);\r\n }, 50);\r\n setTimeout(function () {\r\n _this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n }, 60);\r\n setTimeout(function () {\r\n _this.zoomInProgress = false;\r\n }, ZOOM_TRANSITION_DURATION + 110);\r\n };\r\n Zoom.prototype.getNaturalWidth = function (index) {\r\n var $image = this.core.getSlideItem(index).find('.lg-image').first();\r\n var naturalWidth = this.core.galleryItems[index].width;\r\n return naturalWidth\r\n ? parseFloat(naturalWidth)\r\n : $image.get().naturalWidth;\r\n };\r\n Zoom.prototype.getActualSizeScale = function (naturalWidth, width) {\r\n var _scale;\r\n var scale;\r\n if (naturalWidth >= width) {\r\n _scale = naturalWidth / width;\r\n scale = _scale || 2;\r\n }\r\n else {\r\n scale = 1;\r\n }\r\n return scale;\r\n };\r\n Zoom.prototype.getCurrentImageActualSizeScale = function () {\r\n var $image = this.core\r\n .getSlideItem(this.core.index)\r\n .find('.lg-image')\r\n .first();\r\n var width = $image.get().offsetWidth;\r\n var naturalWidth = this.getNaturalWidth(this.core.index) || width;\r\n return this.getActualSizeScale(naturalWidth, width);\r\n };\r\n Zoom.prototype.getPageCords = function (event) {\r\n var cords = {};\r\n if (event) {\r\n cords.x = event.pageX || event.touches[0].pageX;\r\n cords.y = event.pageY || event.touches[0].pageY;\r\n }\r\n else {\r\n var containerRect = this.core.$content\r\n .get()\r\n .getBoundingClientRect();\r\n cords.x = containerRect.width / 2 + containerRect.left;\r\n cords.y =\r\n containerRect.height / 2 + this.scrollTop + containerRect.top;\r\n }\r\n return cords;\r\n };\r\n Zoom.prototype.setPageCords = function (event) {\r\n var pageCords = this.getPageCords(event);\r\n this.pageX = pageCords.x;\r\n this.pageY = pageCords.y;\r\n };\r\n Zoom.prototype.manageActualPixelClassNames = function () {\r\n var $actualSize = this.core.getElementById('lg-actual-size');\r\n $actualSize\r\n .removeClass(this.settings.actualSizeIcons.zoomIn)\r\n .addClass(this.settings.actualSizeIcons.zoomOut);\r\n };\r\n // If true, zoomed - in else zoomed out\r\n Zoom.prototype.beginZoom = function (scale) {\r\n this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');\r\n if (scale > 1) {\r\n this.core.outer.addClass('lg-zoomed');\r\n this.manageActualPixelClassNames();\r\n }\r\n else {\r\n this.resetZoom();\r\n }\r\n return scale > 1;\r\n };\r\n Zoom.prototype.getScale = function (scale) {\r\n var actualSizeScale = this.getCurrentImageActualSizeScale();\r\n if (scale < 1) {\r\n scale = 1;\r\n }\r\n else if (scale > actualSizeScale) {\r\n scale = actualSizeScale;\r\n }\r\n return scale;\r\n };\r\n Zoom.prototype.init = function () {\r\n var _this = this;\r\n if (!this.settings.zoom) {\r\n return;\r\n }\r\n this.buildTemplates();\r\n this.enableZoomOnSlideItemLoad();\r\n var tapped = null;\r\n this.core.outer.on('dblclick.lg', function (event) {\r\n if (!_this.$LG(event.target).hasClass('lg-image')) {\r\n return;\r\n }\r\n _this.setActualSize(_this.core.index, event);\r\n });\r\n this.core.outer.on('touchstart.lg', function (event) {\r\n var $target = _this.$LG(event.target);\r\n if (event.touches.length === 1 && $target.hasClass('lg-image')) {\r\n if (!tapped) {\r\n tapped = setTimeout(function () {\r\n tapped = null;\r\n }, 300);\r\n }\r\n else {\r\n clearTimeout(tapped);\r\n tapped = null;\r\n event.preventDefault();\r\n _this.setActualSize(_this.core.index, event);\r\n }\r\n }\r\n });\r\n this.core.LGel.on(lGEvents.containerResize + \".zoom \" + lGEvents.rotateRight + \".zoom \" + lGEvents.rotateLeft + \".zoom \" + lGEvents.flipHorizontal + \".zoom \" + lGEvents.flipVertical + \".zoom\", function () {\r\n if (!_this.core.lgOpened ||\r\n !_this.isImageSlide(_this.core.index) ||\r\n _this.core.touchAction) {\r\n return;\r\n }\r\n var _LGel = _this.core\r\n .getSlideItem(_this.core.index)\r\n .find('.lg-img-wrap')\r\n .first();\r\n _this.top = 0;\r\n _this.left = 0;\r\n _this.setZoomEssentials();\r\n _this.setZoomSwipeStyles(_LGel, { x: 0, y: 0 });\r\n _this.positionChanged = true;\r\n });\r\n // Update zoom on resize and orientationchange\r\n this.$LG(window).on(\"scroll.lg.zoom.global\" + this.core.lgId, function () {\r\n if (!_this.core.lgOpened)\r\n return;\r\n _this.scrollTop = _this.$LG(window).scrollTop();\r\n });\r\n this.core.getElementById('lg-zoom-out').on('click.lg', function () {\r\n // Allow zoom only on image\r\n if (!_this.isImageSlide(_this.core.index)) {\r\n return;\r\n }\r\n var timeout = 0;\r\n if (_this.imageReset) {\r\n _this.resetImageTranslate(_this.core.index);\r\n timeout = 50;\r\n }\r\n setTimeout(function () {\r\n var scale = _this.scale - _this.settings.scale;\r\n if (scale < 1) {\r\n scale = 1;\r\n }\r\n _this.beginZoom(scale);\r\n _this.zoomImage(scale, -_this.settings.scale, true, !_this.settings.infiniteZoom);\r\n }, timeout);\r\n });\r\n this.core.getElementById('lg-zoom-in').on('click.lg', function () {\r\n _this.zoomIn();\r\n });\r\n this.core.getElementById('lg-actual-size').on('click.lg', function () {\r\n _this.setActualSize(_this.core.index);\r\n });\r\n this.core.LGel.on(lGEvents.beforeOpen + \".zoom\", function () {\r\n _this.core.outer.find('.lg-item').removeClass('lg-zoomable');\r\n });\r\n this.core.LGel.on(lGEvents.afterOpen + \".zoom\", function () {\r\n _this.scrollTop = _this.$LG(window).scrollTop();\r\n // Set the initial value center\r\n _this.pageX = _this.core.outer.width() / 2;\r\n _this.pageY = _this.core.outer.height() / 2 + _this.scrollTop;\r\n _this.scale = 1;\r\n });\r\n // Reset zoom on slide change\r\n this.core.LGel.on(lGEvents.afterSlide + \".zoom\", function (event) {\r\n var prevIndex = event.detail.prevIndex;\r\n _this.scale = 1;\r\n _this.positionChanged = false;\r\n _this.zoomInProgress = false;\r\n _this.resetZoom(prevIndex);\r\n _this.resetImageTranslate(prevIndex);\r\n if (_this.isImageSlide(_this.core.index)) {\r\n _this.setZoomEssentials();\r\n }\r\n });\r\n // Drag option after zoom\r\n this.zoomDrag();\r\n this.pinchZoom();\r\n this.zoomSwipe();\r\n // Store the zoomable timeout value just to clear it while closing\r\n this.zoomableTimeout = false;\r\n this.positionChanged = false;\r\n this.zoomInProgress = false;\r\n };\r\n Zoom.prototype.zoomIn = function () {\r\n // Allow zoom only on image\r\n if (!this.isImageSlide(this.core.index)) {\r\n return;\r\n }\r\n var scale = this.scale + this.settings.scale;\r\n if (!this.settings.infiniteZoom) {\r\n scale = this.getScale(scale);\r\n }\r\n this.beginZoom(scale);\r\n this.zoomImage(scale, Math.min(this.settings.scale, scale - this.scale), true, !this.settings.infiniteZoom);\r\n };\r\n // Reset zoom effect\r\n Zoom.prototype.resetZoom = function (index) {\r\n this.core.outer.removeClass('lg-zoomed lg-zoom-drag-transition');\r\n var $actualSize = this.core.getElementById('lg-actual-size');\r\n var $item = this.core.getSlideItem(index !== undefined ? index : this.core.index);\r\n $actualSize\r\n .removeClass(this.settings.actualSizeIcons.zoomOut)\r\n .addClass(this.settings.actualSizeIcons.zoomIn);\r\n $item.find('.lg-img-wrap').first().removeAttr('style');\r\n $item.find('.lg-image').first().removeAttr('style');\r\n this.scale = 1;\r\n this.left = 0;\r\n this.top = 0;\r\n // Reset pagx pagy values to center\r\n this.setPageCords();\r\n };\r\n Zoom.prototype.getTouchDistance = function (e) {\r\n return Math.sqrt((e.touches[0].pageX - e.touches[1].pageX) *\r\n (e.touches[0].pageX - e.touches[1].pageX) +\r\n (e.touches[0].pageY - e.touches[1].pageY) *\r\n (e.touches[0].pageY - e.touches[1].pageY));\r\n };\r\n Zoom.prototype.pinchZoom = function () {\r\n var _this = this;\r\n var startDist = 0;\r\n var pinchStarted = false;\r\n var initScale = 1;\r\n var prevScale = 0;\r\n var $item = this.core.getSlideItem(this.core.index);\r\n this.core.outer.on('touchstart.lg', function (e) {\r\n $item = _this.core.getSlideItem(_this.core.index);\r\n if (!_this.isImageSlide(_this.core.index)) {\r\n return;\r\n }\r\n if (e.touches.length === 2) {\r\n e.preventDefault();\r\n if (_this.core.outer.hasClass('lg-first-slide-loading')) {\r\n return;\r\n }\r\n initScale = _this.scale || 1;\r\n _this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');\r\n _this.setPageCords(e);\r\n _this.resetImageTranslate(_this.core.index);\r\n _this.core.touchAction = 'pinch';\r\n startDist = _this.getTouchDistance(e);\r\n }\r\n });\r\n this.core.$inner.on('touchmove.lg', function (e) {\r\n if (e.touches.length === 2 &&\r\n _this.core.touchAction === 'pinch' &&\r\n (_this.$LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target))) {\r\n e.preventDefault();\r\n var endDist = _this.getTouchDistance(e);\r\n var distance = startDist - endDist;\r\n if (!pinchStarted && Math.abs(distance) > 5) {\r\n pinchStarted = true;\r\n }\r\n if (pinchStarted) {\r\n prevScale = _this.scale;\r\n var _scale = Math.max(1, initScale + -distance * 0.02);\r\n _this.scale =\r\n Math.round((_scale + Number.EPSILON) * 100) / 100;\r\n var diff = _this.scale - prevScale;\r\n _this.zoomImage(_this.scale, Math.round((diff + Number.EPSILON) * 100) / 100, false, false);\r\n }\r\n }\r\n });\r\n this.core.$inner.on('touchend.lg', function (e) {\r\n if (_this.core.touchAction === 'pinch' &&\r\n (_this.$LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target))) {\r\n pinchStarted = false;\r\n startDist = 0;\r\n if (_this.scale <= 1) {\r\n _this.resetZoom();\r\n }\r\n else {\r\n var actualSizeScale = _this.getCurrentImageActualSizeScale();\r\n if (_this.scale >= actualSizeScale) {\r\n var scaleDiff = actualSizeScale - _this.scale;\r\n if (scaleDiff === 0) {\r\n scaleDiff = 0.01;\r\n }\r\n _this.zoomImage(actualSizeScale, scaleDiff, false, true);\r\n }\r\n _this.manageActualPixelClassNames();\r\n _this.core.outer.addClass('lg-zoomed');\r\n }\r\n _this.core.touchAction = undefined;\r\n }\r\n });\r\n };\r\n Zoom.prototype.touchendZoom = function (startCoords, endCoords, allowX, allowY, touchDuration) {\r\n var distanceXnew = endCoords.x - startCoords.x;\r\n var distanceYnew = endCoords.y - startCoords.y;\r\n var speedX = Math.abs(distanceXnew) / touchDuration + 1;\r\n var speedY = Math.abs(distanceYnew) / touchDuration + 1;\r\n if (speedX > 2) {\r\n speedX += 1;\r\n }\r\n if (speedY > 2) {\r\n speedY += 1;\r\n }\r\n distanceXnew = distanceXnew * speedX;\r\n distanceYnew = distanceYnew * speedY;\r\n var _LGel = this.core\r\n .getSlideItem(this.core.index)\r\n .find('.lg-img-wrap')\r\n .first();\r\n var distance = {};\r\n distance.x = this.left + distanceXnew;\r\n distance.y = this.top + distanceYnew;\r\n var possibleSwipeCords = this.getPossibleSwipeDragCords();\r\n if (Math.abs(distanceXnew) > 15 || Math.abs(distanceYnew) > 15) {\r\n if (allowY) {\r\n if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {\r\n distance.y = possibleSwipeCords.minY;\r\n }\r\n else if (this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)) {\r\n distance.y = possibleSwipeCords.maxY;\r\n }\r\n }\r\n if (allowX) {\r\n if (this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)) {\r\n distance.x = possibleSwipeCords.minX;\r\n }\r\n else if (this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)) {\r\n distance.x = possibleSwipeCords.maxX;\r\n }\r\n }\r\n if (allowY) {\r\n this.top = distance.y;\r\n }\r\n else {\r\n distance.y = this.top;\r\n }\r\n if (allowX) {\r\n this.left = distance.x;\r\n }\r\n else {\r\n distance.x = this.left;\r\n }\r\n this.setZoomSwipeStyles(_LGel, distance);\r\n this.positionChanged = true;\r\n }\r\n };\r\n Zoom.prototype.getZoomSwipeCords = function (startCoords, endCoords, allowX, allowY, possibleSwipeCords) {\r\n var distance = {};\r\n if (allowY) {\r\n distance.y = this.top + (endCoords.y - startCoords.y);\r\n if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {\r\n var diffMinY = possibleSwipeCords.minY - distance.y;\r\n distance.y = possibleSwipeCords.minY - diffMinY / 6;\r\n }\r\n else if (this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)) {\r\n var diffMaxY = distance.y - possibleSwipeCords.maxY;\r\n distance.y = possibleSwipeCords.maxY + diffMaxY / 6;\r\n }\r\n }\r\n else {\r\n distance.y = this.top;\r\n }\r\n if (allowX) {\r\n distance.x = this.left + (endCoords.x - startCoords.x);\r\n if (this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)) {\r\n var diffMinX = possibleSwipeCords.minX - distance.x;\r\n distance.x = possibleSwipeCords.minX - diffMinX / 6;\r\n }\r\n else if (this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)) {\r\n var difMaxX = distance.x - possibleSwipeCords.maxX;\r\n distance.x = possibleSwipeCords.maxX + difMaxX / 6;\r\n }\r\n }\r\n else {\r\n distance.x = this.left;\r\n }\r\n return distance;\r\n };\r\n Zoom.prototype.isBeyondPossibleLeft = function (x, minX) {\r\n return x >= minX;\r\n };\r\n Zoom.prototype.isBeyondPossibleRight = function (x, maxX) {\r\n return x <= maxX;\r\n };\r\n Zoom.prototype.isBeyondPossibleTop = function (y, minY) {\r\n return y >= minY;\r\n };\r\n Zoom.prototype.isBeyondPossibleBottom = function (y, maxY) {\r\n return y <= maxY;\r\n };\r\n Zoom.prototype.isImageSlide = function (index) {\r\n var currentItem = this.core.galleryItems[index];\r\n return this.core.getSlideType(currentItem) === 'image';\r\n };\r\n Zoom.prototype.getPossibleSwipeDragCords = function (scale) {\r\n var $image = this.core\r\n .getSlideItem(this.core.index)\r\n .find('.lg-image')\r\n .first();\r\n var bottom = this.core.mediaContainerPosition.bottom;\r\n var imgRect = $image.get().getBoundingClientRect();\r\n var imageHeight = imgRect.height;\r\n var imageWidth = imgRect.width;\r\n if (scale) {\r\n imageHeight = imageHeight + scale * imageHeight;\r\n imageWidth = imageWidth + scale * imageWidth;\r\n }\r\n var minY = (imageHeight - this.containerRect.height) / 2;\r\n var maxY = (this.containerRect.height - imageHeight) / 2 + bottom;\r\n var minX = (imageWidth - this.containerRect.width) / 2;\r\n var maxX = (this.containerRect.width - imageWidth) / 2;\r\n var possibleSwipeCords = {\r\n minY: minY,\r\n maxY: maxY,\r\n minX: minX,\r\n maxX: maxX,\r\n };\r\n return possibleSwipeCords;\r\n };\r\n Zoom.prototype.setZoomSwipeStyles = function (LGel, distance) {\r\n LGel.css('transform', 'translate3d(' + distance.x + 'px, ' + distance.y + 'px, 0)');\r\n };\r\n Zoom.prototype.zoomSwipe = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isMoved = false;\r\n // Allow x direction drag\r\n var allowX = false;\r\n // Allow Y direction drag\r\n var allowY = false;\r\n var startTime = new Date();\r\n var endTime = new Date();\r\n var possibleSwipeCords;\r\n var _LGel;\r\n var $item = this.core.getSlideItem(this.core.index);\r\n this.core.$inner.on('touchstart.lg', function (e) {\r\n // Allow zoom only on image\r\n if (!_this.isImageSlide(_this.core.index)) {\r\n return;\r\n }\r\n $item = _this.core.getSlideItem(_this.core.index);\r\n if ((_this.$LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) &&\r\n e.touches.length === 1 &&\r\n _this.core.outer.hasClass('lg-zoomed')) {\r\n e.preventDefault();\r\n startTime = new Date();\r\n _this.core.touchAction = 'zoomSwipe';\r\n _LGel = _this.core\r\n .getSlideItem(_this.core.index)\r\n .find('.lg-img-wrap')\r\n .first();\r\n var dragAllowedAxises = _this.getDragAllowedAxises(0);\r\n allowY = dragAllowedAxises.allowY;\r\n allowX = dragAllowedAxises.allowX;\r\n if (allowX || allowY) {\r\n startCoords = _this.getSwipeCords(e);\r\n }\r\n possibleSwipeCords = _this.getPossibleSwipeDragCords();\r\n // reset opacity and transition duration\r\n _this.core.outer.addClass('lg-zoom-dragging lg-zoom-drag-transition');\r\n }\r\n });\r\n this.core.$inner.on('touchmove.lg', function (e) {\r\n if (e.touches.length === 1 &&\r\n _this.core.touchAction === 'zoomSwipe' &&\r\n (_this.$LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target))) {\r\n e.preventDefault();\r\n _this.core.touchAction = 'zoomSwipe';\r\n endCoords = _this.getSwipeCords(e);\r\n var distance = _this.getZoomSwipeCords(startCoords, endCoords, allowX, allowY, possibleSwipeCords);\r\n if (Math.abs(endCoords.x - startCoords.x) > 15 ||\r\n Math.abs(endCoords.y - startCoords.y) > 15) {\r\n isMoved = true;\r\n _this.setZoomSwipeStyles(_LGel, distance);\r\n }\r\n }\r\n });\r\n this.core.$inner.on('touchend.lg', function (e) {\r\n if (_this.core.touchAction === 'zoomSwipe' &&\r\n (_this.$LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target))) {\r\n e.preventDefault();\r\n _this.core.touchAction = undefined;\r\n _this.core.outer.removeClass('lg-zoom-dragging');\r\n if (!isMoved) {\r\n return;\r\n }\r\n isMoved = false;\r\n endTime = new Date();\r\n var touchDuration = endTime.valueOf() - startTime.valueOf();\r\n _this.touchendZoom(startCoords, endCoords, allowX, allowY, touchDuration);\r\n }\r\n });\r\n };\r\n Zoom.prototype.zoomDrag = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isDragging = false;\r\n var isMoved = false;\r\n // Allow x direction drag\r\n var allowX = false;\r\n // Allow Y direction drag\r\n var allowY = false;\r\n var startTime;\r\n var endTime;\r\n var possibleSwipeCords;\r\n var _LGel;\r\n this.core.outer.on('mousedown.lg.zoom', function (e) {\r\n // Allow zoom only on image\r\n if (!_this.isImageSlide(_this.core.index)) {\r\n return;\r\n }\r\n var $item = _this.core.getSlideItem(_this.core.index);\r\n if (_this.$LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) {\r\n startTime = new Date();\r\n _LGel = _this.core\r\n .getSlideItem(_this.core.index)\r\n .find('.lg-img-wrap')\r\n .first();\r\n var dragAllowedAxises = _this.getDragAllowedAxises(0);\r\n allowY = dragAllowedAxises.allowY;\r\n allowX = dragAllowedAxises.allowX;\r\n if (_this.core.outer.hasClass('lg-zoomed')) {\r\n if (_this.$LG(e.target).hasClass('lg-object') &&\r\n (allowX || allowY)) {\r\n e.preventDefault();\r\n startCoords = _this.getDragCords(e);\r\n possibleSwipeCords = _this.getPossibleSwipeDragCords();\r\n isDragging = true;\r\n _this.core.outer\r\n .removeClass('lg-grab')\r\n .addClass('lg-grabbing lg-zoom-drag-transition lg-zoom-dragging');\r\n // reset opacity and transition duration\r\n }\r\n }\r\n }\r\n });\r\n this.$LG(window).on(\"mousemove.lg.zoom.global\" + this.core.lgId, function (e) {\r\n if (isDragging) {\r\n isMoved = true;\r\n endCoords = _this.getDragCords(e);\r\n var distance = _this.getZoomSwipeCords(startCoords, endCoords, allowX, allowY, possibleSwipeCords);\r\n _this.setZoomSwipeStyles(_LGel, distance);\r\n }\r\n });\r\n this.$LG(window).on(\"mouseup.lg.zoom.global\" + this.core.lgId, function (e) {\r\n if (isDragging) {\r\n endTime = new Date();\r\n isDragging = false;\r\n _this.core.outer.removeClass('lg-zoom-dragging');\r\n // Fix for chrome mouse move on click\r\n if (isMoved &&\r\n (startCoords.x !== endCoords.x ||\r\n startCoords.y !== endCoords.y)) {\r\n endCoords = _this.getDragCords(e);\r\n var touchDuration = endTime.valueOf() - startTime.valueOf();\r\n _this.touchendZoom(startCoords, endCoords, allowX, allowY, touchDuration);\r\n }\r\n isMoved = false;\r\n }\r\n _this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n });\r\n };\r\n Zoom.prototype.closeGallery = function () {\r\n this.resetZoom();\r\n this.zoomInProgress = false;\r\n };\r\n Zoom.prototype.destroy = function () {\r\n // Unbind all events added by lightGallery zoom plugin\r\n this.$LG(window).off(\".lg.zoom.global\" + this.core.lgId);\r\n this.core.LGel.off('.lg.zoom');\r\n this.core.LGel.off('.zoom');\r\n clearTimeout(this.zoomableTimeout);\r\n this.zoomableTimeout = false;\r\n };\r\n return Zoom;\r\n}());\n\nexport default Zoom;\n","/*!\n * lightgallery | 2.7.2 | September 20th 2023\n * http://www.lightgalleryjs.com/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar fullscreenSettings = {\r\n fullScreen: true,\r\n fullscreenPluginStrings: {\r\n toggleFullscreen: 'Toggle Fullscreen',\r\n },\r\n};\n\nvar FullScreen = /** @class */ (function () {\r\n function FullScreen(instance, $LG) {\r\n // get lightGallery core plugin instance\r\n this.core = instance;\r\n this.$LG = $LG;\r\n // extend module default settings with lightGallery core settings\r\n this.settings = __assign(__assign({}, fullscreenSettings), this.core.settings);\r\n return this;\r\n }\r\n FullScreen.prototype.init = function () {\r\n var fullScreen = '';\r\n if (this.settings.fullScreen) {\r\n // check for fullscreen browser support\r\n if (!document.fullscreenEnabled &&\r\n !document.webkitFullscreenEnabled &&\r\n !document.mozFullScreenEnabled &&\r\n !document.msFullscreenEnabled) {\r\n return;\r\n }\r\n else {\r\n fullScreen = \"\";\r\n this.core.$toolbar.append(fullScreen);\r\n this.fullScreen();\r\n }\r\n }\r\n };\r\n FullScreen.prototype.isFullScreen = function () {\r\n return (document.fullscreenElement ||\r\n document.mozFullScreenElement ||\r\n document.webkitFullscreenElement ||\r\n document.msFullscreenElement);\r\n };\r\n FullScreen.prototype.requestFullscreen = function () {\r\n var el = document.documentElement;\r\n if (el.requestFullscreen) {\r\n el.requestFullscreen();\r\n }\r\n else if (el.msRequestFullscreen) {\r\n el.msRequestFullscreen();\r\n }\r\n else if (el.mozRequestFullScreen) {\r\n el.mozRequestFullScreen();\r\n }\r\n else if (el.webkitRequestFullscreen) {\r\n el.webkitRequestFullscreen();\r\n }\r\n };\r\n FullScreen.prototype.exitFullscreen = function () {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n }\r\n else if (document.msExitFullscreen) {\r\n document.msExitFullscreen();\r\n }\r\n else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n }\r\n else if (document.webkitExitFullscreen) {\r\n document.webkitExitFullscreen();\r\n }\r\n };\r\n // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\r\n FullScreen.prototype.fullScreen = function () {\r\n var _this = this;\r\n this.$LG(document).on(\"fullscreenchange.lg.global\" + this.core.lgId + \" \\n webkitfullscreenchange.lg.global\" + this.core.lgId + \" \\n mozfullscreenchange.lg.global\" + this.core.lgId + \" \\n MSFullscreenChange.lg.global\" + this.core.lgId, function () {\r\n if (!_this.core.lgOpened)\r\n return;\r\n _this.core.outer.toggleClass('lg-fullscreen-on');\r\n });\r\n this.core.outer\r\n .find('.lg-fullscreen')\r\n .first()\r\n .on('click.lg', function () {\r\n if (_this.isFullScreen()) {\r\n _this.exitFullscreen();\r\n }\r\n else {\r\n _this.requestFullscreen();\r\n }\r\n });\r\n };\r\n FullScreen.prototype.closeGallery = function () {\r\n // exit from fullscreen if activated\r\n if (this.isFullScreen()) {\r\n this.exitFullscreen();\r\n }\r\n };\r\n FullScreen.prototype.destroy = function () {\r\n this.$LG(document).off(\"fullscreenchange.lg.global\" + this.core.lgId + \" \\n webkitfullscreenchange.lg.global\" + this.core.lgId + \" \\n mozfullscreenchange.lg.global\" + this.core.lgId + \" \\n MSFullscreenChange.lg.global\" + this.core.lgId);\r\n };\r\n return FullScreen;\r\n}());\n\nexport default FullScreen;\n","/*!\n * lightgallery | 2.7.2 | September 20th 2023\n * http://www.lightgalleryjs.com/\n * Copyright (c) 2020 Sachin Neravath;\n * @license GPLv3\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\n/**\r\n * List of lightGallery events\r\n * All events should be documented here\r\n * Below interfaces are used to build the website documentations\r\n * */\r\nvar lGEvents = {\r\n afterAppendSlide: 'lgAfterAppendSlide',\r\n init: 'lgInit',\r\n hasVideo: 'lgHasVideo',\r\n containerResize: 'lgContainerResize',\r\n updateSlides: 'lgUpdateSlides',\r\n afterAppendSubHtml: 'lgAfterAppendSubHtml',\r\n beforeOpen: 'lgBeforeOpen',\r\n afterOpen: 'lgAfterOpen',\r\n slideItemLoad: 'lgSlideItemLoad',\r\n beforeSlide: 'lgBeforeSlide',\r\n afterSlide: 'lgAfterSlide',\r\n posterClick: 'lgPosterClick',\r\n dragStart: 'lgDragStart',\r\n dragMove: 'lgDragMove',\r\n dragEnd: 'lgDragEnd',\r\n beforeNextSlide: 'lgBeforeNextSlide',\r\n beforePrevSlide: 'lgBeforePrevSlide',\r\n beforeClose: 'lgBeforeClose',\r\n afterClose: 'lgAfterClose',\r\n rotateLeft: 'lgRotateLeft',\r\n rotateRight: 'lgRotateRight',\r\n flipHorizontal: 'lgFlipHorizontal',\r\n flipVertical: 'lgFlipVertical',\r\n autoplay: 'lgAutoplay',\r\n autoplayStart: 'lgAutoplayStart',\r\n autoplayStop: 'lgAutoplayStop',\r\n};\n\nvar lightGalleryCoreSettings = {\r\n mode: 'lg-slide',\r\n easing: 'ease',\r\n speed: 400,\r\n licenseKey: '0000-0000-000-0000',\r\n height: '100%',\r\n width: '100%',\r\n addClass: '',\r\n startClass: 'lg-start-zoom',\r\n backdropDuration: 300,\r\n container: '',\r\n startAnimationDuration: 400,\r\n zoomFromOrigin: true,\r\n hideBarsDelay: 0,\r\n showBarsAfter: 10000,\r\n slideDelay: 0,\r\n supportLegacyBrowser: true,\r\n allowMediaOverlap: false,\r\n videoMaxSize: '1280-720',\r\n loadYouTubePoster: true,\r\n defaultCaptionHeight: 0,\r\n ariaLabelledby: '',\r\n ariaDescribedby: '',\r\n resetScrollPosition: true,\r\n hideScrollbar: false,\r\n closable: true,\r\n swipeToClose: true,\r\n closeOnTap: true,\r\n showCloseIcon: true,\r\n showMaximizeIcon: false,\r\n loop: true,\r\n escKey: true,\r\n keyPress: true,\r\n trapFocus: true,\r\n controls: true,\r\n slideEndAnimation: true,\r\n hideControlOnEnd: false,\r\n mousewheel: false,\r\n getCaptionFromTitleOrAlt: true,\r\n appendSubHtmlTo: '.lg-sub-html',\r\n subHtmlSelectorRelative: false,\r\n preload: 2,\r\n numberOfSlideItemsInDom: 10,\r\n selector: '',\r\n selectWithin: '',\r\n nextHtml: '',\r\n prevHtml: '',\r\n index: 0,\r\n iframeWidth: '100%',\r\n iframeHeight: '100%',\r\n iframeMaxWidth: '100%',\r\n iframeMaxHeight: '100%',\r\n download: true,\r\n counter: true,\r\n appendCounterTo: '.lg-toolbar',\r\n swipeThreshold: 50,\r\n enableSwipe: true,\r\n enableDrag: true,\r\n dynamic: false,\r\n dynamicEl: [],\r\n extraProps: [],\r\n exThumbImage: '',\r\n isMobile: undefined,\r\n mobileSettings: {\r\n controls: false,\r\n showCloseIcon: false,\r\n download: false,\r\n },\r\n plugins: [],\r\n strings: {\r\n closeGallery: 'Close gallery',\r\n toggleMaximize: 'Toggle maximize',\r\n previousSlide: 'Previous slide',\r\n nextSlide: 'Next slide',\r\n download: 'Download',\r\n playVideo: 'Play video',\r\n mediaLoadingFailed: 'Oops... Failed to load content...',\r\n },\r\n};\n\nfunction initLgPolyfills() {\r\n (function () {\r\n if (typeof window.CustomEvent === 'function')\r\n return false;\r\n function CustomEvent(event, params) {\r\n params = params || {\r\n bubbles: false,\r\n cancelable: false,\r\n detail: null,\r\n };\r\n var evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\r\n return evt;\r\n }\r\n window.CustomEvent = CustomEvent;\r\n })();\r\n (function () {\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n }\r\n })();\r\n}\r\nvar lgQuery = /** @class */ (function () {\r\n function lgQuery(selector) {\r\n this.cssVenderPrefixes = [\r\n 'TransitionDuration',\r\n 'TransitionTimingFunction',\r\n 'Transform',\r\n 'Transition',\r\n ];\r\n this.selector = this._getSelector(selector);\r\n this.firstElement = this._getFirstEl();\r\n return this;\r\n }\r\n lgQuery.generateUUID = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n };\r\n lgQuery.prototype._getSelector = function (selector, context) {\r\n if (context === void 0) { context = document; }\r\n if (typeof selector !== 'string') {\r\n return selector;\r\n }\r\n context = context || document;\r\n var fl = selector.substring(0, 1);\r\n if (fl === '#') {\r\n return context.querySelector(selector);\r\n }\r\n else {\r\n return context.querySelectorAll(selector);\r\n }\r\n };\r\n lgQuery.prototype._each = function (func) {\r\n if (!this.selector) {\r\n return this;\r\n }\r\n if (this.selector.length !== undefined) {\r\n [].forEach.call(this.selector, func);\r\n }\r\n else {\r\n func(this.selector, 0);\r\n }\r\n return this;\r\n };\r\n lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) {\r\n // prettier-ignore\r\n var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) {\r\n return group1.toUpperCase();\r\n });\r\n if (this.cssVenderPrefixes.indexOf(property) !== -1) {\r\n el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;\r\n el.style['webkit' + property] = value;\r\n el.style['moz' + property] = value;\r\n el.style['ms' + property] = value;\r\n el.style['o' + property] = value;\r\n }\r\n else {\r\n el.style[property] = value;\r\n }\r\n };\r\n lgQuery.prototype._getFirstEl = function () {\r\n if (this.selector && this.selector.length !== undefined) {\r\n return this.selector[0];\r\n }\r\n else {\r\n return this.selector;\r\n }\r\n };\r\n lgQuery.prototype.isEventMatched = function (event, eventName) {\r\n var eventNamespace = eventName.split('.');\r\n return event\r\n .split('.')\r\n .filter(function (e) { return e; })\r\n .every(function (e) {\r\n return eventNamespace.indexOf(e) !== -1;\r\n });\r\n };\r\n lgQuery.prototype.attr = function (attr, value) {\r\n if (value === undefined) {\r\n if (!this.firstElement) {\r\n return '';\r\n }\r\n return this.firstElement.getAttribute(attr);\r\n }\r\n this._each(function (el) {\r\n el.setAttribute(attr, value);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.find = function (selector) {\r\n return $LG(this._getSelector(selector, this.selector));\r\n };\r\n lgQuery.prototype.first = function () {\r\n if (this.selector && this.selector.length !== undefined) {\r\n return $LG(this.selector[0]);\r\n }\r\n else {\r\n return $LG(this.selector);\r\n }\r\n };\r\n lgQuery.prototype.eq = function (index) {\r\n return $LG(this.selector[index]);\r\n };\r\n lgQuery.prototype.parent = function () {\r\n return $LG(this.selector.parentElement);\r\n };\r\n lgQuery.prototype.get = function () {\r\n return this._getFirstEl();\r\n };\r\n lgQuery.prototype.removeAttr = function (attributes) {\r\n var attrs = attributes.split(' ');\r\n this._each(function (el) {\r\n attrs.forEach(function (attr) { return el.removeAttribute(attr); });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.wrap = function (className) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n var wrapper = document.createElement('div');\r\n wrapper.className = className;\r\n this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);\r\n this.firstElement.parentNode.removeChild(this.firstElement);\r\n wrapper.appendChild(this.firstElement);\r\n return this;\r\n };\r\n lgQuery.prototype.addClass = function (classNames) {\r\n if (classNames === void 0) { classNames = ''; }\r\n this._each(function (el) {\r\n // IE doesn't support multiple arguments\r\n classNames.split(' ').forEach(function (className) {\r\n if (className) {\r\n el.classList.add(className);\r\n }\r\n });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.removeClass = function (classNames) {\r\n this._each(function (el) {\r\n // IE doesn't support multiple arguments\r\n classNames.split(' ').forEach(function (className) {\r\n if (className) {\r\n el.classList.remove(className);\r\n }\r\n });\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.hasClass = function (className) {\r\n if (!this.firstElement) {\r\n return false;\r\n }\r\n return this.firstElement.classList.contains(className);\r\n };\r\n lgQuery.prototype.hasAttribute = function (attribute) {\r\n if (!this.firstElement) {\r\n return false;\r\n }\r\n return this.firstElement.hasAttribute(attribute);\r\n };\r\n lgQuery.prototype.toggleClass = function (className) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n if (this.hasClass(className)) {\r\n this.removeClass(className);\r\n }\r\n else {\r\n this.addClass(className);\r\n }\r\n return this;\r\n };\r\n lgQuery.prototype.css = function (property, value) {\r\n var _this = this;\r\n this._each(function (el) {\r\n _this._setCssVendorPrefix(el, property, value);\r\n });\r\n return this;\r\n };\r\n // Need to pass separate namespaces for separate elements\r\n lgQuery.prototype.on = function (events, listener) {\r\n var _this = this;\r\n if (!this.selector) {\r\n return this;\r\n }\r\n events.split(' ').forEach(function (event) {\r\n if (!Array.isArray(lgQuery.eventListeners[event])) {\r\n lgQuery.eventListeners[event] = [];\r\n }\r\n lgQuery.eventListeners[event].push(listener);\r\n _this.selector.addEventListener(event.split('.')[0], listener);\r\n });\r\n return this;\r\n };\r\n // @todo - test this\r\n lgQuery.prototype.once = function (event, listener) {\r\n var _this = this;\r\n this.on(event, function () {\r\n _this.off(event);\r\n listener(event);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.off = function (event) {\r\n var _this = this;\r\n if (!this.selector) {\r\n return this;\r\n }\r\n Object.keys(lgQuery.eventListeners).forEach(function (eventName) {\r\n if (_this.isEventMatched(event, eventName)) {\r\n lgQuery.eventListeners[eventName].forEach(function (listener) {\r\n _this.selector.removeEventListener(eventName.split('.')[0], listener);\r\n });\r\n lgQuery.eventListeners[eventName] = [];\r\n }\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.trigger = function (event, detail) {\r\n if (!this.firstElement) {\r\n return this;\r\n }\r\n var customEvent = new CustomEvent(event.split('.')[0], {\r\n detail: detail || null,\r\n });\r\n this.firstElement.dispatchEvent(customEvent);\r\n return this;\r\n };\r\n // Does not support IE\r\n lgQuery.prototype.load = function (url) {\r\n var _this = this;\r\n fetch(url)\r\n .then(function (res) { return res.text(); })\r\n .then(function (html) {\r\n _this.selector.innerHTML = html;\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.html = function (html) {\r\n if (html === undefined) {\r\n if (!this.firstElement) {\r\n return '';\r\n }\r\n return this.firstElement.innerHTML;\r\n }\r\n this._each(function (el) {\r\n el.innerHTML = html;\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.append = function (html) {\r\n this._each(function (el) {\r\n if (typeof html === 'string') {\r\n el.insertAdjacentHTML('beforeend', html);\r\n }\r\n else {\r\n el.appendChild(html);\r\n }\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.prepend = function (html) {\r\n this._each(function (el) {\r\n el.insertAdjacentHTML('afterbegin', html);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.remove = function () {\r\n this._each(function (el) {\r\n el.parentNode.removeChild(el);\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.empty = function () {\r\n this._each(function (el) {\r\n el.innerHTML = '';\r\n });\r\n return this;\r\n };\r\n lgQuery.prototype.scrollTop = function (scrollTop) {\r\n if (scrollTop !== undefined) {\r\n document.body.scrollTop = scrollTop;\r\n document.documentElement.scrollTop = scrollTop;\r\n return this;\r\n }\r\n else {\r\n return (window.pageYOffset ||\r\n document.documentElement.scrollTop ||\r\n document.body.scrollTop ||\r\n 0);\r\n }\r\n };\r\n lgQuery.prototype.scrollLeft = function (scrollLeft) {\r\n if (scrollLeft !== undefined) {\r\n document.body.scrollLeft = scrollLeft;\r\n document.documentElement.scrollLeft = scrollLeft;\r\n return this;\r\n }\r\n else {\r\n return (window.pageXOffset ||\r\n document.documentElement.scrollLeft ||\r\n document.body.scrollLeft ||\r\n 0);\r\n }\r\n };\r\n lgQuery.prototype.offset = function () {\r\n if (!this.firstElement) {\r\n return {\r\n left: 0,\r\n top: 0,\r\n };\r\n }\r\n var rect = this.firstElement.getBoundingClientRect();\r\n var bodyMarginLeft = $LG('body').style().marginLeft;\r\n // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value\r\n return {\r\n left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),\r\n top: rect.top + this.scrollTop(),\r\n };\r\n };\r\n lgQuery.prototype.style = function () {\r\n if (!this.firstElement) {\r\n return {};\r\n }\r\n return (this.firstElement.currentStyle ||\r\n window.getComputedStyle(this.firstElement));\r\n };\r\n // Width without padding and border even if box-sizing is used.\r\n lgQuery.prototype.width = function () {\r\n var style = this.style();\r\n return (this.firstElement.clientWidth -\r\n parseFloat(style.paddingLeft) -\r\n parseFloat(style.paddingRight));\r\n };\r\n // Height without padding and border even if box-sizing is used.\r\n lgQuery.prototype.height = function () {\r\n var style = this.style();\r\n return (this.firstElement.clientHeight -\r\n parseFloat(style.paddingTop) -\r\n parseFloat(style.paddingBottom));\r\n };\r\n lgQuery.eventListeners = {};\r\n return lgQuery;\r\n}());\r\nfunction $LG(selector) {\r\n initLgPolyfills();\r\n return new lgQuery(selector);\r\n}\n\nvar defaultDynamicOptions = [\r\n 'src',\r\n 'sources',\r\n 'subHtml',\r\n 'subHtmlUrl',\r\n 'html',\r\n 'video',\r\n 'poster',\r\n 'slideName',\r\n 'responsive',\r\n 'srcset',\r\n 'sizes',\r\n 'iframe',\r\n 'downloadUrl',\r\n 'download',\r\n 'width',\r\n 'facebookShareUrl',\r\n 'tweetText',\r\n 'iframeTitle',\r\n 'twitterShareUrl',\r\n 'pinterestShareUrl',\r\n 'pinterestText',\r\n 'fbHtml',\r\n 'disqusIdentifier',\r\n 'disqusUrl',\r\n];\r\n// Convert html data-attribute to camalcase\r\nfunction convertToData(attr) {\r\n // FInd a way for lgsize\r\n if (attr === 'href') {\r\n return 'src';\r\n }\r\n attr = attr.replace('data-', '');\r\n attr = attr.charAt(0).toLowerCase() + attr.slice(1);\r\n attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\r\n return attr;\r\n}\r\nvar utils = {\r\n /**\r\n * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option\r\n */\r\n getSize: function (el, container, spacing, defaultLgSize) {\r\n if (spacing === void 0) { spacing = 0; }\r\n var LGel = $LG(el);\r\n var lgSize = LGel.attr('data-lg-size') || defaultLgSize;\r\n if (!lgSize) {\r\n return;\r\n }\r\n var isResponsiveSizes = lgSize.split(',');\r\n // if at-least two viewport sizes are available\r\n if (isResponsiveSizes[1]) {\r\n var wWidth = window.innerWidth;\r\n for (var i = 0; i < isResponsiveSizes.length; i++) {\r\n var size_1 = isResponsiveSizes[i];\r\n var responsiveWidth = parseInt(size_1.split('-')[2], 10);\r\n if (responsiveWidth > wWidth) {\r\n lgSize = size_1;\r\n break;\r\n }\r\n // take last item as last option\r\n if (i === isResponsiveSizes.length - 1) {\r\n lgSize = size_1;\r\n }\r\n }\r\n }\r\n var size = lgSize.split('-');\r\n var width = parseInt(size[0], 10);\r\n var height = parseInt(size[1], 10);\r\n var cWidth = container.width();\r\n var cHeight = container.height() - spacing;\r\n var maxWidth = Math.min(cWidth, width);\r\n var maxHeight = Math.min(cHeight, height);\r\n var ratio = Math.min(maxWidth / width, maxHeight / height);\r\n return { width: width * ratio, height: height * ratio };\r\n },\r\n /**\r\n * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option\r\n * @param {jQuery Element}\r\n * @returns {String} Transform CSS string\r\n */\r\n getTransform: function (el, container, top, bottom, imageSize) {\r\n if (!imageSize) {\r\n return;\r\n }\r\n var LGel = $LG(el).find('img').first();\r\n if (!LGel.get()) {\r\n return;\r\n }\r\n var containerRect = container.get().getBoundingClientRect();\r\n var wWidth = containerRect.width;\r\n // using innerWidth to include mobile safari bottom bar\r\n var wHeight = container.height() - (top + bottom);\r\n var elWidth = LGel.width();\r\n var elHeight = LGel.height();\r\n var elStyle = LGel.style();\r\n var x = (wWidth - elWidth) / 2 -\r\n LGel.offset().left +\r\n (parseFloat(elStyle.paddingLeft) || 0) +\r\n (parseFloat(elStyle.borderLeft) || 0) +\r\n $LG(window).scrollLeft() +\r\n containerRect.left;\r\n var y = (wHeight - elHeight) / 2 -\r\n LGel.offset().top +\r\n (parseFloat(elStyle.paddingTop) || 0) +\r\n (parseFloat(elStyle.borderTop) || 0) +\r\n $LG(window).scrollTop() +\r\n top;\r\n var scX = elWidth / imageSize.width;\r\n var scY = elHeight / imageSize.height;\r\n var transform = 'translate3d(' +\r\n (x *= -1) +\r\n 'px, ' +\r\n (y *= -1) +\r\n 'px, 0) scale3d(' +\r\n scX +\r\n ', ' +\r\n scY +\r\n ', 1)';\r\n return transform;\r\n },\r\n getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {\r\n var title = iframeTitle ? 'title=\"' + iframeTitle + '\"' : '';\r\n return \"
    \\n \\n
    \";\r\n },\r\n getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {\r\n var srcsetAttr = srcset ? \"srcset=\\\"\" + srcset + \"\\\"\" : '';\r\n var sizesAttr = sizes ? \"sizes=\\\"\" + sizes + \"\\\"\" : '';\r\n var imgMarkup = \"\";\r\n var sourceTag = '';\r\n if (sources) {\r\n var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;\r\n sourceTag = sourceObj.map(function (source) {\r\n var attrs = '';\r\n Object.keys(source).forEach(function (key) {\r\n // Do not remove the first space as it is required to separate the attributes\r\n attrs += \" \" + key + \"=\\\"\" + source[key] + \"\\\"\";\r\n });\r\n return \"\";\r\n });\r\n }\r\n return \"\" + sourceTag + imgMarkup;\r\n },\r\n // Get src from responsive src\r\n getResponsiveSrc: function (srcItms) {\r\n var rsWidth = [];\r\n var rsSrc = [];\r\n var src = '';\r\n for (var i = 0; i < srcItms.length; i++) {\r\n var _src = srcItms[i].split(' ');\r\n // Manage empty space\r\n if (_src[0] === '') {\r\n _src.splice(0, 1);\r\n }\r\n rsSrc.push(_src[0]);\r\n rsWidth.push(_src[1]);\r\n }\r\n var wWidth = window.innerWidth;\r\n for (var j = 0; j < rsWidth.length; j++) {\r\n if (parseInt(rsWidth[j], 10) > wWidth) {\r\n src = rsSrc[j];\r\n break;\r\n }\r\n }\r\n return src;\r\n },\r\n isImageLoaded: function (img) {\r\n if (!img)\r\n return false;\r\n // During the onload event, IE correctly identifies any images that\r\n // weren’t downloaded as not complete. Others should too. Gecko-based\r\n // browsers act like NS4 in that they report this incorrectly.\r\n if (!img.complete) {\r\n return false;\r\n }\r\n // However, they do have two very useful properties: naturalWidth and\r\n // naturalHeight. These give the true size of the image. If it failed\r\n // to load, either of these should be zero.\r\n if (img.naturalWidth === 0) {\r\n return false;\r\n }\r\n // No other way of checking: assume it’s ok.\r\n return true;\r\n },\r\n getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {\r\n var videoClass = '';\r\n if (_isVideo && _isVideo.youtube) {\r\n videoClass = 'lg-has-youtube';\r\n }\r\n else if (_isVideo && _isVideo.vimeo) {\r\n videoClass = 'lg-has-vimeo';\r\n }\r\n else {\r\n videoClass = 'lg-has-html5';\r\n }\r\n return \"
    \\n
    \\n \\n \" + playVideoString + \"\\n \\n \\n \\n \\n \\n \\n \\n
    \\n \" + (dummyImg || '') + \"\\n \\n
    \";\r\n },\r\n getFocusableElements: function (container) {\r\n var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type=\"text\"]:not([disabled]), input[type=\"radio\"]:not([disabled]), input[type=\"checkbox\"]:not([disabled]), select:not([disabled])');\r\n var visibleElements = [].filter.call(elements, function (element) {\r\n var style = window.getComputedStyle(element);\r\n return style.display !== 'none' && style.visibility !== 'hidden';\r\n });\r\n return visibleElements;\r\n },\r\n /**\r\n * @desc Create dynamic elements array from gallery items when dynamic option is false\r\n * It helps to avoid frequent DOM interaction\r\n * and avoid multiple checks for dynamic elments\r\n *\r\n * @returns {Array} dynamicEl\r\n */\r\n getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {\r\n var dynamicElements = [];\r\n var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);\r\n [].forEach.call(items, function (item) {\r\n var dynamicEl = {};\r\n for (var i = 0; i < item.attributes.length; i++) {\r\n var attr = item.attributes[i];\r\n if (attr.specified) {\r\n var dynamicAttr = convertToData(attr.name);\r\n var label = '';\r\n if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {\r\n label = dynamicAttr;\r\n }\r\n if (label) {\r\n dynamicEl[label] = attr.value;\r\n }\r\n }\r\n }\r\n var currentItem = $LG(item);\r\n var alt = currentItem.find('img').first().attr('alt');\r\n var title = currentItem.attr('title');\r\n var thumb = exThumbImage\r\n ? currentItem.attr(exThumbImage)\r\n : currentItem.find('img').first().attr('src');\r\n dynamicEl.thumb = thumb;\r\n if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {\r\n dynamicEl.subHtml = title || alt || '';\r\n }\r\n dynamicEl.alt = alt || title || '';\r\n dynamicElements.push(dynamicEl);\r\n });\r\n return dynamicElements;\r\n },\r\n isMobile: function () {\r\n return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n },\r\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n *\r\n * @todo - this information can be moved to dynamicEl to avoid frequent calls\r\n */\r\n isVideo: function (src, isHTML5VIdeo, index) {\r\n if (!src) {\r\n if (isHTML5VIdeo) {\r\n return {\r\n html5: true,\r\n };\r\n }\r\n else {\r\n console.error('lightGallery :- data-src is not provided on slide item ' +\r\n (index + 1) +\r\n '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');\r\n return;\r\n }\r\n }\r\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com|be-nocookie\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)([\\&|?][\\S]*)*/i);\r\n var vimeo = src.match(/\\/\\/(?:www\\.)?(?:player\\.)?vimeo.com\\/(?:video\\/)?([0-9a-z\\-_]+)(.*)?/i);\r\n var wistia = src.match(/https?:\\/\\/(.+)?(wistia\\.com|wi\\.st)\\/(medias|embed)\\/([0-9a-z\\-_]+)(.*)/);\r\n if (youtube) {\r\n return {\r\n youtube: youtube,\r\n };\r\n }\r\n else if (vimeo) {\r\n return {\r\n vimeo: vimeo,\r\n };\r\n }\r\n else if (wistia) {\r\n return {\r\n wistia: wistia,\r\n };\r\n }\r\n },\r\n};\n\n// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio\r\n// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html\r\n// Unique id for each gallery\r\nvar lgId = 0;\r\nvar LightGallery = /** @class */ (function () {\r\n function LightGallery(element, options) {\r\n this.lgOpened = false;\r\n this.index = 0;\r\n // lightGallery modules\r\n this.plugins = [];\r\n // false when lightGallery load first slide content;\r\n this.lGalleryOn = false;\r\n // True when a slide animation is in progress\r\n this.lgBusy = false;\r\n this.currentItemsInDom = [];\r\n // Scroll top value before lightGallery is opened\r\n this.prevScrollTop = 0;\r\n this.bodyPaddingRight = 0;\r\n this.isDummyImageRemoved = false;\r\n this.dragOrSwipeEnabled = false;\r\n this.mediaContainerPosition = {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n if (!element) {\r\n return this;\r\n }\r\n lgId++;\r\n this.lgId = lgId;\r\n this.el = element;\r\n this.LGel = $LG(element);\r\n this.generateSettings(options);\r\n this.buildModules();\r\n // When using dynamic mode, ensure dynamicEl is an array\r\n if (this.settings.dynamic &&\r\n this.settings.dynamicEl !== undefined &&\r\n !Array.isArray(this.settings.dynamicEl)) {\r\n throw 'When using dynamic mode, you must also define dynamicEl as an Array.';\r\n }\r\n this.galleryItems = this.getItems();\r\n this.normalizeSettings();\r\n // Gallery items\r\n this.init();\r\n this.validateLicense();\r\n return this;\r\n }\r\n LightGallery.prototype.generateSettings = function (options) {\r\n // lightGallery settings\r\n this.settings = __assign(__assign({}, lightGalleryCoreSettings), options);\r\n if (this.settings.isMobile &&\r\n typeof this.settings.isMobile === 'function'\r\n ? this.settings.isMobile()\r\n : utils.isMobile()) {\r\n var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);\r\n this.settings = __assign(__assign({}, this.settings), mobileSettings);\r\n }\r\n };\r\n LightGallery.prototype.normalizeSettings = function () {\r\n if (this.settings.slideEndAnimation) {\r\n this.settings.hideControlOnEnd = false;\r\n }\r\n if (!this.settings.closable) {\r\n this.settings.swipeToClose = false;\r\n }\r\n // And reset it on close to get the correct value next time\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n // At the moment, Zoom from image doesn't support dynamic options\r\n // @todo add zoomFromOrigin support for dynamic images\r\n if (this.settings.dynamic) {\r\n this.zoomFromOrigin = false;\r\n }\r\n if (!this.settings.container) {\r\n this.settings.container = document.body;\r\n }\r\n // settings.preload should not be grater than $item.length\r\n this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);\r\n };\r\n LightGallery.prototype.init = function () {\r\n var _this = this;\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.buildStructure();\r\n this.LGel.trigger(lGEvents.init, {\r\n instance: this,\r\n });\r\n if (this.settings.keyPress) {\r\n this.keyPress();\r\n }\r\n setTimeout(function () {\r\n _this.enableDrag();\r\n _this.enableSwipe();\r\n _this.triggerPosterClick();\r\n }, 50);\r\n this.arrow();\r\n if (this.settings.mousewheel) {\r\n this.mousewheel();\r\n }\r\n if (!this.settings.dynamic) {\r\n this.openGalleryOnItemClick();\r\n }\r\n };\r\n LightGallery.prototype.openGalleryOnItemClick = function () {\r\n var _this = this;\r\n var _loop_1 = function (index) {\r\n var element = this_1.items[index];\r\n var $element = $LG(element);\r\n // Using different namespace for click because click event should not unbind if selector is same object('this')\r\n // @todo manage all event listners - should have namespace that represent element\r\n var uuid = lgQuery.generateUUID();\r\n $element\r\n .attr('data-lg-id', uuid)\r\n .on(\"click.lgcustom-item-\" + uuid, function (e) {\r\n e.preventDefault();\r\n var currentItemIndex = _this.settings.index || index;\r\n _this.openGallery(currentItemIndex, element);\r\n });\r\n };\r\n var this_1 = this;\r\n // Using for loop instead of using bubbling as the items can be any html element.\r\n for (var index = 0; index < this.items.length; index++) {\r\n _loop_1(index);\r\n }\r\n };\r\n /**\r\n * Module constructor\r\n * Modules are build incrementally.\r\n * Gallery should be opened only once all the modules are initialized.\r\n * use moduleBuildTimeout to make sure this\r\n */\r\n LightGallery.prototype.buildModules = function () {\r\n var _this = this;\r\n this.settings.plugins.forEach(function (plugin) {\r\n _this.plugins.push(new plugin(_this, $LG));\r\n });\r\n };\r\n LightGallery.prototype.validateLicense = function () {\r\n if (!this.settings.licenseKey) {\r\n console.error('Please provide a valid license key');\r\n }\r\n else if (this.settings.licenseKey === '0000-0000-000-0000') {\r\n console.warn(\"lightGallery: \" + this.settings.licenseKey + \" license key is not valid for production use\");\r\n }\r\n };\r\n LightGallery.prototype.getSlideItem = function (index) {\r\n return $LG(this.getSlideItemId(index));\r\n };\r\n LightGallery.prototype.getSlideItemId = function (index) {\r\n return \"#lg-item-\" + this.lgId + \"-\" + index;\r\n };\r\n LightGallery.prototype.getIdName = function (id) {\r\n return id + \"-\" + this.lgId;\r\n };\r\n LightGallery.prototype.getElementById = function (id) {\r\n return $LG(\"#\" + this.getIdName(id));\r\n };\r\n LightGallery.prototype.manageSingleSlideClassName = function () {\r\n if (this.galleryItems.length < 2) {\r\n this.outer.addClass('lg-single-item');\r\n }\r\n else {\r\n this.outer.removeClass('lg-single-item');\r\n }\r\n };\r\n LightGallery.prototype.buildStructure = function () {\r\n var _this = this;\r\n var container = this.$container && this.$container.get();\r\n if (container) {\r\n return;\r\n }\r\n var controls = '';\r\n var subHtmlCont = '';\r\n // Create controls\r\n if (this.settings.controls) {\r\n controls = \"\\n \";\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n subHtmlCont =\r\n '
    ';\r\n }\r\n var addClasses = '';\r\n if (this.settings.allowMediaOverlap) {\r\n // Do not remove space before last single quote\r\n addClasses += 'lg-media-overlap ';\r\n }\r\n var ariaLabelledby = this.settings.ariaLabelledby\r\n ? 'aria-labelledby=\"' + this.settings.ariaLabelledby + '\"'\r\n : '';\r\n var ariaDescribedby = this.settings.ariaDescribedby\r\n ? 'aria-describedby=\"' + this.settings.ariaDescribedby + '\"'\r\n : '';\r\n var containerClassName = \"lg-container \" + this.settings.addClass + \" \" + (document.body !== this.settings.container ? 'lg-inline' : '');\r\n var closeIcon = this.settings.closable && this.settings.showCloseIcon\r\n ? \"\"\r\n : '';\r\n var maximizeIcon = this.settings.showMaximizeIcon\r\n ? \"\"\r\n : '';\r\n var template = \"\\n
    \\n
    \\n\\n
    \\n\\n
    \\n
    \\n
    \\n \" + controls + \"\\n
    \\n
    \\n \" + maximizeIcon + \"\\n \" + closeIcon + \"\\n
    \\n \" + (this.settings.appendSubHtmlTo === '.lg-outer'\r\n ? subHtmlCont\r\n : '') + \"\\n
    \\n \" + (this.settings.appendSubHtmlTo === '.lg-sub-html'\r\n ? subHtmlCont\r\n : '') + \"\\n
    \\n
    \\n
    \\n \";\r\n $LG(this.settings.container).append(template);\r\n if (document.body !== this.settings.container) {\r\n $LG(this.settings.container).css('position', 'relative');\r\n }\r\n this.outer = this.getElementById('lg-outer');\r\n this.$lgComponents = this.getElementById('lg-components');\r\n this.$backdrop = this.getElementById('lg-backdrop');\r\n this.$container = this.getElementById('lg-container');\r\n this.$inner = this.getElementById('lg-inner');\r\n this.$content = this.getElementById('lg-content');\r\n this.$toolbar = this.getElementById('lg-toolbar');\r\n this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');\r\n var outerClassNames = this.settings.mode + \" \";\r\n this.manageSingleSlideClassName();\r\n if (this.settings.enableDrag) {\r\n outerClassNames += 'lg-grab ';\r\n }\r\n this.outer.addClass(outerClassNames);\r\n this.$inner.css('transition-timing-function', this.settings.easing);\r\n this.$inner.css('transition-duration', this.settings.speed + 'ms');\r\n if (this.settings.download) {\r\n this.$toolbar.append(\"\");\r\n }\r\n this.counter();\r\n $LG(window).on(\"resize.lg.global\" + this.lgId + \" orientationchange.lg.global\" + this.lgId, function () {\r\n _this.refreshOnResize();\r\n });\r\n this.hideBars();\r\n this.manageCloseGallery();\r\n this.toggleMaximize();\r\n this.initModules();\r\n };\r\n LightGallery.prototype.refreshOnResize = function () {\r\n if (this.lgOpened) {\r\n var currentGalleryItem = this.galleryItems[this.index];\r\n var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;\r\n this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n if (__slideVideoInfo) {\r\n this.resizeVideoSlide(this.index, this.currentImageSize);\r\n }\r\n if (this.zoomFromOrigin && !this.isDummyImageRemoved) {\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n this.outer\r\n .find('.lg-current .lg-dummy-img')\r\n .first()\r\n .attr('style', imgStyle);\r\n }\r\n this.LGel.trigger(lGEvents.containerResize);\r\n }\r\n };\r\n LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {\r\n var lgVideoStyle = this.getVideoContStyle(imageSize);\r\n var currentSlide = this.getSlideItem(index);\r\n currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);\r\n };\r\n /**\r\n * Update slides dynamically.\r\n * Add, edit or delete slides dynamically when lightGallery is opened.\r\n * Modify the current gallery items and pass it via updateSlides method\r\n * @note\r\n * - Do not mutate existing lightGallery items directly.\r\n * - Always pass new list of gallery items\r\n * - You need to take care of thumbnails outside the gallery if any\r\n * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.\r\n * @param items Gallery items\r\n * @param index After the update operation, which slide gallery should navigate to\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n *\r\n * // Adding slides dynamically\r\n * let galleryItems = [\r\n * // Access existing lightGallery items\r\n * // galleryItems are automatically generated internally from the gallery HTML markup\r\n * // or directly from galleryItems when dynamic gallery is used\r\n * ...plugin.galleryItems,\r\n * ...[\r\n * {\r\n * src: 'img/img-1.png',\r\n * thumb: 'img/thumb1.png',\r\n * },\r\n * ],\r\n * ];\r\n * plugin.updateSlides(\r\n * galleryItems,\r\n * plugin.index,\r\n * );\r\n *\r\n *\r\n * // Remove slides dynamically\r\n * galleryItems = JSON.parse(\r\n * JSON.stringify(updateSlideInstance.galleryItems),\r\n * );\r\n * galleryItems.shift();\r\n * updateSlideInstance.updateSlides(galleryItems, 1);\r\n * @see Demo\r\n */\r\n LightGallery.prototype.updateSlides = function (items, index) {\r\n if (this.index > items.length - 1) {\r\n this.index = items.length - 1;\r\n }\r\n if (items.length === 1) {\r\n this.index = 0;\r\n }\r\n if (!items.length) {\r\n this.closeGallery();\r\n return;\r\n }\r\n var currentSrc = this.galleryItems[index].src;\r\n this.galleryItems = items;\r\n this.updateControls();\r\n this.$inner.empty();\r\n this.currentItemsInDom = [];\r\n var _index = 0;\r\n // Find the current index based on source value of the slide\r\n this.galleryItems.some(function (galleryItem, itemIndex) {\r\n if (galleryItem.src === currentSrc) {\r\n _index = itemIndex;\r\n return true;\r\n }\r\n return false;\r\n });\r\n this.currentItemsInDom = this.organizeSlideItems(_index, -1);\r\n this.loadContent(_index, true);\r\n this.getSlideItem(_index).addClass('lg-current');\r\n this.index = _index;\r\n this.updateCurrentCounter(_index);\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n // Get gallery items based on multiple conditions\r\n LightGallery.prototype.getItems = function () {\r\n // Gallery items\r\n this.items = [];\r\n if (!this.settings.dynamic) {\r\n if (this.settings.selector === 'this') {\r\n this.items.push(this.el);\r\n }\r\n else if (this.settings.selector) {\r\n if (typeof this.settings.selector === 'string') {\r\n if (this.settings.selectWithin) {\r\n var selectWithin = $LG(this.settings.selectWithin);\r\n this.items = selectWithin\r\n .find(this.settings.selector)\r\n .get();\r\n }\r\n else {\r\n this.items = this.el.querySelectorAll(this.settings.selector);\r\n }\r\n }\r\n else {\r\n this.items = this.settings.selector;\r\n }\r\n }\r\n else {\r\n this.items = this.el.children;\r\n }\r\n return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);\r\n }\r\n else {\r\n return this.settings.dynamicEl || [];\r\n }\r\n };\r\n LightGallery.prototype.shouldHideScrollbar = function () {\r\n return (this.settings.hideScrollbar &&\r\n document.body === this.settings.container);\r\n };\r\n LightGallery.prototype.hideScrollbar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);\r\n var bodyRect = document.documentElement.getBoundingClientRect();\r\n var scrollbarWidth = window.innerWidth - bodyRect.width;\r\n $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');\r\n $LG(document.body).addClass('lg-overlay-open');\r\n };\r\n LightGallery.prototype.resetScrollBar = function () {\r\n if (!this.shouldHideScrollbar()) {\r\n return;\r\n }\r\n $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');\r\n $LG(document.body).removeClass('lg-overlay-open');\r\n };\r\n /**\r\n * Open lightGallery.\r\n * Open gallery with specific slide by passing index of the slide as parameter.\r\n * @category lGPublicMethods\r\n * @param {Number} index - index of the slide\r\n * @param {HTMLElement} element - Which image lightGallery should zoom from\r\n *\r\n * @example\r\n * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');\r\n * const dynamicGallery = lightGallery($dynamicGallery, {\r\n * dynamic: true,\r\n * dynamicEl: [\r\n * {\r\n * src: 'img/1.jpg',\r\n * thumb: 'img/thumb-1.jpg',\r\n * subHtml: '

    Image 1 title

    Image 1 descriptions.

    ',\r\n * },\r\n * ...\r\n * ],\r\n * });\r\n * $dynamicGallery.addEventListener('click', function () {\r\n * // Starts with third item.(Optional).\r\n * // This is useful if you want use dynamic mode with\r\n * // custom thumbnails (thumbnails outside gallery),\r\n * dynamicGallery.openGallery(2);\r\n * });\r\n *\r\n */\r\n LightGallery.prototype.openGallery = function (index, element) {\r\n var _this = this;\r\n if (index === void 0) { index = this.settings.index; }\r\n // prevent accidental double execution\r\n if (this.lgOpened)\r\n return;\r\n this.lgOpened = true;\r\n this.outer.removeClass('lg-hide-items');\r\n this.hideScrollbar();\r\n // Add display block, but still has opacity 0\r\n this.$container.addClass('lg-show');\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);\r\n this.currentItemsInDom = itemsToBeInsertedToDom;\r\n var items = '';\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n items = items + (\"
    \");\r\n });\r\n this.$inner.append(items);\r\n this.addHtml(index);\r\n var transform = '';\r\n this.mediaContainerPosition = this.getMediaContainerPosition();\r\n var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom;\r\n if (!this.settings.allowMediaOverlap) {\r\n this.setMediaContainerPosition(top, bottom);\r\n }\r\n var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;\r\n if (this.zoomFromOrigin && element) {\r\n this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);\r\n transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize);\r\n }\r\n if (!this.zoomFromOrigin || !transform) {\r\n this.outer.addClass(this.settings.startClass);\r\n this.getSlideItem(index).removeClass('lg-complete');\r\n }\r\n var timeout = this.settings.zoomFromOrigin\r\n ? 100\r\n : this.settings.backdropDuration;\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-components-open');\r\n }, timeout);\r\n this.index = index;\r\n this.LGel.trigger(lGEvents.beforeOpen);\r\n // add class lg-current to remove initial transition\r\n this.getSlideItem(index).addClass('lg-current');\r\n this.lGalleryOn = false;\r\n // Store the current scroll top value to scroll back after closing the gallery..\r\n this.prevScrollTop = $LG(window).scrollTop();\r\n setTimeout(function () {\r\n // Need to check both zoomFromOrigin and transform values as we need to set set the\r\n // default opening animation if user missed to add the lg-size attribute\r\n if (_this.zoomFromOrigin && transform) {\r\n var currentSlide_1 = _this.getSlideItem(index);\r\n currentSlide_1.css('transform', transform);\r\n setTimeout(function () {\r\n currentSlide_1\r\n .addClass('lg-start-progress lg-start-end-progress')\r\n .css('transition-duration', _this.settings.startAnimationDuration + 'ms');\r\n _this.outer.addClass('lg-zoom-from-image');\r\n });\r\n setTimeout(function () {\r\n currentSlide_1.css('transform', 'translate3d(0, 0, 0)');\r\n }, 100);\r\n }\r\n setTimeout(function () {\r\n _this.$backdrop.addClass('in');\r\n _this.$container.addClass('lg-show-in');\r\n }, 10);\r\n setTimeout(function () {\r\n if (_this.settings.trapFocus &&\r\n document.body === _this.settings.container) {\r\n _this.trapFocus();\r\n }\r\n }, _this.settings.backdropDuration + 50);\r\n // lg-visible class resets gallery opacity to 1\r\n if (!_this.zoomFromOrigin || !transform) {\r\n setTimeout(function () {\r\n _this.outer.addClass('lg-visible');\r\n }, _this.settings.backdropDuration);\r\n }\r\n // initiate slide function\r\n _this.slide(index, false, false, false);\r\n _this.LGel.trigger(lGEvents.afterOpen);\r\n });\r\n if (document.body === this.settings.container) {\r\n $LG('html').addClass('lg-on');\r\n }\r\n };\r\n /**\r\n * Note - Changing the position of the media on every slide transition creates a flickering effect.\r\n * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.\r\n * if you have dynamic captions for each media,\r\n * you can provide an appropriate height for the captions via allowMediaOverlap option\r\n */\r\n LightGallery.prototype.getMediaContainerPosition = function () {\r\n if (this.settings.allowMediaOverlap) {\r\n return {\r\n top: 0,\r\n bottom: 0,\r\n };\r\n }\r\n var top = this.$toolbar.get().clientHeight || 0;\r\n var subHtml = this.outer.find('.lg-components .lg-sub-html').get();\r\n var captionHeight = this.settings.defaultCaptionHeight ||\r\n (subHtml && subHtml.clientHeight) ||\r\n 0;\r\n var thumbContainer = this.outer.find('.lg-thumb-outer').get();\r\n var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;\r\n var bottom = thumbHeight + captionHeight;\r\n return {\r\n top: top,\r\n bottom: bottom,\r\n };\r\n };\r\n LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {\r\n if (top === void 0) { top = 0; }\r\n if (bottom === void 0) { bottom = 0; }\r\n this.$content.css('top', top + 'px').css('bottom', bottom + 'px');\r\n };\r\n LightGallery.prototype.hideBars = function () {\r\n var _this = this;\r\n // Hide controllers if mouse doesn't move for some period\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n if (_this.settings.hideBarsDelay > 0) {\r\n _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {\r\n _this.outer.removeClass('lg-hide-items');\r\n clearTimeout(_this.hideBarTimeout);\r\n // Timeout will be cleared on each slide movement also\r\n _this.hideBarTimeout = setTimeout(function () {\r\n _this.outer.addClass('lg-hide-items');\r\n }, _this.settings.hideBarsDelay);\r\n });\r\n _this.outer.trigger('mousemove.lg');\r\n }\r\n }, this.settings.showBarsAfter);\r\n };\r\n LightGallery.prototype.initPictureFill = function ($img) {\r\n if (this.settings.supportLegacyBrowser) {\r\n try {\r\n picturefill({\r\n elements: [$img.get()],\r\n });\r\n }\r\n catch (e) {\r\n console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\r\n LightGallery.prototype.counter = function () {\r\n if (this.settings.counter) {\r\n var counterHtml = \"
    \\n \" + (this.index + 1) + \" /\\n \" + this.galleryItems.length + \"
    \";\r\n this.outer.find(this.settings.appendCounterTo).append(counterHtml);\r\n }\r\n };\r\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\r\n LightGallery.prototype.addHtml = function (index) {\r\n var subHtml;\r\n var subHtmlUrl;\r\n if (this.galleryItems[index].subHtmlUrl) {\r\n subHtmlUrl = this.galleryItems[index].subHtmlUrl;\r\n }\r\n else {\r\n subHtml = this.galleryItems[index].subHtml;\r\n }\r\n if (!subHtmlUrl) {\r\n if (subHtml) {\r\n // get first letter of sub-html\r\n // if first letter starts with . or # get the html form the jQuery object\r\n var fL = subHtml.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n if (this.settings.subHtmlSelectorRelative &&\r\n !this.settings.dynamic) {\r\n subHtml = $LG(this.items)\r\n .eq(index)\r\n .find(subHtml)\r\n .first()\r\n .html();\r\n }\r\n else {\r\n subHtml = $LG(subHtml).first().html();\r\n }\r\n }\r\n }\r\n else {\r\n subHtml = '';\r\n }\r\n }\r\n if (this.settings.appendSubHtmlTo !== '.lg-item') {\r\n if (subHtmlUrl) {\r\n this.outer.find('.lg-sub-html').load(subHtmlUrl);\r\n }\r\n else {\r\n this.outer.find('.lg-sub-html').html(subHtml);\r\n }\r\n }\r\n else {\r\n var currentSlide = $LG(this.getSlideItemId(index));\r\n if (subHtmlUrl) {\r\n currentSlide.load(subHtmlUrl);\r\n }\r\n else {\r\n currentSlide.append(\"
    \" + subHtml + \"
    \");\r\n }\r\n }\r\n // Add lg-empty-html class if title doesn't exist\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n if (subHtml === '') {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .addClass('lg-empty-html');\r\n }\r\n else {\r\n this.outer\r\n .find(this.settings.appendSubHtmlTo)\r\n .removeClass('lg-empty-html');\r\n }\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSubHtml, {\r\n index: index,\r\n });\r\n };\r\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n * @todo preload not working for the first slide, Also, should work for the first and last slide as well\r\n */\r\n LightGallery.prototype.preload = function (index) {\r\n for (var i = 1; i <= this.settings.preload; i++) {\r\n if (i >= this.galleryItems.length - index) {\r\n break;\r\n }\r\n this.loadContent(index + i, false);\r\n }\r\n for (var j = 1; j <= this.settings.preload; j++) {\r\n if (index - j < 0) {\r\n break;\r\n }\r\n this.loadContent(index - j, false);\r\n }\r\n };\r\n LightGallery.prototype.getDummyImgStyles = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n margin-left: -\" + imageSize.width / 2 + \"px;\\n margin-top: -\" + imageSize.height / 2 + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getVideoContStyle = function (imageSize) {\r\n if (!imageSize)\r\n return '';\r\n return \"width:\" + imageSize.width + \"px;\\n height:\" + imageSize.height + \"px\";\r\n };\r\n LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {\r\n var $currentItem;\r\n if (!this.settings.dynamic) {\r\n $currentItem = $LG(this.items).eq(index);\r\n }\r\n if ($currentItem) {\r\n var _dummyImgSrc = void 0;\r\n if (!this.settings.exThumbImage) {\r\n _dummyImgSrc = $currentItem.find('img').first().attr('src');\r\n }\r\n else {\r\n _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);\r\n }\r\n if (!_dummyImgSrc)\r\n return '';\r\n var imgStyle = this.getDummyImgStyles(this.currentImageSize);\r\n var dummyImgContent = \"\";\r\n $currentSlide.addClass('lg-first-slide');\r\n this.outer.addClass('lg-first-slide-loading');\r\n return dummyImgContent;\r\n }\r\n return '';\r\n };\r\n LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n // Use the thumbnail as dummy image which will be resized to actual image size and\r\n // displayed on top of actual image\r\n var imgContent = '';\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n imgContent = this.getDummyImageContent($currentSlide, index, altAttr);\r\n }\r\n else {\r\n imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);\r\n }\r\n var imgMarkup = \" \" + imgContent + \"\";\r\n $currentSlide.prepend(imgMarkup);\r\n };\r\n LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {\r\n var mediaObject = $slide.find('.lg-object').first();\r\n if (utils.isImageLoaded(mediaObject.get()) ||\r\n isHTML5VideoWithoutPoster) {\r\n onLoad();\r\n }\r\n else {\r\n mediaObject.on('load.lg error.lg', function () {\r\n onLoad && onLoad();\r\n });\r\n mediaObject.on('error.lg', function () {\r\n onError && onError();\r\n });\r\n }\r\n };\r\n /**\r\n *\r\n * @param $el Current slide item\r\n * @param index\r\n * @param delay Delay is 0 except first time\r\n * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin\r\n * @param isFirstSlide\r\n */\r\n LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {\r\n var _this = this;\r\n this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {\r\n _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);\r\n }, function () {\r\n currentSlide.addClass('lg-complete lg-complete_');\r\n currentSlide.html('' +\r\n _this.settings.strings['mediaLoadingFailed'] +\r\n '');\r\n });\r\n };\r\n LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n // Adding delay for video slides without poster for better performance and user experience\r\n // Videos should start playing once once the gallery is completely loaded\r\n var _speed = isFirstSlide &&\r\n this.getSlideType(currentGalleryItem) === 'video' &&\r\n !currentGalleryItem.poster\r\n ? speed\r\n : 0;\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete lg-complete_');\r\n _this.LGel.trigger(lGEvents.slideItemLoad, {\r\n index: index,\r\n delay: delay || 0,\r\n isFirstSlide: isFirstSlide,\r\n });\r\n }, _speed);\r\n };\r\n LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {\r\n return !!(!this.lGalleryOn &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize);\r\n };\r\n // Add video slideInfo\r\n LightGallery.prototype.addSlideVideoInfo = function (items) {\r\n var _this = this;\r\n items.forEach(function (element, index) {\r\n element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index);\r\n if (element.__slideVideoInfo &&\r\n _this.settings.loadYouTubePoster &&\r\n !element.poster &&\r\n element.__slideVideoInfo.youtube) {\r\n element.poster = \"//img.youtube.com/vi/\" + element.__slideVideoInfo.youtube[1] + \"/maxresdefault.jpg\";\r\n }\r\n });\r\n };\r\n /**\r\n * Load slide content into slide.\r\n * This is used to load content into slides that is not visible too\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n */\r\n LightGallery.prototype.loadContent = function (index, rec) {\r\n var _this = this;\r\n var currentGalleryItem = this.galleryItems[index];\r\n var $currentSlide = $LG(this.getSlideItemId(index));\r\n var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;\r\n var src = currentGalleryItem.src;\r\n var video = currentGalleryItem.video;\r\n var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;\r\n if (currentGalleryItem.responsive) {\r\n var srcDyItms = currentGalleryItem.responsive.split(',');\r\n src = utils.getResponsiveSrc(srcDyItms) || src;\r\n }\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n var lgVideoStyle = '';\r\n var iframe = !!currentGalleryItem.iframe;\r\n var isFirstSlide = !this.lGalleryOn;\r\n // delay for adding complete class. it is 0 except first time.\r\n var delay = 0;\r\n if (isFirstSlide) {\r\n if (this.zoomFromOrigin && this.currentImageSize) {\r\n delay = this.settings.startAnimationDuration + 10;\r\n }\r\n else {\r\n delay = this.settings.backdropDuration + 10;\r\n }\r\n }\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);\r\n lgVideoStyle = this.getVideoContStyle(videoSize);\r\n }\r\n if (iframe) {\r\n var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (poster) {\r\n var dummyImg = '';\r\n var hasStartAnimation = isFirstSlide &&\r\n this.zoomFromOrigin &&\r\n this.currentImageSize;\r\n if (hasStartAnimation) {\r\n dummyImg = this.getDummyImageContent($currentSlide, index, '');\r\n }\r\n var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);\r\n $currentSlide.prepend(markup);\r\n }\r\n else if (videoInfo) {\r\n var markup = \"
    \";\r\n $currentSlide.prepend(markup);\r\n }\r\n else {\r\n this.setImgMarkup(src, $currentSlide, index);\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n this.initPictureFill($img);\r\n }\r\n }\r\n if (poster || videoInfo) {\r\n this.LGel.trigger(lGEvents.hasVideo, {\r\n index: index,\r\n src: src,\r\n html5Video: _html5Video,\r\n hasPoster: !!poster,\r\n });\r\n }\r\n this.LGel.trigger(lGEvents.afterAppendSlide, { index: index });\r\n if (this.lGalleryOn &&\r\n this.settings.appendSubHtmlTo === '.lg-item') {\r\n this.addHtml(index);\r\n }\r\n }\r\n // For first time add some delay for displaying the start animation.\r\n var _speed = 0;\r\n // Do not change the delay value because it is required for zoom plugin.\r\n // If gallery opened from direct url (hash) speed value should be 0\r\n if (delay && !$LG(document.body).hasClass('lg-from-hash')) {\r\n _speed = delay;\r\n }\r\n // Only for first slide and zoomFromOrigin is enabled\r\n if (this.isFirstSlideWithZoomAnimation()) {\r\n setTimeout(function () {\r\n $currentSlide\r\n .removeClass('lg-start-end-progress lg-start-progress')\r\n .removeAttr('style');\r\n }, this.settings.startAnimationDuration + 100);\r\n if (!$currentSlide.hasClass('lg-loaded')) {\r\n setTimeout(function () {\r\n if (_this.getSlideType(currentGalleryItem) === 'image') {\r\n var alt = currentGalleryItem.alt;\r\n var altAttr = alt ? 'alt=\"' + alt + '\"' : '';\r\n $currentSlide\r\n .find('.lg-img-wrap')\r\n .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));\r\n if (srcset || sources) {\r\n var $img = $currentSlide.find('.lg-object');\r\n _this.initPictureFill($img);\r\n }\r\n }\r\n if (_this.getSlideType(currentGalleryItem) === 'image' ||\r\n (_this.getSlideType(currentGalleryItem) === 'video' &&\r\n poster)) {\r\n _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);\r\n // load remaining slides once the slide is completely loaded\r\n _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n }, function () {\r\n _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);\r\n });\r\n }\r\n }, this.settings.startAnimationDuration + 100);\r\n }\r\n }\r\n // SLide content has been added to dom\r\n $currentSlide.addClass('lg-loaded');\r\n if (!this.isFirstSlideWithZoomAnimation() ||\r\n (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {\r\n this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));\r\n }\r\n // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling\r\n if ((!this.zoomFromOrigin || !this.currentImageSize) &&\r\n $currentSlide.hasClass('lg-complete_') &&\r\n !this.lGalleryOn) {\r\n setTimeout(function () {\r\n $currentSlide.addClass('lg-complete');\r\n }, this.settings.backdropDuration);\r\n }\r\n // Content loaded\r\n // Need to set lGalleryOn before calling preload function\r\n this.lGalleryOn = true;\r\n if (rec === true) {\r\n if (!$currentSlide.hasClass('lg-complete_')) {\r\n $currentSlide\r\n .find('.lg-object')\r\n .first()\r\n .on('load.lg error.lg', function () {\r\n _this.preload(index);\r\n });\r\n }\r\n else {\r\n this.preload(index);\r\n }\r\n }\r\n };\r\n /**\r\n * @desc Remove dummy image content and load next slides\r\n * Called only for the first time if zoomFromOrigin animation is enabled\r\n * @param index\r\n * @param $currentSlide\r\n * @param speed\r\n */\r\n LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {\r\n var _this = this;\r\n setTimeout(function () {\r\n $currentSlide.find('.lg-dummy-img').remove();\r\n $currentSlide.removeClass('lg-first-slide');\r\n _this.outer.removeClass('lg-first-slide-loading');\r\n _this.isDummyImageRemoved = true;\r\n _this.preload(index);\r\n }, speed + 300);\r\n };\r\n LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {\r\n var _this = this;\r\n if (numberOfItems === void 0) { numberOfItems = 0; }\r\n var itemsToBeInsertedToDom = [];\r\n // Minimum 2 items should be there\r\n var possibleNumberOfItems = Math.max(numberOfItems, 3);\r\n possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);\r\n var prevIndexItem = \"lg-item-\" + this.lgId + \"-\" + prevIndex;\r\n if (this.galleryItems.length <= 3) {\r\n this.galleryItems.forEach(function (_element, index) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + _this.lgId + \"-\" + index);\r\n });\r\n return itemsToBeInsertedToDom;\r\n }\r\n if (index < (this.galleryItems.length - 1) / 2) {\r\n for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index + idx + 1));\r\n }\r\n }\r\n else {\r\n for (var idx = index; idx <= this.galleryItems.length - 1 &&\r\n idx < index + possibleNumberOfItems / 2; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + idx);\r\n }\r\n var numberOfExistingItems = itemsToBeInsertedToDom.length;\r\n for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (index - idx - 1));\r\n }\r\n }\r\n if (this.settings.loop) {\r\n if (index === this.galleryItems.length - 1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + 0);\r\n }\r\n else if (index === 0) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + (this.galleryItems.length - 1));\r\n }\r\n }\r\n if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {\r\n itemsToBeInsertedToDom.push(\"lg-item-\" + this.lgId + \"-\" + prevIndex);\r\n }\r\n return itemsToBeInsertedToDom;\r\n };\r\n LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {\r\n var _this = this;\r\n var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);\r\n itemsToBeInsertedToDom.forEach(function (item) {\r\n if (_this.currentItemsInDom.indexOf(item) === -1) {\r\n _this.$inner.append(\"
    \");\r\n }\r\n });\r\n this.currentItemsInDom.forEach(function (item) {\r\n if (itemsToBeInsertedToDom.indexOf(item) === -1) {\r\n $LG(\"#\" + item).remove();\r\n }\r\n });\r\n return itemsToBeInsertedToDom;\r\n };\r\n /**\r\n * Get previous index of the slide\r\n */\r\n LightGallery.prototype.getPreviousSlideIndex = function () {\r\n var prevIndex = 0;\r\n try {\r\n var currentItemId = this.outer\r\n .find('.lg-current')\r\n .first()\r\n .attr('id');\r\n prevIndex = parseInt(currentItemId.split('-')[3]) || 0;\r\n }\r\n catch (error) {\r\n prevIndex = 0;\r\n }\r\n return prevIndex;\r\n };\r\n LightGallery.prototype.setDownloadValue = function (index) {\r\n if (this.settings.download) {\r\n var currentGalleryItem = this.galleryItems[index];\r\n var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||\r\n currentGalleryItem.downloadUrl === 'false';\r\n if (hideDownloadBtn) {\r\n this.outer.addClass('lg-hide-download');\r\n }\r\n else {\r\n var $download = this.getElementById('lg-download');\r\n this.outer.removeClass('lg-hide-download');\r\n $download.attr('href', currentGalleryItem.downloadUrl ||\r\n currentGalleryItem.src);\r\n if (currentGalleryItem.download) {\r\n $download.attr('download', currentGalleryItem.download);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {\r\n var _this = this;\r\n if (this.lGalleryOn) {\r\n previousSlideItem.addClass('lg-slide-progress');\r\n }\r\n setTimeout(function () {\r\n // remove all transitions\r\n _this.outer.addClass('lg-no-trans');\r\n _this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-next-slide');\r\n if (direction === 'prev') {\r\n //prevslide\r\n currentSlideItem.addClass('lg-prev-slide');\r\n previousSlideItem.addClass('lg-next-slide');\r\n }\r\n else {\r\n // next slide\r\n currentSlideItem.addClass('lg-next-slide');\r\n previousSlideItem.addClass('lg-prev-slide');\r\n }\r\n // give 50 ms for browser to add/remove class\r\n setTimeout(function () {\r\n _this.outer.find('.lg-item').removeClass('lg-current');\r\n currentSlideItem.addClass('lg-current');\r\n // reset all transitions\r\n _this.outer.removeClass('lg-no-trans');\r\n }, 50);\r\n }, this.lGalleryOn ? this.settings.slideDelay : 0);\r\n };\r\n /**\r\n * Goto a specific slide.\r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n * @param {String} direction - Direction of the slide(next/prev)\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // to go to 3rd slide\r\n * plugin.slide(2);\r\n *\r\n */\r\n LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {\r\n var _this = this;\r\n var prevIndex = this.getPreviousSlideIndex();\r\n this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);\r\n // Prevent multiple call, Required for hsh plugin\r\n if (this.lGalleryOn && prevIndex === index) {\r\n return;\r\n }\r\n var numberOfGalleryItems = this.galleryItems.length;\r\n if (!this.lgBusy) {\r\n if (this.settings.counter) {\r\n this.updateCurrentCounter(index);\r\n }\r\n var currentSlideItem = this.getSlideItem(index);\r\n var previousSlideItem_1 = this.getSlideItem(prevIndex);\r\n var currentGalleryItem = this.galleryItems[index];\r\n var videoInfo = currentGalleryItem.__slideVideoInfo;\r\n this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));\r\n this.setDownloadValue(index);\r\n if (videoInfo) {\r\n var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;\r\n var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);\r\n this.resizeVideoSlide(index, videoSize);\r\n }\r\n this.LGel.trigger(lGEvents.beforeSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: !!fromTouch,\r\n fromThumb: !!fromThumb,\r\n });\r\n this.lgBusy = true;\r\n clearTimeout(this.hideBarTimeout);\r\n this.arrowDisable(index);\r\n if (!direction) {\r\n if (index < prevIndex) {\r\n direction = 'prev';\r\n }\r\n else if (index > prevIndex) {\r\n direction = 'next';\r\n }\r\n }\r\n if (!fromTouch) {\r\n this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);\r\n }\r\n else {\r\n this.outer\r\n .find('.lg-item')\r\n .removeClass('lg-prev-slide lg-current lg-next-slide');\r\n var touchPrev = void 0;\r\n var touchNext = void 0;\r\n if (numberOfGalleryItems > 2) {\r\n touchPrev = index - 1;\r\n touchNext = index + 1;\r\n if (index === 0 && prevIndex === numberOfGalleryItems - 1) {\r\n // next slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n else if (index === numberOfGalleryItems - 1 &&\r\n prevIndex === 0) {\r\n // prev slide\r\n touchNext = 0;\r\n touchPrev = numberOfGalleryItems - 1;\r\n }\r\n }\r\n else {\r\n touchPrev = 0;\r\n touchNext = 1;\r\n }\r\n if (direction === 'prev') {\r\n this.getSlideItem(touchNext).addClass('lg-next-slide');\r\n }\r\n else {\r\n this.getSlideItem(touchPrev).addClass('lg-prev-slide');\r\n }\r\n currentSlideItem.addClass('lg-current');\r\n }\r\n // Do not put load content in set timeout as it needs to load immediately when the gallery is opened\r\n if (!this.lGalleryOn) {\r\n this.loadContent(index, true);\r\n }\r\n else {\r\n setTimeout(function () {\r\n _this.loadContent(index, true);\r\n // Add title if this.settings.appendSubHtmlTo === lg-sub-html\r\n if (_this.settings.appendSubHtmlTo !== '.lg-item') {\r\n _this.addHtml(index);\r\n }\r\n }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n setTimeout(function () {\r\n _this.lgBusy = false;\r\n previousSlideItem_1.removeClass('lg-slide-progress');\r\n _this.LGel.trigger(lGEvents.afterSlide, {\r\n prevIndex: prevIndex,\r\n index: index,\r\n fromTouch: fromTouch,\r\n fromThumb: fromThumb,\r\n });\r\n }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));\r\n }\r\n this.index = index;\r\n };\r\n LightGallery.prototype.updateCurrentCounter = function (index) {\r\n this.getElementById('lg-counter-current').html(index + 1 + '');\r\n };\r\n LightGallery.prototype.updateCounterTotal = function () {\r\n this.getElementById('lg-counter-all').html(this.galleryItems.length + '');\r\n };\r\n LightGallery.prototype.getSlideType = function (item) {\r\n if (item.__slideVideoInfo) {\r\n return 'video';\r\n }\r\n else if (item.iframe) {\r\n return 'iframe';\r\n }\r\n else {\r\n return 'image';\r\n }\r\n };\r\n LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {\r\n var distanceX = endCoords.pageX - startCoords.pageX;\r\n var distanceY = endCoords.pageY - startCoords.pageY;\r\n var allowSwipe = false;\r\n if (this.swipeDirection) {\r\n allowSwipe = true;\r\n }\r\n else {\r\n if (Math.abs(distanceX) > 15) {\r\n this.swipeDirection = 'horizontal';\r\n allowSwipe = true;\r\n }\r\n else if (Math.abs(distanceY) > 15) {\r\n this.swipeDirection = 'vertical';\r\n allowSwipe = true;\r\n }\r\n }\r\n if (!allowSwipe) {\r\n return;\r\n }\r\n var $currentSlide = this.getSlideItem(this.index);\r\n if (this.swipeDirection === 'horizontal') {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n // reset opacity and transition duration\r\n this.outer.addClass('lg-dragging');\r\n // move current slide\r\n this.setTranslate($currentSlide, distanceX, 0);\r\n // move next and prev slide with current slide\r\n var width = $currentSlide.get().offsetWidth;\r\n var slideWidthAmount = (width * 15) / 100;\r\n var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);\r\n this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);\r\n this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);\r\n }\r\n else if (this.swipeDirection === 'vertical') {\r\n if (this.settings.swipeToClose) {\r\n e === null || e === void 0 ? void 0 : e.preventDefault();\r\n this.$container.addClass('lg-dragging-vertical');\r\n var opacity = 1 - Math.abs(distanceY) / window.innerHeight;\r\n this.$backdrop.css('opacity', opacity);\r\n var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);\r\n this.setTranslate($currentSlide, 0, distanceY, scale, scale);\r\n if (Math.abs(distanceY) > 100) {\r\n this.outer\r\n .addClass('lg-hide-items')\r\n .removeClass('lg-components-open');\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {\r\n var _this = this;\r\n var distance;\r\n // keep slide animation for any mode while dragg/swipe\r\n if (this.settings.mode !== 'lg-slide') {\r\n this.outer.addClass('lg-slide');\r\n }\r\n // set transition duration\r\n setTimeout(function () {\r\n _this.$container.removeClass('lg-dragging-vertical');\r\n _this.outer\r\n .removeClass('lg-dragging lg-hide-items')\r\n .addClass('lg-components-open');\r\n var triggerClick = true;\r\n if (_this.swipeDirection === 'horizontal') {\r\n distance = endCoords.pageX - startCoords.pageX;\r\n var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);\r\n if (distance < 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToNextSlide(true);\r\n triggerClick = false;\r\n }\r\n else if (distance > 0 &&\r\n distanceAbs > _this.settings.swipeThreshold) {\r\n _this.goToPrevSlide(true);\r\n triggerClick = false;\r\n }\r\n }\r\n else if (_this.swipeDirection === 'vertical') {\r\n distance = Math.abs(endCoords.pageY - startCoords.pageY);\r\n if (_this.settings.closable &&\r\n _this.settings.swipeToClose &&\r\n distance > 100) {\r\n _this.closeGallery();\r\n return;\r\n }\r\n else {\r\n _this.$backdrop.css('opacity', 1);\r\n }\r\n }\r\n _this.outer.find('.lg-item').removeAttr('style');\r\n if (triggerClick &&\r\n Math.abs(endCoords.pageX - startCoords.pageX) < 5) {\r\n // Trigger click if distance is less than 5 pix\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.swipeDirection = undefined;\r\n });\r\n // remove slide class once drag/swipe is completed if mode is not slide\r\n setTimeout(function () {\r\n if (!_this.outer.hasClass('lg-dragging') &&\r\n _this.settings.mode !== 'lg-slide') {\r\n _this.outer.removeClass('lg-slide');\r\n }\r\n }, this.settings.speed + 100);\r\n };\r\n LightGallery.prototype.enableSwipe = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isMoved = false;\r\n var isSwiping = false;\r\n if (this.settings.enableSwipe) {\r\n this.$inner.on('touchstart.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if (($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) &&\r\n !_this.outer.hasClass('lg-zoomed') &&\r\n !_this.lgBusy &&\r\n e.touches.length === 1) {\r\n isSwiping = true;\r\n _this.touchAction = 'swipe';\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n }\r\n });\r\n this.$inner.on('touchmove.lg', function (e) {\r\n if (isSwiping &&\r\n _this.touchAction === 'swipe' &&\r\n e.touches.length === 1) {\r\n endCoords = {\r\n pageX: e.touches[0].pageX,\r\n pageY: e.touches[0].pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords, e);\r\n isMoved = true;\r\n }\r\n });\r\n this.$inner.on('touchend.lg', function (event) {\r\n if (_this.touchAction === 'swipe') {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n }\r\n else if (isSwiping) {\r\n var target = $LG(event.target);\r\n if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n }\r\n _this.touchAction = undefined;\r\n isSwiping = false;\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.enableDrag = function () {\r\n var _this = this;\r\n var startCoords = {};\r\n var endCoords = {};\r\n var isDraging = false;\r\n var isMoved = false;\r\n if (this.settings.enableDrag) {\r\n this.outer.on('mousedown.lg', function (e) {\r\n _this.dragOrSwipeEnabled = true;\r\n var $item = _this.getSlideItem(_this.index);\r\n if ($LG(e.target).hasClass('lg-item') ||\r\n $item.get().contains(e.target)) {\r\n if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {\r\n e.preventDefault();\r\n if (!_this.lgBusy) {\r\n _this.manageSwipeClass();\r\n startCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n isDraging = true;\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.outer.get().scrollLeft += 1;\r\n _this.outer.get().scrollLeft -= 1;\r\n // *\r\n _this.outer\r\n .removeClass('lg-grab')\r\n .addClass('lg-grabbing');\r\n _this.LGel.trigger(lGEvents.dragStart);\r\n }\r\n }\r\n }\r\n });\r\n $LG(window).on(\"mousemove.lg.global\" + this.lgId, function (e) {\r\n if (isDraging && _this.lgOpened) {\r\n isMoved = true;\r\n endCoords = {\r\n pageX: e.pageX,\r\n pageY: e.pageY,\r\n };\r\n _this.touchMove(startCoords, endCoords);\r\n _this.LGel.trigger(lGEvents.dragMove);\r\n }\r\n });\r\n $LG(window).on(\"mouseup.lg.global\" + this.lgId, function (event) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var target = $LG(event.target);\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords, startCoords, event);\r\n _this.LGel.trigger(lGEvents.dragEnd);\r\n }\r\n else if (_this.isPosterElement(target)) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n // Prevent execution on click\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n }\r\n };\r\n LightGallery.prototype.triggerPosterClick = function () {\r\n var _this = this;\r\n this.$inner.on('click.lg', function (event) {\r\n if (!_this.dragOrSwipeEnabled &&\r\n _this.isPosterElement($LG(event.target))) {\r\n _this.LGel.trigger(lGEvents.posterClick);\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageSwipeClass = function () {\r\n var _touchNext = this.index + 1;\r\n var _touchPrev = this.index - 1;\r\n if (this.settings.loop && this.galleryItems.length > 2) {\r\n if (this.index === 0) {\r\n _touchPrev = this.galleryItems.length - 1;\r\n }\r\n else if (this.index === this.galleryItems.length - 1) {\r\n _touchNext = 0;\r\n }\r\n }\r\n this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');\r\n if (_touchPrev > -1) {\r\n this.getSlideItem(_touchPrev).addClass('lg-prev-slide');\r\n }\r\n this.getSlideItem(_touchNext).addClass('lg-next-slide');\r\n };\r\n /**\r\n * Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.goToNextSlide();\r\n * @see Demo\r\n */\r\n LightGallery.prototype.goToNextSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index + 1 < this.galleryItems.length) {\r\n this.index++;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = 0;\r\n this.LGel.trigger(lGEvents.beforeNextSlide, {\r\n index: this.index,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'next');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-right-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-right-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Go to previous slides\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery({});\r\n * plugin.goToPrevSlide();\r\n * @see Demo\r\n *\r\n */\r\n LightGallery.prototype.goToPrevSlide = function (fromTouch) {\r\n var _this = this;\r\n var _loop = this.settings.loop;\r\n if (fromTouch && this.galleryItems.length < 3) {\r\n _loop = false;\r\n }\r\n if (!this.lgBusy) {\r\n if (this.index > 0) {\r\n this.index--;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else {\r\n if (_loop) {\r\n this.index = this.galleryItems.length - 1;\r\n this.LGel.trigger(lGEvents.beforePrevSlide, {\r\n index: this.index,\r\n fromTouch: fromTouch,\r\n });\r\n this.slide(this.index, !!fromTouch, false, 'prev');\r\n }\r\n else if (this.settings.slideEndAnimation && !fromTouch) {\r\n this.outer.addClass('lg-left-end');\r\n setTimeout(function () {\r\n _this.outer.removeClass('lg-left-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n LightGallery.prototype.keyPress = function () {\r\n var _this = this;\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (_this.lgOpened &&\r\n _this.settings.escKey === true &&\r\n e.keyCode === 27) {\r\n e.preventDefault();\r\n if (_this.settings.allowMediaOverlap &&\r\n _this.outer.hasClass('lg-can-toggle') &&\r\n _this.outer.hasClass('lg-components-open')) {\r\n _this.outer.removeClass('lg-components-open');\r\n }\r\n else {\r\n _this.closeGallery();\r\n }\r\n }\r\n if (_this.lgOpened && _this.galleryItems.length > 1) {\r\n if (e.keyCode === 37) {\r\n e.preventDefault();\r\n _this.goToPrevSlide();\r\n }\r\n if (e.keyCode === 39) {\r\n e.preventDefault();\r\n _this.goToNextSlide();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.arrow = function () {\r\n var _this = this;\r\n this.getElementById('lg-prev').on('click.lg', function () {\r\n _this.goToPrevSlide();\r\n });\r\n this.getElementById('lg-next').on('click.lg', function () {\r\n _this.goToNextSlide();\r\n });\r\n };\r\n LightGallery.prototype.arrowDisable = function (index) {\r\n // Disable arrows if settings.hideControlOnEnd is true\r\n if (!this.settings.loop && this.settings.hideControlOnEnd) {\r\n var $prev = this.getElementById('lg-prev');\r\n var $next = this.getElementById('lg-next');\r\n if (index + 1 === this.galleryItems.length) {\r\n $next.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $next.removeAttr('disabled').removeClass('disabled');\r\n }\r\n if (index === 0) {\r\n $prev.attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n else {\r\n $prev.removeAttr('disabled').removeClass('disabled');\r\n }\r\n }\r\n };\r\n LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {\r\n if (scaleX === void 0) { scaleX = 1; }\r\n if (scaleY === void 0) { scaleY = 1; }\r\n $el.css('transform', 'translate3d(' +\r\n xValue +\r\n 'px, ' +\r\n yValue +\r\n 'px, 0px) scale3d(' +\r\n scaleX +\r\n ', ' +\r\n scaleY +\r\n ', 1)');\r\n };\r\n LightGallery.prototype.mousewheel = function () {\r\n var _this = this;\r\n var lastCall = 0;\r\n this.outer.on('wheel.lg', function (e) {\r\n if (!e.deltaY || _this.galleryItems.length < 2) {\r\n return;\r\n }\r\n e.preventDefault();\r\n var now = new Date().getTime();\r\n if (now - lastCall < 1000) {\r\n return;\r\n }\r\n lastCall = now;\r\n if (e.deltaY > 0) {\r\n _this.goToNextSlide();\r\n }\r\n else if (e.deltaY < 0) {\r\n _this.goToPrevSlide();\r\n }\r\n });\r\n };\r\n LightGallery.prototype.isSlideElement = function (target) {\r\n return (target.hasClass('lg-outer') ||\r\n target.hasClass('lg-item') ||\r\n target.hasClass('lg-img-wrap'));\r\n };\r\n LightGallery.prototype.isPosterElement = function (target) {\r\n var playButton = this.getSlideItem(this.index)\r\n .find('.lg-video-play-button')\r\n .get();\r\n return (target.hasClass('lg-video-poster') ||\r\n target.hasClass('lg-video-play-button') ||\r\n (playButton && playButton.contains(target.get())));\r\n };\r\n /**\r\n * Maximize minimize inline gallery.\r\n * @category lGPublicMethods\r\n */\r\n LightGallery.prototype.toggleMaximize = function () {\r\n var _this = this;\r\n this.getElementById('lg-maximize').on('click.lg', function () {\r\n _this.$container.toggleClass('lg-inline');\r\n _this.refreshOnResize();\r\n });\r\n };\r\n LightGallery.prototype.invalidateItems = function () {\r\n for (var index = 0; index < this.items.length; index++) {\r\n var element = this.items[index];\r\n var $element = $LG(element);\r\n $element.off(\"click.lgcustom-item-\" + $element.attr('data-lg-id'));\r\n }\r\n };\r\n LightGallery.prototype.trapFocus = function () {\r\n var _this = this;\r\n this.$container.get().focus({\r\n preventScroll: true,\r\n });\r\n $LG(window).on(\"keydown.lg.global\" + this.lgId, function (e) {\r\n if (!_this.lgOpened) {\r\n return;\r\n }\r\n var isTabPressed = e.key === 'Tab' || e.keyCode === 9;\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n var focusableEls = utils.getFocusableElements(_this.$container.get());\r\n var firstFocusableEl = focusableEls[0];\r\n var lastFocusableEl = focusableEls[focusableEls.length - 1];\r\n if (e.shiftKey) {\r\n if (document.activeElement === firstFocusableEl) {\r\n lastFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n else {\r\n if (document.activeElement === lastFocusableEl) {\r\n firstFocusableEl.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n LightGallery.prototype.manageCloseGallery = function () {\r\n var _this = this;\r\n if (!this.settings.closable)\r\n return;\r\n var mousedown = false;\r\n this.getElementById('lg-close').on('click.lg', function () {\r\n _this.closeGallery();\r\n });\r\n if (this.settings.closeOnTap) {\r\n // If you drag the slide and release outside gallery gets close on chrome\r\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\r\n this.outer.on('mousedown.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target)) {\r\n mousedown = true;\r\n }\r\n else {\r\n mousedown = false;\r\n }\r\n });\r\n this.outer.on('mousemove.lg', function () {\r\n mousedown = false;\r\n });\r\n this.outer.on('mouseup.lg', function (e) {\r\n var target = $LG(e.target);\r\n if (_this.isSlideElement(target) && mousedown) {\r\n if (!_this.outer.hasClass('lg-dragging')) {\r\n _this.closeGallery();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n /**\r\n * Close lightGallery if it is opened.\r\n *\r\n * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery\r\n * @return returns the estimated time to close gallery completely including the close animation duration\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.closeGallery();\r\n *\r\n */\r\n LightGallery.prototype.closeGallery = function (force) {\r\n var _this = this;\r\n if (!this.lgOpened || (!this.settings.closable && !force)) {\r\n return 0;\r\n }\r\n this.LGel.trigger(lGEvents.beforeClose);\r\n if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {\r\n $LG(window).scrollTop(this.prevScrollTop);\r\n }\r\n var currentItem = this.items[this.index];\r\n var transform;\r\n if (this.zoomFromOrigin && currentItem) {\r\n var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;\r\n var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;\r\n var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);\r\n transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize);\r\n }\r\n if (this.zoomFromOrigin && transform) {\r\n this.outer.addClass('lg-closing lg-zoom-from-image');\r\n this.getSlideItem(this.index)\r\n .addClass('lg-start-end-progress')\r\n .css('transition-duration', this.settings.startAnimationDuration + 'ms')\r\n .css('transform', transform);\r\n }\r\n else {\r\n this.outer.addClass('lg-hide-items');\r\n // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true\r\n // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts\r\n this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n // Unbind all events added by lightGallery\r\n // @todo\r\n //this.$el.off('.lg.tm');\r\n this.destroyModules();\r\n this.lGalleryOn = false;\r\n this.isDummyImageRemoved = false;\r\n this.zoomFromOrigin = this.settings.zoomFromOrigin;\r\n clearTimeout(this.hideBarTimeout);\r\n this.hideBarTimeout = false;\r\n $LG('html').removeClass('lg-on');\r\n this.outer.removeClass('lg-visible lg-components-open');\r\n // Resetting opacity to 0 isd required as vertical swipe to close function adds inline opacity.\r\n this.$backdrop.removeClass('in').css('opacity', 0);\r\n var removeTimeout = this.zoomFromOrigin && transform\r\n ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)\r\n : this.settings.backdropDuration;\r\n this.$container.removeClass('lg-show-in');\r\n // Once the closign animation is completed and gallery is invisible\r\n setTimeout(function () {\r\n if (_this.zoomFromOrigin && transform) {\r\n _this.outer.removeClass('lg-zoom-from-image');\r\n }\r\n _this.$container.removeClass('lg-show');\r\n // Reset scrollbar\r\n _this.resetScrollBar();\r\n // Need to remove inline opacity as it is used in the stylesheet as well\r\n _this.$backdrop\r\n .removeAttr('style')\r\n .css('transition-duration', _this.settings.backdropDuration + 'ms');\r\n _this.outer.removeClass(\"lg-closing \" + _this.settings.startClass);\r\n _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');\r\n _this.$inner.empty();\r\n if (_this.lgOpened) {\r\n _this.LGel.trigger(lGEvents.afterClose, {\r\n instance: _this,\r\n });\r\n }\r\n if (_this.$container.get()) {\r\n _this.$container.get().blur();\r\n }\r\n _this.lgOpened = false;\r\n }, removeTimeout + 100);\r\n return removeTimeout + 100;\r\n };\r\n LightGallery.prototype.initModules = function () {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n module.init();\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly initiated\");\r\n }\r\n });\r\n };\r\n LightGallery.prototype.destroyModules = function (destroy) {\r\n this.plugins.forEach(function (module) {\r\n try {\r\n if (destroy) {\r\n module.destroy();\r\n }\r\n else {\r\n module.closeGallery && module.closeGallery();\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"lightGallery:- make sure lightGallery module is properly destroyed\");\r\n }\r\n });\r\n };\r\n /**\r\n * Refresh lightGallery with new set of children.\r\n *\r\n * @description This is useful to update the gallery when the child elements are changed without calling destroy method.\r\n *\r\n * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery\r\n * @see Demo\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * // Delete or add children, then call\r\n * plugin.refresh();\r\n *\r\n */\r\n LightGallery.prototype.refresh = function (galleryItems) {\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n if (galleryItems) {\r\n this.galleryItems = galleryItems;\r\n }\r\n else {\r\n this.galleryItems = this.getItems();\r\n }\r\n this.updateControls();\r\n this.openGalleryOnItemClick();\r\n this.LGel.trigger(lGEvents.updateSlides);\r\n };\r\n LightGallery.prototype.updateControls = function () {\r\n this.addSlideVideoInfo(this.galleryItems);\r\n this.updateCounterTotal();\r\n this.manageSingleSlideClassName();\r\n };\r\n LightGallery.prototype.destroyGallery = function () {\r\n this.destroyModules(true);\r\n if (!this.settings.dynamic) {\r\n this.invalidateItems();\r\n }\r\n $LG(window).off(\".lg.global\" + this.lgId);\r\n this.LGel.off('.lg');\r\n this.$container.remove();\r\n };\r\n /**\r\n * Destroy lightGallery.\r\n * Destroy lightGallery and its plugin instances completely\r\n *\r\n * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.\r\n * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.\r\n * You can use refresh method most of the times.\r\n * @category lGPublicMethods\r\n * @example\r\n * const plugin = lightGallery();\r\n * plugin.destroy();\r\n *\r\n */\r\n LightGallery.prototype.destroy = function () {\r\n var closeTimeout = this.closeGallery(true);\r\n if (closeTimeout) {\r\n setTimeout(this.destroyGallery.bind(this), closeTimeout);\r\n }\r\n else {\r\n this.destroyGallery();\r\n }\r\n return closeTimeout;\r\n };\r\n return LightGallery;\r\n}());\n\nfunction lightGallery(el, options) {\r\n return new LightGallery(el, options);\r\n}\n\nexport default lightGallery;\n","import * as i0 from '@angular/core';\nimport { Injectable, Component, Input, NgModule } from '@angular/core';\nimport lightGallery from 'lightgallery';\n\nclass LightgalleryService {\n constructor() { }\n}\nLightgalleryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLightgalleryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: function () { return []; } });\n\nconst LgMethods = {\n onAfterAppendSlide: 'lgAfterAppendSlide',\n onInit: 'lgInit',\n onHasVideo: 'lgHasVideo',\n onContainerResize: 'lgContainerResize',\n onUpdateSlides: 'lgUpdateSlides',\n onAfterAppendSubHtml: 'lgAfterAppendSubHtml',\n onBeforeOpen: 'lgBeforeOpen',\n onAfterOpen: 'lgAfterOpen',\n onSlideItemLoad: 'lgSlideItemLoad',\n onBeforeSlide: 'lgBeforeSlide',\n onAfterSlide: 'lgAfterSlide',\n onPosterClick: 'lgPosterClick',\n onDragStart: 'lgDragStart',\n onDragMove: 'lgDragMove',\n onDragEnd: 'lgDragEnd',\n onBeforeNextSlide: 'lgBeforeNextSlide',\n onBeforePrevSlide: 'lgBeforePrevSlide',\n onBeforeClose: 'lgBeforeClose',\n onAfterClose: 'lgAfterClose',\n onRotateLeft: 'lgRotateLeft',\n onRotateRight: 'lgRotateRight',\n onFlipHorizontal: 'lgFlipHorizontal',\n onFlipVertical: 'lgFlipVertical',\n};\nclass LightgalleryComponent {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n this.lgInitialized = false;\n this._elementRef = _elementRef;\n }\n ngAfterViewChecked() {\n if (!this.lgInitialized) {\n this.registerEvents();\n this.LG = lightGallery(this._elementRef.nativeElement, this.settings);\n this.lgInitialized = true;\n }\n }\n ngOnDestroy() {\n this.LG.destroy();\n this.lgInitialized = false;\n }\n registerEvents() {\n if (this.onAfterAppendSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterAppendSlide, ((event) => {\n this.onAfterAppendSlide &&\n this.onAfterAppendSlide(event.detail);\n }));\n }\n if (this.onInit) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onInit, ((event) => {\n this.onInit && this.onInit(event.detail);\n }));\n }\n if (this.onHasVideo) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onHasVideo, ((event) => {\n this.onHasVideo && this.onHasVideo(event.detail);\n }));\n }\n if (this.onContainerResize) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onContainerResize, ((event) => {\n this.onContainerResize &&\n this.onContainerResize(event.detail);\n }));\n }\n if (this.onAfterAppendSubHtml) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterAppendSubHtml, ((event) => {\n this.onAfterAppendSubHtml &&\n this.onAfterAppendSubHtml(event.detail);\n }));\n }\n if (this.onBeforeOpen) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeOpen, ((event) => {\n this.onBeforeOpen && this.onBeforeOpen(event.detail);\n }));\n }\n if (this.onAfterOpen) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterOpen, ((event) => {\n this.onAfterOpen && this.onAfterOpen(event.detail);\n }));\n }\n if (this.onSlideItemLoad) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onSlideItemLoad, ((event) => {\n this.onSlideItemLoad && this.onSlideItemLoad(event.detail);\n }));\n }\n if (this.onBeforeSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeSlide, ((event) => {\n this.onBeforeSlide && this.onBeforeSlide(event.detail);\n }));\n }\n if (this.onAfterSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterSlide, ((event) => {\n this.onAfterSlide && this.onAfterSlide(event.detail);\n }));\n }\n if (this.onPosterClick) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onPosterClick, ((event) => {\n this.onPosterClick && this.onPosterClick(event.detail);\n }));\n }\n if (this.onDragStart) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onDragStart, ((event) => {\n this.onDragStart && this.onDragStart(event.detail);\n }));\n }\n if (this.onDragMove) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onDragMove, ((event) => {\n this.onDragMove && this.onDragMove(event.detail);\n }));\n }\n if (this.onDragEnd) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onDragEnd, ((event) => {\n this.onDragEnd && this.onDragEnd(event.detail);\n }));\n }\n if (this.onBeforeNextSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeNextSlide, ((event) => {\n this.onBeforeNextSlide &&\n this.onBeforeNextSlide(event.detail);\n }));\n }\n if (this.onBeforePrevSlide) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforePrevSlide, ((event) => {\n this.onBeforePrevSlide &&\n this.onBeforePrevSlide(event.detail);\n }));\n }\n if (this.onBeforeClose) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onBeforeClose, ((event) => {\n this.onBeforeClose && this.onBeforeClose(event.detail);\n }));\n }\n if (this.onAfterClose) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onAfterClose, ((event) => {\n this.onAfterClose && this.onAfterClose(event.detail);\n }));\n }\n if (this.onRotateLeft) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onRotateLeft, ((event) => {\n this.onRotateLeft && this.onRotateLeft(event.detail);\n }));\n }\n if (this.onRotateRight) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onRotateRight, ((event) => {\n this.onRotateRight && this.onRotateRight(event.detail);\n }));\n }\n if (this.onFlipHorizontal) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onFlipHorizontal, ((event) => {\n this.onFlipHorizontal &&\n this.onFlipHorizontal(event.detail);\n }));\n }\n if (this.onFlipVertical) {\n this._elementRef.nativeElement.addEventListener(LgMethods.onFlipVertical, ((event) => {\n this.onFlipVertical && this.onFlipVertical(event.detail);\n }));\n }\n }\n}\nLightgalleryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });\nLightgalleryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.2\", type: LightgalleryComponent, selector: \"lightgallery\", inputs: { settings: \"settings\", onAfterAppendSlide: \"onAfterAppendSlide\", onInit: \"onInit\", onHasVideo: \"onHasVideo\", onContainerResize: \"onContainerResize\", onAfterAppendSubHtml: \"onAfterAppendSubHtml\", onBeforeOpen: \"onBeforeOpen\", onAfterOpen: \"onAfterOpen\", onSlideItemLoad: \"onSlideItemLoad\", onBeforeSlide: \"onBeforeSlide\", onAfterSlide: \"onAfterSlide\", onPosterClick: \"onPosterClick\", onDragStart: \"onDragStart\", onDragMove: \"onDragMove\", onDragEnd: \"onDragEnd\", onBeforeNextSlide: \"onBeforeNextSlide\", onBeforePrevSlide: \"onBeforePrevSlide\", onBeforeClose: \"onBeforeClose\", onAfterClose: \"onAfterClose\", onRotateLeft: \"onRotateLeft\", onRotateRight: \"onRotateRight\", onFlipHorizontal: \"onFlipHorizontal\", onFlipVertical: \"onFlipVertical\" }, ngImport: i0, template: '', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryComponent, decorators: [{\n type: Component,\n args: [{ selector: 'lightgallery', template: '' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { settings: [{\n type: Input\n }], onAfterAppendSlide: [{\n type: Input\n }], onInit: [{\n type: Input\n }], onHasVideo: [{\n type: Input\n }], onContainerResize: [{\n type: Input\n }], onAfterAppendSubHtml: [{\n type: Input\n }], onBeforeOpen: [{\n type: Input\n }], onAfterOpen: [{\n type: Input\n }], onSlideItemLoad: [{\n type: Input\n }], onBeforeSlide: [{\n type: Input\n }], onAfterSlide: [{\n type: Input\n }], onPosterClick: [{\n type: Input\n }], onDragStart: [{\n type: Input\n }], onDragMove: [{\n type: Input\n }], onDragEnd: [{\n type: Input\n }], onBeforeNextSlide: [{\n type: Input\n }], onBeforePrevSlide: [{\n type: Input\n }], onBeforeClose: [{\n type: Input\n }], onAfterClose: [{\n type: Input\n }], onRotateLeft: [{\n type: Input\n }], onRotateRight: [{\n type: Input\n }], onFlipHorizontal: [{\n type: Input\n }], onFlipVertical: [{\n type: Input\n }] } });\n\nclass LightgalleryModule {\n}\nLightgalleryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLightgalleryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryModule, declarations: [LightgalleryComponent], exports: [LightgalleryComponent] });\nLightgalleryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.2\", ngImport: i0, type: LightgalleryModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [LightgalleryComponent],\n imports: [],\n exports: [LightgalleryComponent],\n }]\n }] });\n\n/*\n * Public API Surface of lightgallery-angular\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { LightgalleryComponent, LightgalleryModule, LightgalleryService };\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 { Component, Input, OnInit } from '@angular/core';\r\nimport { Center } from 'src/app/models/ResponseModel';\r\nimport lgZoom from 'lightgallery/plugins/zoom';\r\nimport lgFullscreen from 'lightgallery/plugins/fullscreen';\r\nimport { BeforeSlideDetail } from 'lightgallery/lg-events';\r\n\r\n@Component({\r\n selector: 'app-organizationalchart',\r\n templateUrl: './organizationalchart.component.html',\r\n styleUrls: ['./organizationalchart.component.css']\r\n})\r\nexport class OrganizationalchartComponent implements OnInit {\r\n @Input() centerId!: number;\r\n @Input() center!: Center;\r\n @Input() centerOrgUrl : string;\r\n\r\n settings = {\r\n fourceAutoply: false,\r\n autoplay: false,\r\n thumbnail: false,\r\n speed: 400,\r\n scale: 1,\r\n keypress: true,\r\n rotateLeft: false,\r\n flipHorizontal: false,\r\n flipVertical: false,\r\n mobileSettings: { controls: true},\r\n plugins: [lgFullscreen, lgZoom],\r\n licenseKey: 'D4194FDD-48924833-A54AECA3-D6F8E646',\r\n };\r\n\r\n onBeforeSlide = (detail: BeforeSlideDetail): void => {\r\n const { index, prevIndex } = detail;\r\n console.log(index, prevIndex);\r\n };\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n

    \r\n {{center?.CenterMoreDetails}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"vision\r\n
    \r\n
    \r\n

    \r\n {{vision}}\r\n \r\n

    \r\n

    \r\n {{center?.centerVision}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"mission\r\n
    \r\n
    \r\n

    \r\n {{mission}}\r\n

    \r\n

    \r\n {{center?.centerMission}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"value\r\n
    \r\n
    \r\n

    \r\n {{ourvalue}}\r\n

    \r\n

    \r\n {{center?.CenterValues}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n\r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { Center } from 'src/app/models/ResponseModel';\r\n\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-vision',\r\n templateUrl: './vision.component.html',\r\n styleUrls: ['./vision.component.css']\r\n})\r\nexport class VisionComponent implements OnInit {\r\n\r\n @Input() center!: Center;\r\n destroy$: Subject = new Subject();\r\n ourvalue ='';\r\n mission = '';\r\n vision = '';\r\n constructor(private apiResources: ResourcesService) { \r\n }\r\n\r\n async ngOnInit() {\r\n this.ourvalue = await this.apiResources.getByKey(\"ourvalue\");\r\n this.mission = await this.apiResources.getByKey(\"mission\");\r\n this.vision = await this.apiResources.getByKey(\"vision\");\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

    \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
    \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

    \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

    Academic and Work Experience:

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Vice President for Strategy and Development at the Education and Training Evaluation Commission\r\n (ETEC).\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Deputy Governor for Capacity Building at the National Cybersecurity Authority (NCA).\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Supervisor of Planning and Information at Takaful Foundation.\r\n\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Vice Dean of the Deanship of e-Transaction and Communication at King Saud University (KSU).\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Associate Professor in the Computer Science Department at KSU.\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Assistant Professor in the Computer Science Department at KSU.\r\n\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    Qualifications:

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n PhD in Computer Science, Queen's University, Canada.\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n M.Sc. in Computer Science, Queen's University, Canada.\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Bachelor’s Degree in Computer Science, KSU.\r\n

    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { CenterLeaderList } from 'src/app/models/CenterLeaderList';\r\nimport { Center, CenterLeader } from 'src/app/models/ResponseModel';\r\n\r\n\r\n@Component({\r\n selector: 'app-ceo',\r\n templateUrl: './ceo.component.html',\r\n styleUrls: ['./ceo.component.css']\r\n})\r\n\r\nexport class CeoComponent implements OnInit {\r\n etecceo = '';\r\n etecLeaderName ='';\r\n etecLeaderPrefixId ='';\r\n content ='';\r\n _lang = '';\r\n\r\n constructor(private apiServices : ApiService, private centerService: ApiService, private actRoute: ActivatedRoute, private Title: Title\r\n , private apiResources: ResourcesService, private loading: LoadingService) {\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n async ngOnInit() {\r\n\r\n\r\n\r\n this.etecceo = await this.apiResources.getByKey(\"etecceo\");\r\n this.etecLeaderName = await this.apiResources.getByKey(\"etecLeaderName\");\r\n this.etecLeaderPrefixId = await this.apiResources.getByKey(\"etecLeaderPrefixId\");\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CenterLeaderList } from 'src/app/models/CenterLeaderList';\r\nimport { CenterList } from 'src/app/models/CenterList';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\n\r\nimport { Center, CenterLeader } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-etec',\r\n templateUrl: './etec.component.html',\r\n styleUrls: ['./etec.component.css']\r\n})\r\n\r\nexport class EtecComponent implements OnInit {\r\n\r\n centerId!: number;\r\n center: Center;\r\n centerOrgUrl: string;\r\n centerLeader: CenterLeader;\r\n activeTab = 'foundation';\r\n destroy$: Subject = new Subject();\r\n organizationalchart: string = '';\r\n etecceo: string = '';\r\n foundation: string = '';\r\n visionmission: string = '';\r\n etecboard: string = '';\r\n PageTitle: string = '';\r\n home: string = '';\r\n _lang = '';\r\n EtecFullName = 'هيئة تقويم التعليم والتدريب';\r\n\r\n constructor(private centerService: ApiService, private actRoute: ActivatedRoute, private Title: Title\r\n , private apiResources: ResourcesService, private loading: LoadingService) {\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n\r\n\r\n this.actRoute.params.subscribe(async params => {\r\n this.activeTab = params[\"id\"] == null ? 'foundation' : params[\"id\"];\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n\r\n if (params[\"id\"] === 'vision' || params[\"id\"] === 'organizationalstructure') {\r\n if (!this.center) {\r\n this.getCenter();\r\n }\r\n }\r\n }\r\n );\r\n }\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n /** Custom methods */\r\n getLeaders(centerId: number) {\r\n this.centerService.getList('centersleader').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: CenterLeaderList[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.CenterId.LookupId === this.centerId && element.ItemFields.IsCenterCEO == true) {\r\n var obj: CenterLeader = {\r\n centerLeaderId: element.ItemId,\r\n centerLeaderPosition: element.ItemFields.CentersLeaderPositionId?.LookupValue,\r\n centerLeaderPrefixId: element.ItemFields.CentersLeaderPrefixId?.LookupValue == null ? '' : element.ItemFields.CentersLeaderPrefixId?.LookupValue,\r\n centerLeaderName: element.ItemFields.CentersLeaderName,\r\n centerLeaderPortrait: element.ItemFields?.CentersLeaderPortrait.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n centerLeaderCurriculumVite: element.ItemFields.CentersLeaderCurriculumVitae,\r\n Sequence: element.ItemFields.Sequence,\r\n isActive: element.ItemFields.IsActive1,\r\n\r\n };\r\n this.centerLeader = obj;\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n\r\n getCenter() {\r\n this.centerService.getList('centers').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: CenterList[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields?.CenterCode?.toUpperCase() === 'ETEC') {\r\n var obj: Center = {\r\n centerId: element.ItemId,\r\n centerName: element.ItemFields.CenterName,\r\n centerDescription: element.ItemFields.CenterDescription?.toString(),\r\n centerVision: element.ItemFields.CenterVision?.toString(),\r\n centerVisionIcon: '',\r\n CenterValues: element.ItemFields.CenterValues,\r\n centerMission: element.ItemFields.CenterMission?.toString(),\r\n centerMissionIcon: '',\r\n CenterMoreDetails: element.ItemFields.CenterMoreDetails?.toString(),\r\n centerOrgnizationalStructureUrl: element.ItemFields?.CenterOrganizationalStructure?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl)!,\r\n centerMainImageCoverUrl: '',\r\n centerParenetId: -1,\r\n isActive: element.ItemFields.IsActive1\r\n };\r\n // this.center = obj;\r\n // this.centerId = Number(element.ItemFields.CenterId);\r\n this.center = obj;\r\n this.centerId = obj.centerId;\r\n this.centerOrgUrl = obj.centerOrgnizationalStructureUrl\r\n this.getLeaders(this.centerId);\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n getEtecName() {\r\n this.centerService.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'etec') {\r\n\r\n this.PageTitle = element.ItemFields.MenuName;\r\n this.Title.setTitle(this.EtecFullName + \" - \" + this.PageTitle);\r\n }\r\n\r\n });\r\n }\r\n );\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n this.foundation = await this.apiResources.getByKey(\"foundation\");\r\n this.visionmission = await this.apiResources.getByKey(\"visionmission\");\r\n this.etecboard = await this.apiResources.getByKey(\"etecboard\");\r\n this.organizationalchart = await this.apiResources.getByKey(\"organizationalchart\");\r\n this.etecceo = await this.apiResources.getByKey(\"etecceo\");\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n\r\n this.getEtecName();\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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 \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\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 { Directive, HostListener, Input, NgModule } from '@angular/core';\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\r\n */\r\nimport * as ɵngcc0 from '@angular/core';\nclass NgxPrintDirective {\r\n constructor() {\r\n this._printStyle = [];\r\n /**\r\n *\r\n *\r\n * \\@memberof NgxPrintDirective\r\n */\r\n this.useExistingCss = false;\r\n /**\r\n * A delay in milliseconds to force the print dialog to wait before opened. Default: 0\r\n *\r\n * \\@memberof NgxPrintDirective\r\n */\r\n this.printDelay = 0;\r\n /**\r\n *\r\n *\r\n * @return html for the given tag\r\n *\r\n * \\@memberof NgxPrintDirective\r\n */\r\n this._styleSheetFile = '';\r\n }\r\n /**\r\n *\r\n *\r\n * \\@memberof NgxPrintDirective\r\n * @param {?} values\r\n * @return {?}\r\n */\r\n set printStyle(values) {\r\n for (let key in values) {\r\n if (values.hasOwnProperty(key)) {\r\n this._printStyle.push((key + JSON.stringify(values[key])).replace(/['\"]+/g, ''));\r\n }\r\n }\r\n this.returnStyleValues();\r\n }\r\n /**\r\n *\r\n *\r\n * \\@memberof NgxPrintDirective\r\n * @return {?} the string that create the stylesheet which will be injected\r\n * later within tag.\r\n *\r\n * -join/replace to transform an array objects to css-styled string\r\n *\r\n */\r\n returnStyleValues() {\r\n return ``;\r\n }\r\n /**\r\n * \\@memberof NgxPrintDirective\r\n * @param {?} cssList\r\n * @return {?}\r\n */\r\n set styleSheetFile(cssList) {\r\n /** @type {?} */\r\n let linkTagFn = (/**\r\n * @param {?} cssFileName\r\n * @return {?}\r\n */\r\n function (cssFileName) {\r\n return ``;\r\n });\r\n if (cssList.indexOf(',') !== -1) {\r\n /** @type {?} */\r\n const valueArr = cssList.split(',');\r\n for (let val of valueArr) {\r\n this._styleSheetFile = this._styleSheetFile + linkTagFn(val);\r\n }\r\n }\r\n else {\r\n this._styleSheetFile = linkTagFn(cssList);\r\n }\r\n }\r\n /**\r\n * @private\r\n * @return {?} string which contains the link tags containing the css which will\r\n * be injected later within tag.\r\n *\r\n */\r\n returnStyleSheetLinkTags() {\r\n return this._styleSheetFile;\r\n }\r\n /**\r\n * @private\r\n * @param {?} tag\r\n * @return {?}\r\n */\r\n getElementTag(tag) {\r\n /** @type {?} */\r\n const html = [];\r\n /** @type {?} */\r\n const elements = document.getElementsByTagName(tag);\r\n for (let index = 0; index < elements.length; index++) {\r\n html.push(elements[index].outerHTML);\r\n }\r\n return html.join('\\r\\n');\r\n }\r\n /**\r\n *\r\n * @private\r\n * @param {?} data the html element collection to save defaults to\r\n *\r\n * @return {?}\r\n */\r\n getFormData(data) {\r\n for (var i = 0; i < data.length; i++) {\r\n data[i].defaultValue = data[i].value;\r\n if (data[i].checked) {\r\n data[i].defaultChecked = true;\r\n }\r\n }\r\n }\r\n /**\r\n * @private\r\n * @return {?} html section to be printed along with some associated inputs\r\n *\r\n */\r\n getHtmlContents() {\r\n /** @type {?} */\r\n let printContents = document.getElementById(this.printSectionId);\r\n /** @type {?} */\r\n let innards = printContents.getElementsByTagName('input');\r\n this.getFormData(innards);\r\n /** @type {?} */\r\n let txt = printContents.getElementsByTagName('textarea');\r\n this.getFormData(txt);\r\n return printContents.innerHTML;\r\n }\r\n /**\r\n *\r\n *\r\n * \\@memberof NgxPrintDirective\r\n * @return {?}\r\n */\r\n print() {\r\n /** @type {?} */\r\n let printContents;\r\n /** @type {?} */\r\n let popupWin;\r\n /** @type {?} */\r\n let styles = '';\r\n /** @type {?} */\r\n let links = '';\r\n /** @type {?} */\r\n const baseTag = this.getElementTag('base');\r\n if (this.useExistingCss) {\r\n styles = this.getElementTag('style');\r\n links = this.getElementTag('link');\r\n }\r\n printContents = this.getHtmlContents();\r\n popupWin = window.open(\"\", \"_blank\", \"top=0,left=0,height=auto,width=auto\");\r\n popupWin.document.open();\r\n popupWin.document.write(`\r\n \r\n \r\n ${this.printTitle ? this.printTitle : \"\"}\r\n ${baseTag}\r\n ${this.returnStyleValues()}\r\n ${this.returnStyleSheetLinkTags()}\r\n ${styles}\r\n ${links}\r\n \r\n \r\n ${printContents}\r\n \r\n \r\n `);\r\n popupWin.document.close();\r\n }\r\n}\nNgxPrintDirective.ɵfac = function NgxPrintDirective_Factory(t) { return new (t || NgxPrintDirective)(); };\nNgxPrintDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgxPrintDirective, selectors: [[\"button\", \"ngxPrint\", \"\"]], hostBindings: function NgxPrintDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgxPrintDirective_click_HostBindingHandler() { return ctx.print(); });\n } }, inputs: { useExistingCss: \"useExistingCss\", printDelay: \"printDelay\", printStyle: \"printStyle\", styleSheetFile: \"styleSheetFile\", printSectionId: \"printSectionId\", printTitle: \"printTitle\" } });\r\nNgxPrintDirective.propDecorators = {\r\n printSectionId: [{ type: Input }],\r\n printTitle: [{ type: Input }],\r\n useExistingCss: [{ type: Input }],\r\n printDelay: [{ type: Input }],\r\n printStyle: [{ type: Input }],\r\n styleSheetFile: [{ type: Input }],\r\n print: [{ type: HostListener, args: ['click',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxPrintDirective, [{\n type: Directive,\n args: [{\n selector: \"button[ngxPrint]\"\n }]\n }], function () { return []; }, { useExistingCss: [{\n type: Input\n }], printDelay: [{\n type: Input\n }], printStyle: [{\n type: Input\n }], styleSheetFile: [{\n type: Input\n }], \n /**\n *\n *\n * \\@memberof NgxPrintDirective\n * @return {?}\n */\n print: [{\n type: HostListener,\n args: ['click']\n }], printSectionId: [{\n type: Input\n }], printTitle: [{\n type: Input\n }] }); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\r\n */\r\nclass NgxPrintModule {\r\n}\nNgxPrintModule.ɵfac = function NgxPrintModule_Factory(t) { return new (t || NgxPrintModule)(); };\nNgxPrintModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxPrintModule });\nNgxPrintModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxPrintModule, [{\n type: NgModule,\n args: [{\n declarations: [NgxPrintDirective],\n imports: [],\n exports: [NgxPrintDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxPrintModule, { declarations: [NgxPrintDirective], exports: [NgxPrintDirective] }); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\r\n */\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\r\n */\n\nexport { NgxPrintDirective, NgxPrintModule };\n\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 {{ newsDetails?.newsDate |\r\n date:'yyyy-MM-dd'}}\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n

    \r\n {{ newsDetails?.newsTitle }}\r\n

    \r\n \r\n \r\n
    \r\n \"News\r\n \r\n
    \r\n \r\n

    \r\n

    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    0\">\r\n
    \r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { Title, Meta } from '@angular/platform-browser';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\nimport { NewsList } from 'src/app/models/NewsList';\r\nimport { News } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { StringLiteralType } from 'typescript';\r\n\r\n@Component({\r\n selector: 'app-news',\r\n templateUrl: './news.component.html',\r\n styleUrls: ['./news.component.css']\r\n})\r\nexport class NewsComponent implements OnInit {\r\n destroy$: Subject = new Subject();\r\n NewsCode: string;\r\n newsDetails: News;\r\n keyword: string;\r\n AllNews: News[] = [];\r\n relatedNews: News[] = [];\r\n more: string = '';\r\n relatednews: string = '';\r\n PageTitle: string = '';\r\n news: string = '';\r\n home: string = '';\r\n _lang = '';\r\n\r\n constructor(private centerService: ApiService, private actRoute: ActivatedRoute\r\n , private Title: Title, private Meta: Meta, private apiRersources: ResourcesService\r\n ,private loading: LoadingService\r\n , private apiResources: ResourcesService) {\r\n\r\n this.actRoute.params.subscribe(async params => {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if(isRoute){\r\n window.location.reload();\r\n }\r\n \r\n this.NewsCode = params[\"id\"];\r\n this.AllNews = [];\r\n this.relatedNews = [];\r\n \r\n this.getNewsById();\r\n this.getRelatedNews();\r\n\r\n });\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n /** Custom methods */\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n}\r\n\r\n cloneObj(data: NewsList): News {\r\n return ({\r\n newsId: data.ItemId,\r\n newsDate: data.ItemFields.NewsDate,\r\n newsTitle: data.ItemFields.NewsTitle,\r\n newsDetails: this.cutString(data.ItemFields.NewsDetails),\r\n newsUrl: data.ItemFields?.NewsFile?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImage: data.ItemFields?.NewsImage?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImageThumbnail: data.ItemFields?.NewsImageThumbnail?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsCode: data.ItemFields.NewsCode,\r\n isActive: data.ItemFields.IsActive1,\r\n NewsKeyword: ''\r\n } as News)\r\n }\r\n/** Custom methods */\r\n getNewsById() {\r\n \r\n this.centerService.GetListsItemsFilterd('news', 0, false, 'NewsCode', this.NewsCode ).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: NewsList[]) => {\r\n var obj: News = {\r\n newsId: data[0].ItemFields.ID,\r\n newsDate: data[0].ItemFields.NewsDate,\r\n newsTitle: data[0].ItemFields.NewsTitle,\r\n newsDetails: data[0].ItemFields.NewsDetails?.replace(':', ':').replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n newsUrl: data[0].ItemFields?.NewsFile?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImage: data[0].ItemFields?.NewsImage?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImageThumbnail: data[0].ItemFields?.NewsImageThumbnail?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsKeyword: data[0].ItemFields.NewsKeyword,\r\n NewsCode: data[0].ItemFields.NewsCode,\r\n isActive: data[0].ItemFields.IsActive1\r\n }\r\n this.Title.setTitle(obj.newsTitle);\r\n this.Meta.updateTag({ name: 'keywords', content: obj.NewsKeyword });\r\n //this.PageTitle = obj.newsTitle;\r\n this.newsDetails = obj;\r\n //this.keyword = (obj.NewsKeyword?.toString() === null ? '' : obj.NewsKeyword?.toString() );\r\n }\r\n );\r\n }\r\n\r\n getRelatedNews() {\r\n\r\n this.centerService.getList('news').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: NewsList[]) => {\r\n data.forEach(element => {\r\n var obj: News = {\r\n newsId: Number(element.ItemFields.ID),\r\n newsDate: element.ItemFields.NewsDate,\r\n newsTitle: element.ItemFields.NewsTitle,\r\n newsDetails: this.cutString(element.ItemFields.NewsDetails),\r\n newsUrl: element.ItemFields?.NewsFile?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImage: element.ItemFields?.NewsImage?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImageThumbnail: element.ItemFields?.NewsImageThumbnail?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsKeyword: element.ItemFields?.NewsKeyword,\r\n NewsCode: element.ItemFields.NewsCode,\r\n isActive: element.ItemFields.IsActive1,\r\n };\r\n\r\n this.AllNews.push(obj);\r\n });\r\n\r\n this.AllNews.sort((a: any, b: any) => {\r\n return new Date(b.newsDate) - new Date(a.newsDate);\r\n });\r\n this.relatedNews = this.AllNews.filter(x => x.NewsKeyword?.toUpperCase().indexOf(this.newsDetails?.newsTitle) && x.newsId !== Number(this.newsDetails.newsId));\r\n\r\n this.relatedNews.slice(0, 3);\r\n }\r\n );\r\n }\r\n\r\n updateTitle(title: string) {\r\n this.Title.setTitle(title);\r\n }\r\n\r\n private cutString(str: string) {\r\n var output = ' ';\r\n var data = str.split(' ');\r\n var i = 0;\r\n for (var i = 0; i < 25; i++) {\r\n\r\n output = output.concat(data[i], ' ');\r\n };\r\n return output;\r\n }\r\n\r\n/** Component events */\r\n async ngOnInit() {\r\n\r\n this.more = await this.apiRersources.getByKey(\"more\");\r\n this.relatednews = await this.apiRersources.getByKey(\"relatednews\");\r\n this.home = await this.apiRersources.getByKey(\"home\");\r\n\r\n this.centerService.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'mediacenter') {\r\n this.PageTitle = element.ItemFields.MenuName;\r\n }\r\n if (element.ItemFields.Title.toLowerCase() === 'new') {\r\n this.news = element.ItemFields.MenuName;\r\n }\r\n\r\n\r\n });\r\n }\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\n\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-contact-us',\r\n templateUrl: './contact-us.component.html',\r\n styleUrls: ['./contact-us.component.css']\r\n})\r\n\r\nexport class ContactUsComponent implements OnInit {\r\n // private map: google.maps.Map\r\n captcha: string;\r\n email: string;\r\n firstName: string;\r\n subject: string;\r\n message: string;\r\n submitted: boolean;\r\n looktoserveyou = '';\r\n unfiedNumber = '';\r\n mailAdderess = '';\r\n workinghoursCU = '';\r\n USupportPlatform = '';\r\n twittrEtec = '';\r\n ETECemail ='';\r\n workingDay = '';\r\n responseTime = '';\r\n immediate = '';\r\n contactNumber = '';\r\n platform = '';\r\n locationName = '';\r\n serviceAvailability = '';\r\n BeneficiarySupport = '';\r\n home = '';\r\n PageTitle: string = '';\r\n workinghours = '';\r\n EtecFullName = 'هيئة تقويم التعليم والتدريب';\r\n destroy$: Subject = new Subject();\r\n\r\n\r\n constructor(private apiServices: ApiService, public Title: Title, private apiResources: ResourcesService\r\n , private loading: LoadingService\r\n , private actRoute: ActivatedRoute) {\r\n\r\n this.actRoute.params.subscribe(async params => {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n });\r\n this.captcha = \"\";\r\n this.submitted = false;\r\n\r\n this.updateTitle();\r\n }\r\n\r\n /** Custom methods */\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n updateTitle() {\r\n\r\n this.apiServices.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'contactus') {\r\n this.PageTitle = element.ItemFields.MenuName;\r\n\r\n }\r\n this.Title.setTitle(this.EtecFullName + \" - \" + this.PageTitle);\r\n });\r\n }\r\n );\r\n }\r\n\r\n resolved(captchaResponse: string) {\r\n this.captcha = captchaResponse;\r\n }\r\n\r\n send() {\r\n this.submitted = true;\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n\r\n this.unfiedNumber = await this.apiResources.getByKey(\"unfiedNumber\");\r\n this.mailAdderess = await this.apiResources.getByKey(\"mailadderess\");\r\n this.locationName = await this.apiResources.getByKey(\"locationname\");\r\n this.BeneficiarySupport = await this.apiResources.getByKey(\"BeneficiarySupport\");\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n this.email = await this.apiResources.getByKey(\"email\");\r\n this.workinghoursCU = await this.apiResources.getByKey(\"workinghoursCU\");\r\n this.looktoserveyou = await this.apiResources.getByKey(\"looktoserveyou\");\r\n this.EtecFullName = await this.apiResources.getByKey(\"etecfullname\");\r\n this.workinghours = await this.apiResources.getByKey(\"workinghours\");\r\n this.serviceAvailability = await this.apiResources.getByKey(\"serviceAvailability\");\r\n this.platform = await this.apiResources.getByKey(\"platform\");\r\n this.contactNumber = await this.apiResources.getByKey(\"contactNumber\");\r\n this.USupportPlatform = await this.apiResources.getByKey(\"USupportPlatform\");\r\n this.twittrEtec = await this.apiResources.getByKey(\"twittrEtec\");\r\n this.responseTime = await this.apiResources.getByKey(\"responseTime\");\r\n this.immediate = await this.apiResources.getByKey(\"immediate\");\r\n this.ETECemail = await this.apiResources.getByKey(\"ETECemail\");\r\n this.workingDay = await this.apiResources.getByKey(\"workingDay\");\r\n \r\n \r\n /* let loader = new Loader({\r\n apiKey: \"AIzaSyDV1Vrxmr6xtiC0wrQ9sc7u8fGz2gO34A8\"\r\n });\r\n \r\n loader.load().then(() => {\r\n \r\n const location = { lat: 24.728995, lng: 46.597157 }\r\n \r\n const marker = new google.maps.Marker({\r\n position: location,\r\n map: this.map,\r\n });\r\n })*/\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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
    \r\n
    \r\n
    \r\n

    \r\n
    \r\n
    \r\n \r\n

    \r\n\r\n

    \r\n

    \r\n {{responseTime}} {{immediate}}. \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 {{responseTime}} 2 {{workingDay}} \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n
    \r\n
    \r\n \r\n {{ETECemail}}\r\n \r\n\r\n

    \r\n \r\n

    \r\n

    \r\n {{responseTime}} 2 {{workingDay}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {{platform}}\r\n \r\n\r\n

    \r\n
    \r\n
    \r\n {{twittrEtec}}\r\n\r\n

    \r\n \r\n

    \r\n

    \r\n {{responseTime}} 6 {{workingDay}}\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
    \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 {{item.MCFileName}}\r\n \r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{item.MCFileName}}
    \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

    {{showCount< Infographics.length?showCount:Infographics.length }}\r\n {{servicesof}} {{Infographics.length}}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\n//import { MatSelectChange } from '@angular/material/select';\r\nimport {NgbModal, ModalDismissReasons} from '@ng-bootstrap/ng-bootstrap';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Infographiclist } from 'src/app/models/infographiclist';\r\n \r\nimport { Infographic } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\n// import lightGallery from 'lightgallery';\r\n// import lgZoom from 'lightgallery/plugins/zoom';\r\n// import { BeforeSlideDetail } from 'lightgallery/lg-events';\r\nimport lgZoom from 'lightgallery/plugins/zoom';\r\nimport lgFullscreen from 'lightgallery/plugins/fullscreen';\r\nimport { BeforeSlideDetail } from 'lightgallery/lg-events';\r\n\r\n@Component({\r\n selector: 'app-infographic',\r\n templateUrl: './infographic.component.html',\r\n styleUrls: ['./infographic.component.css']\r\n})\r\nexport class InfographicComponent implements OnInit {\r\n\r\n title = 'appBootstrap';\r\n closeResult: string;\r\n\r\n Infographics: Infographic[] = [] ;\r\n destroy$: Subject = new Subject();\r\n searchText:any = '';\r\n selectedValue: string;\r\n divid='1';\r\n InfographicsSearch: Infographic[] = [] ;\r\n more : string = '';\r\n showCount = 6;\r\n ascalph: string = '';\r\n descalph: string = '';\r\n ascdatealph: string = '';\r\n datedescalph: string = '';\r\n orderby: string = '';\r\n servicesof: string = '';\r\n show : string = '';\r\n searchtxt : string = '';\r\n\r\n // name = \"Angular \";\r\n // settings = {\r\n // counter: false,\r\n // plugins: [lgZoom]\r\n // };\r\n\r\n // onBeforeSlide = (detail: BeforeSlideDetail): void => {\r\n // const { index, prevIndex } = detail;\r\n // console.log(index, prevIndex);\r\n // };\r\n\r\n // start settings\r\n settings = {\r\n // counter: false,\r\n //actualSize: true,\r\n // infiniteZoom :true,\r\n // // height: '100%',\r\n // // width: '100%',\r\n // zoomFromOrigin: true,\r\n // zoomPosition: 'center',\r\n // scale:10,\r\n\r\n //loop: true,\r\n fourceAutoply: false,\r\n autoplay: false,\r\n thumbnail: false,\r\n speed: 400,\r\n\r\n // showZoomInOutIcons : true,\r\n scale: 1,\r\n keypress: true,\r\n rotateLeft: false,\r\n flipHorizontal: false,\r\n flipVertical: false,\r\n mobileSettings: { controls: true},\r\n plugins: [lgFullscreen, lgZoom],\r\n licenseKey: 'D4194FDD-48924833-A54AECA3-D6F8E646',\r\n };\r\n \r\n onBeforeSlide = (detail: BeforeSlideDetail): void => {\r\n const { index, prevIndex } = detail;\r\n console.log(index, prevIndex);\r\n };\r\n\r\n constructor(private apiServices: ApiService,private modalService: NgbModal, private apiResources: ResourcesService) {}\r\n\r\n /** Custom methods */\r\n open(content :any) {\r\n this.modalService.open(content, {ariaLabelledBy: 'modal-basic-title'}).result.then((result) => {\r\n this.closeResult = `Closed with: ${result}`;\r\n\r\n }, (reason) => {\r\n this.closeResult = `Dismissed ${this.getDismissReason(reason)}`;\r\n });\r\n\r\n }\r\n\r\n private getDismissReason(reason: any): string {\r\n\r\n if (reason === ModalDismissReasons.ESC) {\r\n\r\n return 'by pressing ESC';\r\n\r\n } else if (reason === ModalDismissReasons.BACKDROP_CLICK) {\r\n\r\n return 'by clicking on a backdrop';\r\n\r\n } else {\r\n\r\n return `with: ${reason}`;\r\n }\r\n\r\n }\r\n\r\n getMediaCenterFile(){\r\n\r\n this.apiServices.getListTopN('MediaCenterFiles',0,false,'MediaCenterCategory','الإنفوقرافيك').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Infographiclist[]) => {\r\n data.forEach(element => {\r\n var obj: Infographic = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n MediaCenterCategory: element.ItemFields.MediaCenterCategory.LookupValue,\r\n MCFileName : element.ItemFields.MCFileName,\r\n MCFileLink: element.ItemFields.MCFileLink?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n MCFileThumbnails: element.ItemFields.MCFileThumbnails?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n MCFilesDetails : element.ItemFields.MCFilesDetails,\r\n isActive: element.ItemFields.IsActive1,\r\n MediaOrder: element.ItemFields?.MediaOrder\r\n };\r\n\r\n this.Infographics.push(obj);\r\n });\r\n this.InfographicsSearch = this.Infographics;\r\n this.Infographics.sort((a, b) => {\r\n // return new Date(b.newsDate) - new Date(a.newsDate);\r\n return b.MediaOrder - a.MediaOrder;\r\n });\r\n }\r\n );\r\n }\r\n\r\n showItems(SelectValue : any){\r\n\r\n var optionSelected = SelectValue.target.value.split('-');\r\n this.Infographics.splice(0, this.Infographics.length);\r\n\r\n this.apiServices.getListOrder('MediaCenterFiles',0,optionSelected[1],optionSelected[0]).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Infographiclist[]) => {\r\n data.forEach(element => {\r\n var obj: Infographic = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n MediaCenterCategory: element.ItemFields.MediaCenterCategory.LookupValue,\r\n MCFileName : element.ItemFields.MCFileName,\r\n MCFileLink: element.ItemFields.MCFileLink?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n MCFileThumbnails: element.ItemFields.MCFileThumbnails?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n MCFilesDetails : element.ItemFields.MCFilesDetails,\r\n isActive: element.ItemFields.IsActive1,\r\n MediaOrder: element.ItemFields?.MediaOrder\r\n };\r\n \r\n this.Infographics.push(obj);\r\n });\r\n this.InfographicsSearch = this.Infographics;\r\n }\r\n );\r\n }\r\n\r\n // changeRatio(event: MatSelectChange) {\r\n // var optionSelected = event.value.split('-');\r\n // this.Infographics.splice(0, this.Infographics.length);\r\n // this.apiServices.getListTopN('MediaCenterFiles',0,optionSelected[1],optionSelected[0],'').pipe(takeUntil(this.destroy$)).subscribe(\r\n // (data: Infographiclist[]) => {\r\n // data.forEach(element => {\r\n // var obj: Infographic = {\r\n // ID: element.ItemFields.ID,\r\n // Title: element.ItemFields.Title,\r\n // MediaCenterCategory: element.ItemFields.MediaCenterCategory.LookupValue,\r\n // MCFileName : element.ItemFields.MCFileName,\r\n // MCFileLink: element.ItemFields.MCFileLink?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n // MCFileThumbnails: element.ItemFields.MCFileThumbnails?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n // MCFilesDetails : element.ItemFields.MCFilesDetails,\r\n // isActive: element.ItemFields.IsActive1,\r\n // };\r\n // this.Infographics.push(obj);\r\n // });\r\n // this.InfographicsSearch = this.Infographics;\r\n // }\r\n \r\n // );\r\n // }\r\n\r\n search(){\r\n this.showCount = 5;\r\n this.Infographics = this.InfographicsSearch;\r\n this.Infographics = this.Infographics.filter(x => x.MCFileName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n \r\n this.getMediaCenterFile();\r\n\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.ascalph = await this.apiResources.getByKey(\"ascalph\");\r\n this.descalph = await this.apiResources.getByKey(\"descalph\");\r\n this.ascdatealph = await this.apiResources.getByKey(\"ascdatealph\");\r\n this.datedescalph = await this.apiResources.getByKey(\"datedescalph\");\r\n this.orderby = await this.apiResources.getByKey(\"orderby\");\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n this.show = await this.apiResources.getByKey(\"show\");\r\n this.searchtxt = await this.apiResources.getByKey(\"search\");\r\n \r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrls: ['./spinner.component.css']\r\n})\r\nexport class SpinnerComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\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
    \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 \"Image\"\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

    {{showCount<\r\n MediaCenterVideos.length?showCount:MediaCenterVideos.length }} {{servicesof}}\r\n {{MediaCenterVideos.length}}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    ","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Mediacentervideoslist } from 'src/app/models/mediacentervideoslist';\r\nimport { MediaCenterVideos } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-videolibrary',\r\n templateUrl: './videolibrary.component.html',\r\n styleUrls: ['./videolibrary.component.css']\r\n})\r\n\r\nexport class VideolibraryComponent implements OnInit {\r\n\r\n MediaCenterVideos: MediaCenterVideos[] = [];\r\n destroy$: Subject = new Subject();\r\n searchText: any = '';\r\n more: string = '';\r\n\r\n ascalph: string = '';\r\n descalph: string = '';\r\n ascdatealph: string = '';\r\n datedescalph: string = '';\r\n orderby: string = '';\r\n MediaCenterVideosSearch: MediaCenterVideos[] = [];\r\n showCount = 6;\r\n selectedValue: string;\r\n url: SafeUrl | undefined;\r\n videoTitle: any;\r\n show: string = '';\r\n servicesof: string = '';\r\n searchtxt: string = '';\r\n showLoading = false;\r\n\r\n @ViewChild('iframe') iframe: ElementRef;\r\n\r\n constructor(private apiServices: ApiService, private _sanitizer: DomSanitizer, private apiResources: ResourcesService, private sanitizer: DomSanitizer) { \r\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl('');\r\n }\r\n\r\n /** Custom methods */\r\n getMediaCenterFiles() {\r\n this.apiServices.getListTopN('MediaCenterFiles', 0, false, 'MediaCenterCategory', 'مكتبة الفيديو').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Mediacentervideoslist[]) => {\r\n data.forEach(element => {\r\n var obj: MediaCenterVideos = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n MediaCenterCategory: element.ItemFields.MediaCenterCategory.LookupValue,\r\n MCFileName: element.ItemFields.MCFileName,\r\n MCFileLink: this._sanitizer.bypassSecurityTrustResourceUrl(element.ItemFields.MCFileLink?.Url + '?rel=0'),\r\n MCFileThumbnails: this.getThumbnail(element.ItemFields?.MCFileLink?.Url, 'big'),\r\n MCFilesDetails: element.ItemFields.MCFilesDetails,\r\n isActive: element.ItemFields.IsActive1,\r\n MediaOrder: element.ItemFields?.MediaOrder\r\n };\r\n\r\n this.MediaCenterVideos.push(obj);\r\n });\r\n this.MediaCenterVideosSearch = this.MediaCenterVideos;\r\n // this.MediaCenterVideos.sort((a: any, b: any) => {\r\n // return new Date(b.newsDate) - new Date(a.newsDate);\r\n // });\r\n this.MediaCenterVideos.sort((a: any, b: any) => {\r\n return b.MediaOrder - a.MediaOrder;\r\n });\r\n }\r\n );\r\n }\r\n // changeRatio(event: MatSelectChange) {\r\n // var optionSelected = event.value.split('-');\r\n // this.MediaCenterVideos.splice(0, this.MediaCenterVideos.length);\r\n // //console.log(optionSelected[1]+ \" \"+ optionSelected[0]);\r\n // this.apiServices.getListTopN('MediaCenterVideos', 0, optionSelected[1], optionSelected[0], '').pipe(takeUntil(this.destroy$)).subscribe(\r\n // (data: Mediacentervideoslist[]) => {\r\n // data.forEach(element => {\r\n // var obj: MediaCenterVideos = {\r\n // ID: element.ItemFields.ID,\r\n // Title: element.ItemFields.Title,\r\n // MediaCenterCategory: element.ItemFields.MediaCenterCategory.LookupValue,\r\n // MCFileName: element.ItemFields.MCFileName,\r\n // MCFileLink: this._sanitizer.bypassSecurityTrustResourceUrl(element.ItemFields.MCFileLink?.Url + '?rel=0'),\r\n // // MCFileThumbnails: element.ItemFields.MCFileThumbnails?.Url,\r\n // MCFileThumbnails: this.getThumbnail(element.ItemFields.MCFileLink?.Url, 'big'),\r\n // MCFilesDetails: element.ItemFields.MCFilesDetails,\r\n // isActive: element.ItemFields.IsActive1,\r\n // };\r\n\r\n // this.MediaCenterVideos.push(obj);\r\n // });\r\n // this.MediaCenterVideosSearch = this.MediaCenterVideos;\r\n // }\r\n // );\r\n // }\r\n\r\n getThumbnail(url: any, size: string): string {\r\n var video, results;\r\n\r\n video = url.match(/youtube\\.com.*(\\?v=|\\/embed\\/)(.{11})/).pop();\r\n // video = (results === null) ? url : results[1];\r\n\r\n if (size === 'small') {\r\n return 'https://img.youtube.com/vi/' + video + '/2.jpg';\r\n }\r\n return 'https://img.youtube.com/vi/' + video + '/0.jpg';\r\n }\r\n\r\n search() {\r\n this.showCount = 5;\r\n this.MediaCenterVideos = this.MediaCenterVideosSearch;\r\n this.MediaCenterVideos = this.MediaCenterVideos.filter(x => x.MCFileName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n\r\n open(item: MediaCenterVideos) {\r\n this.showLoading = true;\r\n this.videoTitle = item.MCFileName;\r\n this.url = item.MCFileLink;\r\n }\r\n\r\n stopVideo() {\r\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl('');\r\n }\r\n \r\n onLoad() {\r\n this.showLoading = false;\r\n }\r\n /** Component events */\r\n async ngOnInit() {\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.ascalph = await this.apiResources.getByKey(\"ascalph\");\r\n this.descalph = await this.apiResources.getByKey(\"descalph\");\r\n this.ascdatealph = await this.apiResources.getByKey(\"ascdatealph\");\r\n this.datedescalph = await this.apiResources.getByKey(\"datedescalph\");\r\n this.orderby = await this.apiResources.getByKey(\"orderby\");\r\n this.show = await this.apiResources.getByKey(\"show\");\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n this.searchtxt = await this.apiResources.getByKey(\"search\");\r\n\r\n this.getMediaCenterFiles();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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 {{etecidguide}}\r\n

    \r\n \r\n {{logodownload}}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"Digital\r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Identityguidelinelist } from 'src/app/models/identityguidelinelist';\r\nimport { Identityguideline } from 'src/app/models/ResponseModel';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SafeUrl } from '@angular/platform-browser';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-identityguideline',\r\n templateUrl: './identityguideline.component.html',\r\n styleUrls: ['./identityguideline.component.css']\r\n})\r\n\r\nexport class IdentityguidelineComponent implements OnInit {\r\n logodownload : string ='';\r\n etecidguide: string ='';\r\n Identityguidelines: Identityguideline[] = [] ;\r\n LinkguidePDF : SafeUrl | undefined ='';\r\n ImageLinkguidePDF: SafeUrl | undefined ='' ;\r\n destroy$: Subject = new Subject();\r\n constructor(private apiServices : ApiService, private apiResources: ResourcesService) { }\r\n\r\n/** Custom methods */\r\n getMediaCenterCategory(){\r\n this.apiServices.getListTopN('MediaCenterFiles',0,false,'MediaCenterCategory','دليل الهوية').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Identityguidelinelist[]) => {\r\n data.forEach(element => {\r\n var obj: Identityguideline = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n MediaCenterCategory: element.ItemFields.MediaCenterCategory.LookupValue,\r\n MCFileName : element.ItemFields.MCFileName,\r\n MCFileLink: element.ItemFields.MCFileLink?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n MCFileThumbnails: element.ItemFields.MCFileThumbnails?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n MCFilesDetails : element.ItemFields.MCFilesDetails,\r\n isActive: element.ItemFields.IsActive1,\r\n };\r\n\r\n if(obj.MCFileName == 'AuthorityIdentityGuideimg'){\r\n this.ImageLinkguidePDF = obj.MCFileThumbnails;\r\n }\r\n if(obj.MCFileName == 'AuthorityIdentityGuide'){\r\n this.LinkguidePDF = obj.MCFileLink;\r\n }\r\n if(obj.MCFileName != 'AuthorityIdentityGuideimg' || obj.MCFileName != 'AuthorityIdentityGuideimg' )\r\n {\r\n this.Identityguidelines.push(obj);\r\n }\r\n \r\n });\r\n \r\n }\r\n );\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit(){\r\n\r\n this.logodownload = await this.apiResources.getByKey(\"logodownload\");\r\n this.etecidguide = await this.apiResources.getByKey(\"etecidguide\");\r\n \r\n this.getMediaCenterCategory();\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 \"Image\"\r\n
    \r\n
    \r\n
    \r\n

    \r\n \r\n {{item.newsTitle}}\r\n \r\n

    \r\n

    \r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {{allNews.length }} {{servicesof}}\r\n {{Total}}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { map, Subject, takeUntil } from 'rxjs';\r\nimport { NewsList } from 'src/app/models/NewsList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { News } from 'src/app/models/ResponseModel';\r\n\r\nimport { environment } from 'src/environments/environment';\r\n \r\nimport { Title } from '@angular/platform-browser';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\n \r\n \r\n\r\n@Component({\r\n selector: 'app-allnews',\r\n templateUrl: './allnews.component.html',\r\n styleUrls: ['./allnews.component.css']\r\n})\r\n\r\nexport class AllnewsComponent implements OnInit {\r\n\r\n allNews: News[] = [];\r\n newsSearch: News[] = [];\r\n showCount = 6;\r\n destroy$: Subject = new Subject();\r\n searchText: any = '';\r\n selectedValue: string;\r\n more: string = '';\r\n searchtxt: string = '';\r\n ascalph: string = '';\r\n descalph: string = '';\r\n ascdatealph: string = '';\r\n datedescalph: string = '';\r\n orderby: string = '';\r\n EtecFullName: string = '';\r\n servicesof:string = '';\r\n Total : number;\r\n LastID : number;\r\n IsAsc:boolean =true;\r\n _lang = '';\r\n\r\n constructor(private apiServices: ApiService, private Title: Title\r\n , private apiResources: ResourcesService\r\n ,private loading: LoadingService) { \r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n /**Unused functions */\r\n updateTitle(title: string) {\r\n this.Title.setTitle(this.EtecFullName + \" - \" + title);\r\n }\r\n\r\n /** Custom methods */\r\n cloneObj(data: NewsList): News {\r\n this.LastID = data.ItemId;\r\n return ({\r\n newsId: data.ItemId,\r\n newsDate: data.ItemFields.NewsDate,\r\n newsTitle: data.ItemFields.NewsTitle,\r\n newsDetails: this.cutString(data.ItemFields.NewsDetails?.replace(/<[^>]*>/g, '')),\r\n newsUrl: data.ItemFields?.NewsFile?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImage: data.ItemFields?.NewsImage?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImageThumbnail: data.ItemFields?.NewsImageThumbnail?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsCode: data.ItemFields.NewsCode,\r\n isActive: data.ItemFields.IsActive1,\r\n NewsKeyword: ''\r\n } as News)\r\n }\r\n\r\n GetListMaxID(listname : string,firsttime:boolean,IsAsc:boolean)\r\n {\r\n this.apiServices.GetListMaxID('News').subscribe(data => {\r\n this.Total = data.TotalCount;\r\n \r\n \r\n this.getNews(data.Result,firsttime,IsAsc);\r\n }); \r\n }\r\n \r\n getNews(id:number,firsttime:boolean,IsAsc:boolean) {\r\n if(firsttime){\r\n this.allNews.splice(0, this.allNews.length);\r\n }\r\n \r\n this.apiServices.getListTopN('news',6,false,'',null,id).pipe(takeUntil(this.destroy$), map((res: NewsList[]) => res.map(re => {\r\n \r\n return this.cloneObj(re)\r\n }))).subscribe(data => {\r\n this.allNews.push(...data);\r\n this.newsSearch = this.allNews;\r\n if(IsAsc){\r\n this.allNews.sort((a: any, b: any) => {\r\n return new Date(b.newsDate) - new Date(a.newsDate);\r\n });\r\n }else{\r\n this.allNews.sort((a: any, b: any) => {\r\n return new Date(a.newsDate) - new Date(b.newsDate);\r\n });\r\n }\r\n })\r\n \r\n }\r\n\r\ngetNews2(id:number,firsttime:boolean,IsAsc:boolean){\r\n if(firsttime){\r\n this.allNews.splice(0, this.allNews.length);\r\n }\r\n\r\n this.apiServices.getListTopN('News',6,false,'',null,id).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: NewsList[]) => {\r\n data.forEach(element => {\r\n var obj: News = {\r\n newsId: element.ItemId,\r\n newsDate: element.ItemFields.NewsDate,\r\n newsTitle: element.ItemFields.NewsTitle,\r\n newsDetails: this.cutString(element.ItemFields.NewsDetails),\r\n newsUrl: element.ItemFields?.NewsFile?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImage: element.ItemFields?.NewsImage?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsImageThumbnail: element.ItemFields?.NewsImageThumbnail?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsCode: element.ItemFields.NewsCode,\r\n isActive: element.ItemFields.IsActive1,\r\n NewsKeyword: ''\r\n };\r\n \r\n this.LastID = obj.newsId;\r\n this.allNews.push(obj);\r\n \r\n });\r\n if(IsAsc){\r\n this.allNews.sort((a: any, b: any) => {\r\n return new Date(b.newsDate) - new Date(a.newsDate);\r\n });\r\n }else{\r\n this.allNews.sort((a: any, b: any) => {\r\n return new Date(a.newsDate) - new Date(b.newsDate);\r\n });\r\n }\r\n }\r\n );\r\n}\r\n async fillResources() {\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.ascalph = await this.apiResources.getByKey(\"ascalph\");\r\n this.descalph = await this.apiResources.getByKey(\"descalph\");\r\n this.ascdatealph = await this.apiResources.getByKey(\"ascdatealph\");\r\n this.datedescalph = await this.apiResources.getByKey(\"datedescalph\");\r\n this.orderby = await this.apiResources.getByKey(\"orderby\");\r\n this.searchtxt = await this.apiResources.getByKey(\"search\");\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n \r\n\r\n }\r\n\r\n cutString(str: string) {\r\n var output = ' ';\r\n var data = str.split(' ');\r\n var i = 0;\r\n for (var i = 0; i < 25; i++) {\r\n\r\n output = output.concat(data[i], ' ');\r\n };\r\n return output;\r\n }\r\n\r\n\r\n\r\n showItems(SelectValue: any) {\r\n\r\n var optionSelected = SelectValue.target.value.split('-');\r\n\r\n if(optionSelected[1] != \"true\"){\r\n\r\n this.getNews(6,true,false);\r\n this.IsAsc = false;\r\n }if(optionSelected[1] == \"true\" ){\r\n\r\n \r\n this.GetListMaxID(\"\",true,true);\r\n this.IsAsc = true;\r\n\r\n }\r\n \r\n //Get selected news\r\n /* this.apiServices.getListOrder('TempNews1', 0, optionSelected[1], optionSelected[0]).pipe(takeUntil(this.destroy$), map((res: NewsList[]) => res.map(re => {\r\n return this.cloneObj(re)\r\n }))).subscribe(data => {\r\n this.allNews = data;\r\n this.newsSearch = this.allNews;\r\n this.allNews.sort((a: any, b: any) => {\r\n return new Date(b.newsDate) - new Date(a.newsDate);\r\n });\r\n })*/\r\n }\r\n\r\n search() {\r\n this.showCount = 6;\r\n this.allNews = this.newsSearch;\r\n this.allNews = this.allNews.filter(x => x.newsTitle?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n\r\n /** Component events */\r\n ngOnInit(): void {\r\n this.GetListMaxID('TempNews1',true,true);\r\n //this.getNews();\r\n this.fillResources();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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\r\n\r\n \r\n \r\n
    \r\n
    \r\n

    {{showCount< Publications.length?showCount:Publications.length\r\n }} {{servicesof}} {{Publications.length}}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Publicationslist } from 'src/app/models/publicationslist';\r\n \r\nimport { Publications } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-publicationsandreleases',\r\n templateUrl: './publicationsandreleases.component.html',\r\n styleUrls: ['./publicationsandreleases.component.css']\r\n})\r\nexport class PublicationsandreleasesComponent implements OnInit {\r\n\r\n showCount = 6;\r\n Publications: Publications[] = [] ;\r\n PublicationsSearch: Publications[] = [] ;\r\n destroy$: Subject = new Subject();\r\n searchText:any = '';\r\n selectedValue: string;\r\n more : string = '';\r\n reportdownload : string = '';\r\n reportsearch: string = '';\r\n servicesof: string = '';\r\n imptempPublicUrl = environment.imptempPublicUrl;\r\n imgPublicUrl = environment.imgPublicUrl;\r\n searchtxt: string = '';\r\n\r\n constructor(private apiServices: ApiService, private apiResources:ResourcesService) { }\r\n\r\n /** Custom methods */\r\n getMediaFiles(){\r\n this.apiServices.getListTopN('MediaCenterFiles',0,false,'MediaCenterCategory','النشرات والإصدارات').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Publicationslist[]) => {\r\n data.forEach(element => {\r\n var obj: Publications = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n MediaCenterCategory: element.ItemFields.MediaCenterCategory.LookupValue,\r\n MCFileName : element.ItemFields.MCFileName,\r\n MCFileLink: element.ItemFields.MCFileLink?.Url,\r\n MCFileThumbnails: element.ItemFields.MCFileThumbnails?.Url,\r\n MCFilesDetails : element.ItemFields.MCFilesDetails,\r\n isActive: element.ItemFields.IsActive1,\r\n MediaOrder: element.ItemFields?.MediaOrder,\r\n };\r\n this.Publications.push(obj);\r\n });\r\n\r\n this.PublicationsSearch = this.Publications;\r\n\r\n this.Publications.sort((a: any, b: any) => {\r\n return b.MediaOrder - a.MediaOrder;\r\n });\r\n }\r\n );\r\n }\r\n\r\n search(){\r\n this.showCount = 5;\r\n this.Publications = this.PublicationsSearch;\r\n this.Publications = this.Publications.filter(x => x.MCFileName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n\r\n /** Custom methods */\r\n async ngOnInit() {\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.reportdownload = await this.apiResources.getByKey(\"reportdownload\");\r\n this.reportsearch = await this.apiResources.getByKey(\"reportsearch\");\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n this.searchtxt = await this.apiResources.getByKey(\"search\");\r\n\r\n this.getMediaFiles();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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 \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\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 { Component, OnInit } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\n \r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { RouteApiService } from 'src/app/services/route-api.service';\r\n\r\n@Component({\r\n selector: 'app-mediacenter',\r\n templateUrl: './mediacenter.component.html',\r\n styleUrls: ['./mediacenter.component.css']\r\n})\r\nexport class MediacenterComponent implements OnInit {\r\n\r\n activeTab = 'news';\r\n PageTitle: string = '';\r\n idguide = '';\r\n MediaCenter = '';\r\n News = '';\r\n flyers = '';\r\n videolibrary = '';\r\n infographic = '';\r\n home: string = '';\r\n EtecFullName = 'هيئة تقويم التعليم والتدريب';\r\n destroy$: Subject = new Subject();\r\n isNews = false;\r\n isInfographic = false;\r\n isFlyers = false;\r\n isVideolibrary = false;\r\n isIdguide = false;\r\n _lang = '';\r\n\r\n constructor(private apiServices: ApiService, private apiRoute: RouteApiService, private actRoute: ActivatedRoute\r\n , private Title: Title, private apiResources: ResourcesService, private loading: LoadingService) {\r\n\r\n this.actRoute.params.subscribe(params =>\r\n this.activeTab = params[\"id\"] == null ? 'news' : params[\"id\"]);\r\n\r\n if (this.activeTab === 'news') {\r\n this.isNews = true;\r\n }\r\n if (this.activeTab === 'infographic') {\r\n this.isInfographic = true;\r\n }\r\n if (this.activeTab === 'videolibrary') {\r\n this.isVideolibrary = true;\r\n }\r\n if (this.activeTab === 'flyers') {\r\n this.isFlyers = true;\r\n }\r\n if (this.activeTab === 'idguide') {\r\n this.isIdguide = true;\r\n }\r\n\r\n this.actRoute.params.subscribe(async params =>\r\n {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if(isRoute){\r\n window.location.reload();\r\n }\r\n });\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n /** Custom methods */\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n setTitle() {\r\n this.apiServices.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'mediacenter') {\r\n this.Title.setTitle(this.EtecFullName + \" - \" + element.ItemFields.MenuName);\r\n this.PageTitle = element.ItemFields.MenuName;\r\n }\r\n if (element.ItemFields.Title.toLowerCase() === 'infographic') {\r\n this.infographic = element.ItemFields.MenuName;\r\n }\r\n if (element.ItemFields.Title.toLowerCase() === 'mediacenter') {\r\n this.MediaCenter = element.ItemFields.MenuName;\r\n }\r\n if (element.ItemFields.Title.toLowerCase() === 'new') {\r\n this.News = element.ItemFields.MenuName;\r\n }\r\n if (element.ItemFields.Title.toLowerCase() === 'flyers') {\r\n this.flyers = element.ItemFields.MenuName;\r\n }\r\n if (element.ItemFields.Title.toLowerCase() === 'videolibrary') {\r\n this.videolibrary = element.ItemFields.MenuName;\r\n }\r\n if (element.ItemFields.Title.toLowerCase() === 'idguide') {\r\n this.idguide = element.ItemFields.MenuName;\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n updateTitle(title: string) {\r\n this.Title.setTitle(title);\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit(): Promise {\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n\r\n\r\n this.setTitle();\r\n this.updateTitle(this.PageTitle.toString());\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 {{Product.serviceName}}\r\n

    \r\n
    \r\n
    \r\n

    \r\n {{Product.ServiceDescription}}\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 الاعتماد\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 {{item.ServiceGoalNumber}}\r\n
    \r\n
    \r\n
    \r\n\r\n {{item.ServiceGoalName}}\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\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{item.ServiceStepsDetails}}\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 {{Prerequirements.ServicePrerequirementsDetails}}\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
    \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\r\n\r\n\r\n
    \r\n\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n \r\nimport { Service, ServiceContent, ServiceGoal, ServicePrerequirements, ServiceSteps } from 'src/app/models/ResponseModel';\r\nimport { ServiceContentResponse } from 'src/app/models/ServiceContentResponse';\r\nimport { ServiceGoalsResponse } from 'src/app/models/ServiceGoalsResponse';\r\nimport { ServicePrerequirementsResponse } from 'src/app/models/ServicePrerequirementsResponse';\r\nimport { ServicesResponse } from 'src/app/models/ServicesResponse';\r\nimport { ServiceStepsResponse } from 'src/app/models/ServiceStepsResponse';\r\nimport { ApiService } from 'src/app/services/api.service';\r\n\r\n@Component({\r\n selector: 'app-product-accreditation',\r\n templateUrl: './product-accreditation.component.html',\r\n styleUrls: ['./product-accreditation.component.css']\r\n})\r\nexport class ProductAccreditationComponent implements OnInit {\r\n destroy$: Subject = new Subject();\r\n productId: number;\r\n Product: Service;\r\n Goals: ServiceGoal[] = [];\r\n Content: ServiceContent[] = [];\r\n Steps: ServiceSteps[] = [];\r\n Prerequirements: ServicePrerequirements;\r\n\r\n constructor(private actRoute: ActivatedRoute, private apiServices: ApiService) { }\r\n\r\n /** Custom methods */\r\n getService() {\r\n this.apiServices.getListById('Services', this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicesResponse) => {\r\n var obj: Service = {\r\n serviceTitle: data.ItemFields.Title,\r\n serviceId: data.ItemId,\r\n serviceName: data.ItemFields.ServiceName,\r\n ServiceCenterId: 1,\r\n ServiceDescription: data.ItemFields.ServiceDescription!,\r\n serviceIconUrl: './assets/img/icon/exam/GAT.svg',\r\n serviceLevel: 0,\r\n serviceVisitCount: 0,\r\n serviceDetailsFileUrl: '',\r\n serviceKeyword: data.ItemFields.ServiceKeyword,\r\n\r\n isActive: data.ItemFields.IsActive1,\r\n ShowDetailsButton: data.ItemFields.ShowDetailsButton\r\n }\r\n this.Product = obj;\r\n\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n getServiceGoals() {\r\n this.apiServices.getListTopN('ServiceGoals', 100, true, \"ServiceId\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceGoalsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceGoal = {\r\n ServiceGoalNumber: element.ItemFields.ServiceGoalNumber,\r\n ServiceGoalName: element.ItemFields.ServiceGoalName\r\n };\r\n\r\n this.Goals.push(obj);\r\n\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n getServiceContent() {\r\n this.apiServices.getListTopN('ServiceContent', 100, true, \"ServiceId\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceContentResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceContent = {\r\n ServiceContentTitle: element.ItemFields.ServiceContentTitle,\r\n ServiceContentDetailes: element.ItemFields.ServiceContentDetails,\r\n ServiceContentIcon: element.ItemFields.ServiceContentIcon!\r\n };\r\n\r\n this.Content.push(obj);\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n getServiceSteps() {\r\n this.apiServices.getListTopN('ServiceSteps', 100, true, \"ServiceId\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceStepsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceSteps = {\r\n ServiceStepsDetails: element.ItemFields.ServiceStepsDetails\r\n };\r\n\r\n this.Steps.push(obj);\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n getServicePrerequirements() {\r\n this.apiServices.getListTopN('ServicePrerequirements', 100, true, \"ServiceId\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicePrerequirementsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServicePrerequirements = {\r\n ServicePrerequirementsDetails: element.ItemFields.ServicePrerequirementsDetails\r\n };\r\n\r\n this.Prerequirements = obj;\r\n });\r\n });\r\n\r\n\r\n }\r\n \r\n /** Component events */\r\n ngOnInit(): void {\r\n this.actRoute.params.subscribe(params =>\r\n this.productId = params[\"id\"]);\r\n\r\n this.getService();\r\n this.getServiceGoals();\r\n this.getServiceContent();\r\n this.getServiceSteps();\r\n this.getServicePrerequirements();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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

    {{Product.serviceName}}

    \r\n\r\n
    \r\n
    \r\n

    {{Product.serviceKeyword}}

    \r\n\r\n
    \r\n
    \r\n

    \r\n {{Product.ServiceDescription}} \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

    أهداف

    \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 {{item.ServiceGoalNumber}}\r\n\r\n
    \r\n
    \r\n
    \r\n {{item.ServiceGoalName}}\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
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{item.serviceAudienceName}}\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 {{item.ServiceContentTitle}}\r\n

    \r\n
    \r\n
    \r\n

    \r\n {{item.ServiceContentDetailes}}\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 {{item.serviceNoteTitle}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n {{item.serviceNoteDetailes}}\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 \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 { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Service, ServiceAudience, ServiceContent, ServiceGoal, ServiceNote } from 'src/app/models/ResponseModel';\r\nimport { ServiceAudnicesResponse } from 'src/app/models/ServiceAudnicesResponse';\r\nimport { ServiceContentResponse } from 'src/app/models/ServiceContentResponse';\r\nimport { ServiceGoalsResponse } from 'src/app/models/ServiceGoalsResponse';\r\nimport { ServiceNotesResponse } from 'src/app/models/ServiceNotesResponse';\r\nimport { ServicesResponse } from 'src/app/models/ServicesResponse';\r\nimport { ApiService } from 'src/app/services/api.service';\r\n\r\n@Component({\r\n selector: 'app-product-qiyas',\r\n templateUrl: './product-qiyas.component.html',\r\n styleUrls: ['./product-qiyas.component.css']\r\n})\r\nexport class ProductQiyasComponent implements OnInit {\r\n destroy$: Subject = new Subject();\r\n\r\n productId: number;\r\n Product: Service;\r\n Goals: ServiceGoal[] = [];\r\n Content: ServiceContent[] = [];\r\n Notes: ServiceNote[] = [];\r\n Audnices: ServiceAudience[] = [];\r\n\r\n constructor(private actRoute: ActivatedRoute, private apiServices: ApiService) { }\r\n\r\n/** Custom methods */\r\n getService() {\r\n this.apiServices.getListById('Services', this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicesResponse) => {\r\n var obj: Service = {\r\n serviceTitle: data.ItemFields.Title,\r\n serviceId: data.ItemId,\r\n serviceName: data.ItemFields.ServiceName,\r\n ServiceCenterId: 1,\r\n ServiceDescription: data.ItemFields.ServiceDescription!,\r\n serviceIconUrl: './assets/img/icon/exam/GAT.svg',\r\n serviceLevel: 0,\r\n serviceVisitCount: 0,\r\n serviceDetailsFileUrl: '',\r\n serviceKeyword: data.ItemFields.ServiceKeyword,\r\n isActive: data.ItemFields.IsActive1,\r\n ShowDetailsButton: data.ItemFields.ShowDetailsButton\r\n }\r\n this.Product = obj;\r\n\r\n\r\n }\r\n );\r\n\r\n }\r\n\r\n getServiceGoals() {\r\n this.apiServices.getListTopN('ServiceGoals', 100, true, \"ServiceId\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceGoalsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceGoal = {\r\n ServiceGoalNumber: element.ItemFields.ServiceGoalNumber,\r\n ServiceGoalName: element.ItemFields.ServiceGoalName\r\n };\r\n\r\n this.Goals.push(obj);\r\n\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n getServiceContent() {\r\n this.apiServices.getListTopN('ServiceContent', 100, true, \"ServiceId\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceContentResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceContent = {\r\n ServiceContentTitle: element.ItemFields.ServiceContentTitle,\r\n ServiceContentDetailes: element.ItemFields.ServiceContentDetails,\r\n ServiceContentIcon: element.ItemFields.ServiceContentIcon!\r\n };\r\n\r\n this.Content.push(obj);\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n getServiceNotes() {\r\n this.apiServices.getListTopN('ServiceNotes', 100, true, \"ServiceId\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceNotesResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceNote = {\r\n serviceNoteDetailes: element.ItemFields.ServiceNoteDetails,\r\n serviceNoteTitle: element.ItemFields.ServiceNoteTitle\r\n\r\n };\r\n\r\n this.Notes.push(obj);\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n getServiceAudnices() {\r\n this.apiServices.getListTopN('ServiceAudiences', 100, true, \"ServiceId\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceAudnicesResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceAudience = {\r\n serviceAudienceId: element.ItemFields.ServiceAudienceId,\r\n serviceAudienceName: element.ItemFields.ServiceAudienceName\r\n\r\n };\r\n\r\n this.Audnices.push(obj);\r\n });\r\n });\r\n\r\n\r\n }\r\n\r\n/** Component events */\r\n ngOnInit(): void {\r\n this.actRoute.params.subscribe(params =>\r\n this.productId = params[\"id\"]);\r\n\r\n this.getService();\r\n this.getServiceGoals();\r\n this.getServiceContent();\r\n this.getServiceNotes();\r\n this.getServiceAudnices();\r\n }\r\n \r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","
    0\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"Icon\"\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 {{item.ServiceGoalNumber}}
    \r\n
    \r\n

    \r\n {{item.ServiceGoalName}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ServiceGoal } from 'src/app/models/ResponseModel';\r\n\r\n@Component({\r\n selector: 'app-goals',\r\n templateUrl: './goals.component.html',\r\n styleUrls: ['./goals.component.css']\r\n})\r\nexport class GoalsComponent implements OnInit {\r\n\r\n @Input() Goals: ServiceGoal[] = []\r\n @Input() servicegoal : string\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n \r\n cateogry(categoryitems: any[]): any[] {\r\n let sortedcategoryitems = categoryitems.sort((a, b) => (a.ServiceGoalNumber < b.ServiceGoalNumber) ? -1 : ((b.ServiceGoalNumber > a.ServiceGoalNumber) ? 1 : 0));\r\n return sortedcategoryitems;\r\n }\r\n\r\n\r\n}\r\n","
    0\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"Target\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 {{item.serviceAudienceName}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ServiceAudience } from 'src/app/models/ResponseModel';\r\n\r\n@Component({\r\n selector: 'app-audience',\r\n templateUrl: './audience.component.html',\r\n styleUrls: ['./audience.component.css']\r\n})\r\nexport class AudienceComponent implements OnInit {\r\n\r\n @Input() Audnices: ServiceAudience[] = [];\r\n @Input() serviceaudience : string\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","
    0\">\r\n
    \r\n
    \r\n
    \r\n

    \r\n {{item.ItemFields?.TargetedSector}}

    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ServiceTargetedSectorResponse } from 'src/app/models/ServiceTargetedSectorResponse';\r\n\r\n@Component({\r\n selector: 'app-targeted-sector',\r\n templateUrl: './targeted-sector.component.html',\r\n styleUrls: ['./targeted-sector.component.css']\r\n})\r\nexport class TargetedSectorComponent implements OnInit {\r\n\r\n @Input() ServiceTargetedSector: ServiceTargetedSectorResponse[] = [];\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","
    0\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"Target\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 {{item.ServiceStepsDetails}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ServiceSteps } from 'src/app/models/ResponseModel';\r\n\r\n@Component({\r\n selector: 'app-steps',\r\n templateUrl: './steps.component.html',\r\n styleUrls: ['./steps.component.css']\r\n})\r\nexport class StepsComponent implements OnInit {\r\n @Input() Steps: ServiceSteps[] = [];\r\n @Input() servicesteps : string\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","
    0\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"Target\r\n
    \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \"Icon\"\r\n
    \r\n
    \r\n

    \r\n {{item.ServiceContentTitle}}\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 { Component, Input, OnInit } from '@angular/core';\r\nimport { ServiceContent } from 'src/app/models/ResponseModel';\r\n\r\n@Component({\r\n selector: 'app-content',\r\n templateUrl: './content.component.html',\r\n styleUrls: ['./content.component.css']\r\n})\r\nexport class ContentComponent implements OnInit {\r\n\r\n @Input() Content: ServiceContent[] = []\r\n @Input() infoAboutService: string\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","
    0\">\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 { Component, Input, OnInit } from '@angular/core';\r\nimport { ServiceNote } from 'src/app/models/ResponseModel';\r\n\r\n@Component({\r\n selector: 'app-notes',\r\n templateUrl: './notes.component.html',\r\n styleUrls: ['./notes.component.css']\r\n})\r\nexport class NotesComponent implements OnInit {\r\n\r\n @Input() Notes: ServiceNote[] = []\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","
    0\">\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
    1\">\r\n
    \r\n\r\n
    \r\n
    \r\n
    {{i+1}}\r\n
    \r\n
    \r\n

    \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ServicePrerequirements } from 'src/app/models/ResponseModel';\r\n\r\n@Component({\r\n selector: 'app-prerequirements',\r\n templateUrl: './prerequirements.component.html',\r\n styleUrls: ['./prerequirements.component.css']\r\n})\r\nexport class PrerequirementsComponent implements OnInit {\r\n\r\n @Input() Prerequirements: ServicePrerequirements[] = []\r\n @Input() serviceprerequirments : string\r\n \r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n"," \r\n
    0\" #table>\r\n

    {{timetable}}

    \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
    {{period}}{{testType}}{{language}}{{sex}}\r\n {{earlyRegistrationPeriod}}{{TestPeriod}}
    {{from}}{{to}}{{from}}{{to}}
    \r\n {{ item.ItemFields.TestTimeTablePeriod }}\r\n \r\n {{item.ItemFields.TestTimeTableTestType}}\r\n \r\n {{item.ItemFields.TestTimeTableTestLanguage}}\r\n \r\n {{item.ItemFields.TestTimeTableTestGender}}\r\n \r\n {{item.ItemFields.TestTimeTabletStartOfEarlyRegist | date:\r\n 'yyyy/MM/dd'}}\r\n \r\n {{item.ItemFields.TestTimeTabletStartOfEndRegistra | date:\r\n 'yyyy/MM/dd'}}\r\n \r\n {{item.ItemFields.TestTimeTabletDateFrom | date: 'yyyy/MM/dd'}}\r\n \r\n {{item.ItemFields.TestTimeTabletDateTo | date: 'yyyy/MM/dd'}}\r\n
    \r\n
    \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TestTimeTableList } from 'src/app/models/TestTimeTableList';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-test-timetable',\r\n templateUrl: './test-timetable.component.html',\r\n styleUrls: ['./test-timetable.component.css']\r\n})\r\nexport class TestTimetableComponent implements OnInit {\r\n\r\n @Input() TestTimeTable: TestTimeTableList[] = [];\r\n @Input() timetable : string\r\n \r\n period = '';\r\n testType = '';\r\n language = '';\r\n sex = '';\r\n earlyRegistrationPeriod ='';\r\n from = '';\r\n to = '';\r\n TestPeriod = '';\r\n constructor(private apiRersources: ResourcesService) { }\r\n\r\n async ngOnInit(): Promise {\r\n this.period = await this.apiRersources.getByKey(\"Period\");\r\n this.testType = await this.apiRersources.getByKey(\"TestType\");\r\n this.language = await this.apiRersources.getByKey(\"Language\");\r\n this.sex = await this.apiRersources.getByKey(\"Sex\");\r\n this.earlyRegistrationPeriod = await this.apiRersources.getByKey(\"EarlyRegistrationPeriod\");\r\n this.TestPeriod = await this.apiRersources.getByKey(\"TestPeriod\");\r\n this.from = await this.apiRersources.getByKey(\"From\");\r\n this.to = await this.apiRersources.getByKey(\"To\");\r\n }\r\n\r\n}\r\n","
    0\">\r\n
    0\">\r\n

    {{faq}}

    \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n \r\n {{elm.ItemFields.FAQQuestion}}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FAQList } from 'src/app/models/FAQList';\r\n\r\n@Component({\r\n selector: 'app-faq-list',\r\n templateUrl: './faq-list.component.html',\r\n styleUrls: ['./faq-list.component.css']\r\n})\r\nexport class FaqListComponent implements OnInit {\r\n\r\n @Input() faqList: FAQList[] = [];\r\n @Input() faq: string;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\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 \"img\"\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 {{servicegoal}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{serviceaudience}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{ServiceTargetedSectorsTitle}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{servicesteps}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{infoAboutService}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{notes}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{serviceprerequirments}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{servicedocuments}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{videos}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{timetable}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{faq}}\r\n \r\n
    • \r\n\r\n
    • \r\n \r\n \r\n {{relatedServiceGuide}}\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 \r\n
    \r\n
    \r\n \r\n
    0\">\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
    {{Category}}
    \r\n
    0\">\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 {{item.DocumentName}}\r\n

    \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n PDF\r\n \r\n \r\n DOC\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    {{showCount<\r\n ServiceDoumentResponse.length?showCount:ServiceDoumentResponse.length }} {{servicesof}}\r\n {{ServiceDoumentResponse.length}}

    \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
    0\">\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
    {{Category}}
    \r\n
    0\">\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 \"Image\"\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

    {{showVdCount<\r\n ServiceVideoResponse.length?showVdCount:ServiceVideoResponse.length }}\r\n {{servicesof}} {{ServiceVideoResponse.length}}

    \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 {{service.ItemFields?.ServiceStructureTag?.LookupValue}}\r\n
    \r\n

    {{service.ItemFields?.ServiceGuideTitle}}

    \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
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CenterList } from 'src/app/models/CenterList';\r\nimport { Service, ServiceGoal, ServiceContent, ServiceNote, ServiceAudience, ServicePrerequirements, ServiceSteps, ServiceDocuments } from 'src/app/models/ResponseModel';\r\nimport { ServiceAudnicesResponse } from 'src/app/models/ServiceAudnicesResponse';\r\nimport { ServiceContentResponse } from 'src/app/models/ServiceContentResponse';\r\nimport { ServiceDocumentsResponse } from 'src/app/models/ServiceDocumentsResponse';\r\nimport { ServiceGoalsResponse } from 'src/app/models/ServiceGoalsResponse';\r\nimport { ServiceNotesResponse } from 'src/app/models/ServiceNotesResponse';\r\nimport { ServicePrerequirementsResponse } from 'src/app/models/ServicePrerequirementsResponse';\r\nimport { ServiceCenterIdOrServiceSectorIdOrServiceTagIdOrServiceCategoryIdOrSortBehaviorOrSMTotalSizeOrSMTotalFileCount, ServicesResponse } from 'src/app/models/ServicesResponse';\r\nimport { ServiceStepsResponse } from 'src/app/models/ServiceStepsResponse';\r\nimport { TestTimeTableList } from 'src/app/models/TestTimeTableList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { RouteApiService } from 'src/app/services/route-api.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { DomSanitizer, SafeUrl, Title } from '@angular/platform-browser';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\nimport { FAQList } from 'src/app/models/FAQList';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { SwiperOptions, Pagination, Swiper, Autoplay, Navigation } from 'swiper';\r\nimport { ServiceTargetedSectorResponse } from 'src/app/models/ServiceTargetedSectorResponse';\r\nimport { ServiceStructureTagsResponse } from 'src/app/models/ServiceStructureTagsResponse';\r\nimport { ServiceMedialinksList } from 'src/app/models/ServiceMedialinksList';\r\nimport { EServiceGuidList } from 'src/app/models/EServiceGuidList';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ServicesTabs } from 'src/app/models/ServicesDto';\r\n\r\n@Component({\r\n selector: 'app-service-details',\r\n templateUrl: './service-details.component.html',\r\n styleUrls: ['./service-details.component.css']\r\n})\r\nexport class ServiceDetailsComponent implements OnInit {\r\n configServiceDoument: SwiperOptions = {\r\n slidesPerView: 1,\r\n loop: false,\r\n spaceBetween: 50,\r\n speed: 2000,\r\n // navigation: true,\r\n autoplay: {\r\n delay: 2500,\r\n disableOnInteraction: false,\r\n },\r\n pagination: {\r\n clickable: true,\r\n },\r\n breakpoints: {\r\n '560': {\r\n slidesPerView: 1,\r\n slidesPerGroup: 1\r\n },\r\n '768': {\r\n slidesPerView: 2,\r\n slidesPerGroup: 2\r\n\r\n },\r\n '1000': {\r\n slidesPerView: 3,\r\n slidesPerGroup: 3\r\n },\r\n '1200': {\r\n slidesPerView: 4,\r\n slidesPerGroup: 4\r\n }\r\n }\r\n };\r\n\r\n destroy$: Subject = new Subject();\r\n\r\n productId: string | null;\r\n Product: Service;\r\n Goals: ServiceGoal[] = [];\r\n GoalsToShow: ServiceGoal[] = [];\r\n Content: ServiceContent[] = [];\r\n Notes: ServiceNote[] = [];\r\n Audnices: ServiceAudience[] = [];\r\n Steps: ServiceSteps[] = [];\r\n Prerequirements: ServicePrerequirements[] = [];\r\n ServiceDoument: ServiceDocuments[] = [];\r\n ServiceDoumentResponse: ServiceDocuments[] = [];\r\n TestTimeTable: TestTimeTableList[] = [];\r\n ServiceTargetedSector: ServiceTargetedSectorResponse[] = [];\r\n ServiceStructureTag: ServiceStructureTagsResponse[] = [];\r\n ServiceVideo: ServiceMedialinksList[] = [];\r\n ServiceVideoResponse: ServiceMedialinksList[] = [];\r\n serviceAllTabs: ServicesTabs[]= [];\r\n centerCode: string;\r\n centerName: string;\r\n currentUrl: string;\r\n htmlString = 'Hello gowtham';\r\n servicegoal = '';\r\n serviceaudience = '';\r\n servicesteps = '';\r\n servicedocuments = '';\r\n serviceprerequirments = '';\r\n serviceName = '';\r\n videos = '';\r\n timetable = '';\r\n faq = '';\r\n notes = '';\r\n close = '';\r\n PageTitle: string = '';\r\n home: string = '';\r\n EtecFullName = '';\r\n infoAboutService = '';\r\n searchText: any = '';\r\n searchText2: any = '';\r\n ServiceTargetedSectorsTitle = '';\r\n faqList: FAQList[] = [];\r\n tagImage: string;\r\n imptempPublicUrl = environment.imptempPublicUrl;\r\n imgPublicUrl = environment.imgPublicUrl;\r\n serviceSectorURL = '';\r\n url: SafeUrl | undefined;\r\n videoTitle: any;\r\n show: string = '';\r\n goalsActive = '';\r\n audnicesActive = '';\r\n serviceTargetedSectorActive = '';\r\n stepsActive = '';\r\n contentActive = '';\r\n notesActive = '';\r\n prerequirementsActive = '';\r\n serviceDoumentActive = '';\r\n serviceVideoActive = '';\r\n testTimeTableActive = '';\r\n faqListActive = '';\r\n relatedServiceGuidActive = '';\r\n\r\n goalsShow = false;\r\n audnicesShow = false;\r\n serviceTargetedSectorShow = false;\r\n stepsShow = false;\r\n contentShow = false;\r\n notesShow = false;\r\n prerequirementsShow = false;\r\n serviceDoumentShow = false;\r\n serviceVideoShow = false;\r\n testTimeTableShow = false;\r\n faqListShow = false;\r\n\r\n searchtxt = '';\r\n Category = '';\r\n all = '';\r\n more = '';\r\n relatedServiceGuide = '';\r\n showTabs = false;\r\n hasCategory = false;\r\n videoHasCategory = false;\r\n videoTagsAll = true;\r\n showLoading = false;\r\n videoTags: string[] = [];\r\n videoSelectedTags: string[] = [];\r\n videoTagsStatus: boolean[] = [];\r\n\r\n tagsAll = true;\r\n tags: string[] = [];\r\n selectedTags: string[] = [];\r\n tagsStatus: boolean[] = [];\r\n tagsNumber: number[] = [];\r\n ServiceGuid: EServiceGuidList[] = [];\r\n servicesof='';\r\n showCount =12;\r\n showVdCount =12;\r\n tabUrl = '';\r\n _lang = '';\r\n _location = '';\r\n _currentUrl = '';\r\n\r\n constructor(private actRoute: ActivatedRoute, private apiServices: ApiService, private apiRoute: RouteApiService, private router: Router\r\n , private Title: Title, private apiResources: ResourcesService, public _sanitizer: DomSanitizer, private loading: LoadingService) {\r\n this.url = this._sanitizer.bypassSecurityTrustResourceUrl('');\r\n this.currentUrl = window.location.href;\r\n Swiper.use([Pagination]);\r\n Swiper.use([Autoplay]);\r\n Swiper.use([Navigation]);\r\n \r\n this._location = this.router.url ;\r\n \r\n \r\n this.actRoute.params.subscribe(async params => {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n\r\n this.tabUrl = params[\"tab\"] ? params[\"tab\"] : '';\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n });\r\n }\r\n\r\n /** Custom methods */\r\n updateTitle(title: string) {\r\n this.Title.setTitle(title);\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n route(url: string) {\r\n this.router.navigateByUrl(this._lang +'/service/'+ this.productId+ '/'+ url);\r\n }\r\n\r\n getService() {\r\n\r\n this.apiServices.getListTopN('Services', 1, true, \"ServiceCode\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicesResponse[]) => {\r\n if (data.length === 0 ) {\r\n this.router.navigateByUrl('/notfound')\r\n }\r\n if (data[0]?.ItemFields?.IsHiddenFromServiceList) {\r\n this.router.navigateByUrl('/notfound')\r\n }\r\n var obj: Service = {\r\n serviceTitle: data[0]?.ItemFields.Title,\r\n serviceId: data[0]?.ItemId,\r\n serviceName: data[0]?.ItemFields.ServiceName,\r\n ServiceCenterId: data[0]?.ItemFields.ServiceCenterId?.LookupId,\r\n ServiceCenterName: data[0]?.ItemFields.ServiceCenterId?.LookupValue,\r\n ServiceDescription: data[0]?.ItemFields.ServiceDescription!?.replace(/<[^>]*>/g, ''),\r\n serviceIconUrl: './assets/img/icon/exam/GAT.svg',\r\n serviceLevel: 0,\r\n serviceVisitCount: 0,\r\n serviceDetailsFileUrl: data[0]?.ItemFields.ServiceCategoryId_x003a_ServiceC?.LookupValue,\r\n serviceKeyword: data[0]?.ItemFields.ServiceKeyword,\r\n serviceSector: data[0]?.ItemFields.ServiceSectorId?.LookupValue,\r\n serviceSectorId: data[0]?.ItemFields.ServiceSectorId?.LookupId,\r\n ServiceCategory: data[0]?.ItemFields.ServiceCategoryId?.LookupValue,\r\n ServiceCategoryId: data[0]?.ItemFields.ServiceCategoryId?.LookupId,\r\n serviceRegistrationLink: data[0]?.ItemFields?.DetailsButtonLink?.Url,\r\n serviceRegistrationTitle: data[0]?.ItemFields?.DetailsButtonLabel,\r\n isActive: data[0]?.ItemFields.IsActive1,\r\n showServiceRegistration: data[0]?.ItemFields?.ShowDetailsButton,\r\n ShowDetailsButton: data[0]?.ItemFields?.ShowDetailsButton,\r\n RelatedEServiceGuide: data[0]?.ItemFields?.RelatedEServiceGuide!\r\n }\r\n\r\n this.Product = obj;\r\n this.serviceName = obj.serviceName?.toString() == null ? '1' : obj.serviceName?.toString();\r\n this.serviceSectorURL = obj.serviceSectorId?.toString() == '1' ? '/'+this._lang+'/services/indviduals' : '/'+this._lang+'/services/corporate';\r\n //get all service's tabs and activate first one or url one\r\n this.getServiceTabs(obj.serviceId);\r\n //get related service guid\r\n this.getRelatedEServiceGuid(obj.RelatedEServiceGuide!);\r\n this.updateTitle(obj.ServiceCenterName + \" - \" + this.serviceName.toString());\r\n this.getCenterCode(data[0]?.ItemFields.ServiceCenterId?.LookupId);\r\n //get service big icon\r\n this.getServiceStructureTags(data[0]?.ItemFields?.ServiceTagId?.LookupId);\r\n }\r\n );\r\n\r\n }\r\n\r\n getServiceTabs(serviceId: number){\r\n this.clearActiveTabs();\r\n this.apiServices\r\n .checkService(serviceId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: ServicesTabs[]) => {\r\n this.serviceAllTabs = data.filter( m => m.IsExist );\r\n this.goalsShow = data.filter( m => m.IsExist && m.ListName == 'ServiceGoals').length > 0;\r\n this.audnicesShow = data.filter( m => m.IsExist && m.ListName == 'ServiceAudiences').length > 0;\r\n this.serviceTargetedSectorShow = data.filter( m => m.IsExist && m.ListName == 'ServiceTargetedSectors').length > 0;\r\n this.stepsShow = data.filter( m => m.IsExist && m.ListName == 'ServiceSteps').length > 0;\r\n this.contentShow = data.filter( m => m.IsExist && m.ListName == 'ServiceContent').length > 0;\r\n this.notesShow = data.filter( m => m.IsExist && m.ListName == 'ServiceNotes').length > 0;\r\n this.prerequirementsShow = data.filter( m => m.IsExist && m.ListName == 'ServicePrerequirements').length > 0;\r\n this.serviceDoumentShow = data.filter( m => m.IsExist && m.ListName == 'ServiceDocuments').length > 0;\r\n this.serviceVideoShow = data.filter( m => m.IsExist && m.ListName == 'ServiceMediaLinks').length > 0;\r\n this.testTimeTableShow = data.filter( m => m.IsExist && m.ListName == 'TestTimeTable').length > 0;\r\n this.faqListShow = data.filter( m => m.IsExist && m.ListName == 'FAQ').length > 0;\r\n if(this.tabUrl == ''){\r\n this.getActiveTabByDefault(data);\r\n }else{\r\n this.getActiveTabFromUrl();\r\n }\r\n });\r\n }\r\n\r\n getActiveTabByDefault(data: ServicesTabs[]){\r\n\r\n if(data.length > 0){\r\n var first = data.filter(m => m.IsExist)[0];\r\n if(first.ListName == 'ServiceGoals' && first.IsExist){\r\n this.goalsActive = 'active';\r\n this.getServiceGoals();\r\n }else if (first.ListName == 'ServiceAudiences' && first.IsExist){\r\n this.audnicesActive = 'active';\r\n this.getServiceAudnices();\r\n }else if (first.ListName == 'ServiceTargetedSectors' && first.IsExist){\r\n this.serviceTargetedSectorActive = 'active';\r\n this.getServiceTargetedSector();\r\n }else if (first.ListName == 'ServiceSteps' && first.IsExist){\r\n this.stepsActive = 'active';\r\n this.getServiceSteps();\r\n }else if (first.ListName == 'ServiceContent' && first.IsExist){\r\n this.contentActive = 'active';\r\n this.getServiceContent();\r\n }else if (first.ListName == 'ServiceNotes' && first.IsExist){\r\n this.notesActive = 'active';\r\n this.getServiceNotes();\r\n }else if (first.ListName == 'ServicePrerequirements' && first.IsExist){\r\n this.prerequirementsActive = 'active'; \r\n this.getServicePrerequirements();\r\n }else if (first.ListName == 'ServiceDocuments' && first.IsExist){\r\n this.serviceDoumentActive = 'active';\r\n this.getServiceDoument();\r\n }else if (first.ListName == 'ServiceMediaLinks' && first.IsExist){\r\n this.serviceVideoActive = 'active';\r\n this.getVideos();\r\n }else if (first.ListName == 'TestTimeTable' && first.IsExist){\r\n this.testTimeTableActive = 'active';\r\n this.getTestTimetable();\r\n }else if (first.ListName == 'FAQ' && first.IsExist){\r\n this.faqListActive = 'active';\r\n this.getFaq();\r\n }\r\n }\r\n }\r\n\r\n clearActiveTabs(){\r\n this.goalsActive = '';\r\n this.contentActive = '';\r\n this.notesActive = '';\r\n this.audnicesActive = '';\r\n this.serviceTargetedSectorActive = '';\r\n this.stepsActive = '';\r\n this.prerequirementsActive = '';\r\n this.serviceDoumentActive = '';\r\n this.testTimeTableActive = '';\r\n this.faqListActive = '';\r\n this.serviceVideoActive = '';\r\n this.relatedServiceGuidActive = '';\r\n this.showTabs = true;\r\n }\r\n\r\n changeUrl(url: string){\r\n window.history.pushState(\"object or string\", \"Title\", `/${url}`);\r\n }\r\n\r\n getRelatedEServiceGuid(arr: ServiceCenterIdOrServiceSectorIdOrServiceTagIdOrServiceCategoryIdOrSortBehaviorOrSMTotalSizeOrSMTotalFileCount[]) {\r\n if (arr) {\r\n arr.forEach(element => {\r\n this.apiServices\r\n .getListTopN('EServiceGuide', 1, true, 'ID', element.LookupId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: EServiceGuidList[]) => {\r\n if (data.length > 0) {\r\n this.ServiceGuid.push(data[0]);\r\n }\r\n });\r\n\r\n });\r\n }\r\n }\r\n\r\n async getCenterCode(id: number) {\r\n this.apiServices.getListById('centers', id).subscribe(\r\n (res: CenterList) => {\r\n this.centerCode = res.ItemFields.CenterCode;\r\n this.centerName = res.ItemFields.CenterName;\r\n // this.getServiceGoals();\r\n\r\n }\r\n )\r\n }\r\n\r\n getServiceGoals() {\r\n this.changeUrl(`${this._lang}/service/${this.productId}/servicegoal`);\r\n this._currentUrl = `${location.origin }/${this._lang}/service/${this.productId}/servicegoal'`;\r\n if(this.Goals.length == 0){\r\n this.apiServices.getListTopN('ServiceGoals', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceGoalsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceGoal = {\r\n ServiceGoalNumber: element.ItemFields.ServiceGoalNumber,\r\n ServiceGoalName: element.ItemFields.ServiceGoalName\r\n };\r\n \r\n this.Goals.push(obj);\r\n });\r\n //this.getServiceContent();\r\n });\r\n }\r\n }\r\n\r\n getServiceContent() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/infoAboutService');\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/infoAboutService';\r\n if(this.Content.length == 0){\r\n this.apiServices.getListTopN('ServiceContent', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceContentResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceContent = {\r\n ServiceContentTitle: element.ItemFields.ServiceContentTitle,\r\n ServiceContentDetailes: element.ItemFields.ServiceContentDetails,\r\n ServiceContentIcon: element.ItemFields.ServiceContentIcon!\r\n };\r\n \r\n this.Content.push(obj);\r\n });\r\n // this.getServiceNotes();\r\n });\r\n }\r\n }\r\n\r\n getServiceNotes() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/notes');\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/notes';\r\n if(this.Notes.length == 0 ){\r\n this.apiServices.getListTopN('ServiceNotes', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceNotesResponse[]) => {\r\n\r\n data.forEach(element => {\r\n\r\n var obj: ServiceNote = {\r\n serviceNoteDetailes: element?.ItemFields?.ServiceNoteDetails?.replace(new RegExp(':', 'gi'), ':').replace(new RegExp(environment.imptempPublicUrl, 'gi'), environment.imgPublicUrl),\r\n serviceNoteTitle: element.ItemFields.ServiceNoteTitle\r\n };\r\n\r\n this.Notes.push(obj);\r\n });\r\n //this.getServiceAudnices();\r\n });\r\n }\r\n }\r\n\r\n getServiceAudnices() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/serviceaudience');\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/serviceaudience';\r\n if(this.Audnices.length == 0){\r\n this.apiServices.getListTopN('ServiceAudiences', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceAudnicesResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceAudience = {\r\n serviceAudienceId: element.ItemFields.ServiceAudienceId,\r\n serviceAudienceName: element.ItemFields.ServiceAudienceName\r\n\r\n };\r\n\r\n this.Audnices.push(obj);\r\n });\r\n // this.getServiceSteps();\r\n });\r\n }\r\n }\r\n\r\n getServiceSteps() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/servicesteps');\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/servicesteps';\r\n if(this.Steps.length == 0){\r\n this.apiServices.getListTopN('ServiceSteps', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceStepsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceSteps = {\r\n ServiceStepsDetails: element.ItemFields.ServiceStepsDetails\r\n };\r\n\r\n this.Steps.push(obj);\r\n });\r\n // this.getServicePrerequirements();\r\n });\r\n }\r\n }\r\n\r\n getServicePrerequirements() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/serviceprerequirments');\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/serviceprerequirments';\r\n if(this.Prerequirements.length == 0){\r\n this.apiServices.getListTopN('ServicePrerequirements', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicePrerequirementsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServicePrerequirements = {\r\n ServicePrerequirementsDetails: element.ItemFields.ServicePrerequirementsDetails\r\n };\r\n\r\n this.Prerequirements.push(obj);\r\n });\r\n // this.getServiceDoument();\r\n });\r\n }\r\n }\r\n\r\n getServiceDoument() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/servicedocuments');\r\n \r\n //this.ServiceDoumentResponse = [];\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/servicedocuments';\r\n if(this.ServiceDoument.length == 0){\r\n this.ServiceDoument = [];\r\n this.apiServices.getListTopN('ServiceDocuments', 100, true, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceDocumentsResponse[]) => {\r\n\r\n data.forEach(element => {\r\n var obj: ServiceDocuments = {\r\n DocumentName: element.ItemFields.DocumentName_x0020_,\r\n ServiceDocument: element.ItemFields.ServiceDocument?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n ServiceDocumentWord: element.ItemFields.ServiceDocumentWord?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n ServiceDocumentCategory: element.ItemFields?.DocumentCategory?.LookupValue,\r\n ServiceDocumentOrder: element.ItemFields?.DocumentOrder\r\n };\r\n this.ServiceDoument.push(obj);\r\n\r\n if (obj.ServiceDocumentCategory) {\r\n if (obj.ServiceDocumentCategory != '') {\r\n this.hasCategory = true;\r\n if (this.tags.indexOf(obj.ServiceDocumentCategory) == -1) {\r\n this.tags.push(obj.ServiceDocumentCategory);\r\n this.tagsStatus.push(true);\r\n }\r\n }\r\n }\r\n });\r\n //this.ServiceDoument = this.ServiceDoument.sort((a, b) => a.ServiceDocumentOrder! - b.ServiceDocumentOrder!);\r\n this.ServiceDoumentResponse = [... this.ServiceDoument].sort((a, b) => a.ServiceDocumentOrder! - b.ServiceDocumentOrder!);\r\n //this.getTestTimetable();\r\n });\r\n }\r\n }\r\n\r\n getTestTimetable() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/timetable');\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/timetable';\r\n if(this.TestTimeTable.length == 0){\r\n this.apiServices.getListTopN('TestTimeTable', 100, true, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: TestTimeTableList[]) => {\r\n this.TestTimeTable = data;\r\n //this.getServiceTargetedSector();\r\n });\r\n }\r\n }\r\n\r\n getServiceTargetedSector() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/servicetargetedsectors');\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/servicetargetedsectors';\r\n if(this.ServiceTargetedSector.length == 0){\r\n this.apiServices.getListTopN('ServiceTargetedSectors', 100, true, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceTargetedSectorResponse[]) => {\r\n this.ServiceTargetedSector = data;\r\n // this.getFaq();\r\n });\r\n }\r\n }\r\n\r\n getFaq() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/faq');\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/faq';\r\n if(this.faqList.length == 0){\r\n this.apiServices.getListOrder('faq', 0, true, 'OrderFAQ').pipe(takeUntil(this.destroy$)).subscribe((data: FAQList[]) => {\r\n this.faqList = data.filter((x) => x.ItemFields.ServiceId?.LookupId == this.Product.serviceId);\r\n this.faqList.forEach(element => {\r\n element.ItemFields.FAQQuestion = element.ItemFields.FAQQuestion?.replace(/<[^>]*>/g, '');\r\n element.ItemFields.FAQAnswer = element.ItemFields.FAQAnswer;\r\n });\r\n //this.getVideos();\r\n });\r\n }\r\n }\r\n\r\n getVideos() {\r\n this.changeUrl(this._lang +'/service/'+ this.productId+ '/servicedocuments');\r\n this._currentUrl = location.origin+this._lang +'/service/'+ this.productId+ '/servicedocuments';\r\n if(this.ServiceVideo.length == 0){\r\n this.apiServices.getListTopN('ServiceMediaLinks', 100, true, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceMedialinksList[]) => {\r\n this.ServiceVideo = data;\r\n this.ServiceVideo = this.ServiceVideo.sort((a, b) => a.ItemFields?.ServiceMediaOrder! - b.ItemFields?.ServiceMediaOrder!);\r\n this.ServiceVideoResponse = [... this.ServiceVideo];\r\n data.forEach(element => {\r\n if (element.ItemFields.ServiceMediaCategory) {\r\n if (element.ItemFields.ServiceMediaCategory?.LookupValue != '') {\r\n this.videoHasCategory = true;\r\n if (this.videoTags.indexOf(element.ItemFields.ServiceMediaCategory?.LookupValue) == -1) {\r\n this.videoTags.push(element.ItemFields.ServiceMediaCategory?.LookupValue);\r\n this.videoTagsStatus.push(true);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n getServiceStructureTags(tagId: number) {\r\n this.apiServices.getListById('ServiceStructureTags', tagId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceStructureTagsResponse) => {\r\n this.tagImage = data?.ItemFields?.TagImage?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl);\r\n });\r\n }\r\n\r\n // cateogry(categoryitems: any[]): any[] {\r\n // let sortedcategoryitems = categoryitems.sort((a, b) => (a.ServiceGoalNumber < b.ServiceGoalNumber) ? -1 : ((b.ServiceGoalNumber > a.ServiceGoalNumber) ? 1 : 0));\r\n // return sortedcategoryitems;\r\n // }\r\n\r\n @ViewChild(\"table\") MyProp: ElementRef;\r\n\r\n scrollToElement(): void {\r\n this.MyProp.nativeElement.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n }\r\n\r\n getThumbnail(url: any, size: string): string {\r\n var video, results;\r\n\r\n video = url.match(/youtube\\.com.*(\\?v=|\\/embed\\/)(.{11})/).pop();\r\n // video = (results === null) ? url : results[1];\r\n\r\n if (size === 'small') {\r\n return 'https://img.youtube.com/vi/' + video + '/2.jpg';\r\n }\r\n return 'https://img.youtube.com/vi/' + video + '/0.jpg';\r\n }\r\n\r\n getVideo(url: string) {\r\n return this._sanitizer.bypassSecurityTrustResourceUrl(url.replace(this.imptempPublicUrl, this.imgPublicUrl) + '?rel=0');\r\n }\r\n\r\n open(item: ServiceMedialinksList) {\r\n this.showLoading = true;\r\n this.videoTitle = item.ItemFields.MediaLinkName;\r\n this.url = this.getVideo(item.ItemFields.MediaLink.Url);\r\n }\r\n\r\n stopVideo() {\r\n this.url = this._sanitizer.bypassSecurityTrustResourceUrl('');\r\n }\r\n\r\n onLoad() {\r\n this.showLoading = false;\r\n }\r\n\r\n getActiveTab() {\r\n this.goalsActive = (this.Goals.length > 0) ? 'active' : '';\r\n\r\n this.contentActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length == 0\r\n && this.Content.length > 0) ? 'active' : '';\r\n\r\n\r\n this.notesActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length == 0\r\n && this.Content.length == 0\r\n && this.Notes.length > 0) ? 'active' : '';\r\n\r\n this.audnicesActive = (this.Goals.length == 0\r\n && this.Audnices.length > 0) ? 'active' : '';\r\n\r\n this.serviceTargetedSectorActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length > 0) ? 'active' : '';\r\n\r\n\r\n this.stepsActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length > 0) ? 'active' : '';\r\n\r\n\r\n this.prerequirementsActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length == 0\r\n && this.Content.length == 0\r\n && this.Notes.length == 0\r\n && this.Prerequirements.length > 0) ? 'active' : '';\r\n\r\n\r\n this.serviceDoumentActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length == 0\r\n && this.Content.length == 0\r\n && this.Notes.length == 0\r\n && this.Prerequirements.length == 0\r\n && this.servicedocuments.length > 0) ? 'active' : '';\r\n\r\n\r\n\r\n this.testTimeTableActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length == 0\r\n && this.Content.length == 0\r\n && this.Notes.length == 0\r\n && this.Prerequirements.length == 0\r\n && this.servicedocuments.length == 0\r\n && this.ServiceVideo.length == 0\r\n && this.TestTimeTable.length > 0) ? 'active' : '';\r\n\r\n\r\n this.faqListActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length == 0\r\n && this.Content.length == 0\r\n && this.Notes.length == 0\r\n && this.Prerequirements.length == 0\r\n && this.servicedocuments.length == 0\r\n && this.ServiceVideo.length == 0\r\n && this.TestTimeTable.length == 0\r\n && this.faqList.length > 0) ? 'active' : '';\r\n\r\n\r\n this.serviceVideoActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length == 0\r\n && this.Content.length == 0\r\n && this.Notes.length == 0\r\n && this.Prerequirements.length == 0\r\n && this.servicedocuments.length == 0\r\n && this.ServiceVideo.length > 0) ? 'active' : '';\r\n\r\n\r\n this.relatedServiceGuidActive = (this.Goals.length == 0\r\n && this.Audnices.length == 0\r\n && this.ServiceTargetedSector.length == 0\r\n && this.Steps.length == 0\r\n && this.Content.length == 0\r\n && this.Notes.length == 0\r\n && this.Prerequirements.length == 0\r\n && this.servicedocuments.length == 0\r\n && this.ServiceVideo.length == 0\r\n && this.TestTimeTable.length == 0\r\n && this.faqList.length == 0\r\n && this.relatedServiceGuide.length > 0) ? 'active' : '';\r\n\r\n\r\n this.showTabs = true;\r\n\r\n }\r\n\r\n getActiveTabFromUrl() {\r\n this.goalsActive = (this.tabUrl == 'servicegoal') ? 'active' : '';\r\n this.contentActive = this.tabUrl == 'infoAboutService' ? 'active' : '';\r\n this.notesActive = this.tabUrl == 'notes' ? 'active' : '';\r\n this.audnicesActive = this.tabUrl == 'serviceaudience' ? 'active' : '';\r\n this.serviceTargetedSectorActive = this.tabUrl == 'servicetargetedsectors' ? 'active' : '';\r\n this.stepsActive = this.tabUrl == 'servicesteps' ? 'active' : '';\r\n this.prerequirementsActive = this.tabUrl == 'serviceprerequirments' ? 'active' : '';\r\n this.serviceDoumentActive = this.tabUrl == 'servicedocuments' ? 'active' : '';\r\n this.testTimeTableActive = this.tabUrl == 'timetable' ? 'active' : '';\r\n this.faqListActive = this.tabUrl == 'faq' ? 'active' : '';\r\n this.serviceVideoActive = this.tabUrl == 'videos' ? 'active' : '';\r\n this.relatedServiceGuidActive = this.tabUrl == 'relatedserviceguide' ? 'active' : '';\r\n this.showTabs = true;\r\n\r\n if( this.goalsActive == 'active'){\r\n this.getServiceGoals();\r\n }else if ( this.audnicesActive == 'active'){\r\n this.getServiceAudnices();\r\n }else if (this.serviceTargetedSectorActive == 'active'){\r\n this.getServiceTargetedSector();\r\n }else if (this.stepsActive == 'active'){\r\n this.getServiceSteps();\r\n }else if (this.contentActive == 'active'){\r\n this.getServiceContent();\r\n }else if (this.notesActive == 'active'){\r\n this.getServiceNotes();\r\n }else if (this.prerequirementsActive == 'active'){\r\n this.getServicePrerequirements();\r\n }else if (this.serviceDoumentActive == 'active'){\r\n this.getServiceDoument();\r\n }else if (this.serviceVideoActive == 'active'){\r\n this.getVideos();\r\n }else if (this.testTimeTableActive == 'active'){\r\n this.getTestTimetable();\r\n }else if (this.faqListActive == 'active'){\r\n this.getFaq();\r\n }\r\n }\r\n\r\n changeTage() {\r\n this.tagsStatus.forEach((element, index) => {\r\n this.tagsStatus[index] = this.tagsAll;\r\n });\r\n this.filterChange();\r\n }\r\n\r\n filterChange() {\r\n this.selectedTags = [];\r\n\r\n this.tagsStatus.forEach((element, index) => {\r\n if (element === true) {\r\n this.selectedTags.push(this.tags[index]);\r\n }\r\n //this.tagsNumber.push(0);\r\n });\r\n\r\n this.tagsAll = true;\r\n this.tagsStatus.forEach((element) => {\r\n if (!element) {\r\n this.tagsAll = false;\r\n }\r\n });\r\n\r\n\r\n this.getTagsResult();\r\n }\r\n\r\n getTagsResult() {\r\n\r\n if (!this.tagsAll && this.hasCategory) {\r\n //this.ServiceDoumentResponse = this.ServiceDoument.filter(x => this.selectedTags.indexOf(x.ServiceDocumentCategory!) != -1 || !x.ServiceDocumentCategory);\r\n this.ServiceDoumentResponse = this.ServiceDoument.filter(x => this.selectedTags.indexOf(x.ServiceDocumentCategory!) != -1);\r\n\r\n } else {\r\n this.ServiceDoumentResponse = [... this.ServiceDoument];\r\n }\r\n\r\n if (this.searchText != '') {\r\n if (!this.tagsAll && this.hasCategory) {\r\n this.ServiceDoumentResponse = this.ServiceDoument.filter(x => this.selectedTags.indexOf(x.ServiceDocumentCategory!) != -1);\r\n }\r\n this.ServiceDoumentResponse = this.ServiceDoumentResponse.filter(x => x.DocumentName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n }\r\n\r\n changeTageVideo() {\r\n this.videoTagsStatus.forEach((element, index) => {\r\n this.videoTagsStatus[index] = this.videoTagsAll;\r\n });\r\n this.filterChangeVideo();\r\n }\r\n\r\n filterChangeVideo() {\r\n this.videoSelectedTags = [];\r\n\r\n this.videoTagsStatus.forEach((element, index) => {\r\n if (element === true) {\r\n this.videoSelectedTags.push(this.videoTags[index]);\r\n }\r\n //this.tagsNumber.push(0);\r\n });\r\n\r\n this.videoTagsAll = true;\r\n this.videoTagsStatus.forEach((element) => {\r\n if (!element) {\r\n this.videoTagsAll = false;\r\n }\r\n });\r\n\r\n\r\n this.getVideoTagsResult();\r\n }\r\n\r\n getVideoTagsResult() {\r\n\r\n if (!this.videoTagsAll && this.videoHasCategory) {\r\n this.ServiceVideoResponse = this.ServiceVideo.filter(x => this.videoSelectedTags.indexOf(x.ItemFields.ServiceMediaCategory?.LookupValue!) != -1);\r\n } else {\r\n this.ServiceVideoResponse = [... this.ServiceVideo];\r\n }\r\n\r\n if (this.searchText2 != '') {\r\n if (!this.videoTagsAll && this.videoHasCategory) {\r\n this.ServiceVideoResponse = this.ServiceVideo.filter(x => this.videoSelectedTags.indexOf(x.ItemFields.ServiceMediaCategory?.LookupValue!) != -1);\r\n }\r\n this.ServiceVideoResponse = this.ServiceVideoResponse.filter(x => x.ItemFields.MediaLinkName?.toUpperCase().includes(this.searchText2.toUpperCase())\r\n );\r\n }\r\n }\r\n\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n this.actRoute.params.subscribe(async params => {\r\n\r\n this.productId = params[\"id\"];\r\n this.tabUrl = params[\"tab\"] ? params[\"tab\"] : '';\r\n this.getService();\r\n\r\n this.servicegoal = await this.apiResources.getByKey(\"servicegoal\");\r\n this.serviceaudience = await this.apiResources.getByKey(\"serviceaudience\");\r\n this.servicesteps = await this.apiResources.getByKey(\"servicesteps\");\r\n this.servicedocuments = await this.apiResources.getByKey(\"servicedocuments\");\r\n this.serviceprerequirments = await this.apiResources.getByKey(\"serviceprerequirments\");\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n this.EtecFullName = await this.apiResources.getByKey(\"EtecFullName\");\r\n this.infoAboutService = await this.apiResources.getByKey(\"InfoAboutService\");\r\n this.ServiceTargetedSectorsTitle = await this.apiResources.getByKey(\"ServiceTargetedSectors\");\r\n this.show = await this.apiResources.getByKey(\"show\");\r\n this.videos = await this.apiResources.getByKey(\"videos\");\r\n this.timetable = await this.apiResources.getByKey(\"timetable\");\r\n this.faq = await this.apiResources.getByKey(\"faq\");\r\n this.notes = await this.apiResources.getByKey(\"notes\");\r\n this.close = await this.apiResources.getByKey(\"close\");\r\n this.searchtxt = await this.apiResources.getByKey(\"search\");\r\n this.Category = await this.apiResources.getByKey(\"Category\");\r\n this.all = await this.apiResources.getByKey('all');\r\n this.more = await this.apiResources.getByKey('more');\r\n this.relatedServiceGuide = await this.apiResources.getByKey('RelatedServiceGuide');\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n this.apiServices.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'services') {\r\n this.PageTitle = element.ItemFields.MenuName;\r\n }\r\n\r\n });\r\n }\r\n );\r\n }\r\n );\r\n }\r\n\r\n putVisitNo(itemId: string) {\r\n this.apiServices.putVisitingCount('EServiceGuide', itemId).subscribe();\r\n }\r\n\r\n navigateUrl(product: EServiceGuidList) {\r\n\r\n this.putVisitNo(product.ItemId.toString());\r\n this.router.navigateByUrl('/servicecatalogdetails/' + product.ItemFields?.Title);\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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 \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
    \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

    {{showCount1<\r\n reasearchList.length?showCount1:reasearchList.length}} {{servicesof}} {{reasearchList.length}}

    \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
    \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
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    {{showCount2<\r\n reasearchList2.length?showCount2:reasearchList2.length}} تقرير من\r\n {{reasearchList2.length}}

    \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 \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 \r\n
    \r\n
    \r\n

    {{showCount3<\r\n reasearchList3.length?showCount3:reasearchList3.length}} تقرير من\r\n {{reasearchList3.length}}

    \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 { Component, OnInit } from '@angular/core';\r\n\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ResearchAndReportList } from 'src/app/models/ResearchAndReportList';\r\nimport { ResearchReportTypeLIst } from 'src/app/models/ResearchReportTypeList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { NgbModalConfig, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { Author, Year } from 'src/app/models/ResponseModel';\r\nimport { Authorlist } from 'src/app/models/authorlist';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-data',\r\n templateUrl: './data.component.html',\r\n styleUrls: ['./data.component.css']\r\n})\r\nexport class DataComponent implements OnInit {\r\n\r\n activeTab = 'report';\r\n imptempPublicUrl = environment.imptempPublicUrl;\r\n imgPublicUrl = environment.imgPublicUrl;\r\n reasearchList: ResearchAndReportList[] = [];\r\n reasearchListSearch: ResearchAndReportList[] = [];\r\n reasearchList2: ResearchAndReportList[] = [];\r\n reasearchList2Search: ResearchAndReportList[] = [];\r\n reasearchList3: ResearchAndReportList[] = [];\r\n reasearchList3Search: ResearchAndReportList[] = [];\r\n reasearchListwithFiltriation: ResearchAndReportList[] = [];\r\n titles: ResearchReportTypeLIst[];\r\n Authors: any[] = [];\r\n Years: any[] = [];\r\n searchText: any = '';\r\n destroy$: Subject = new Subject();\r\n showCount1 = 10;\r\n showCount2 = 10;\r\n showCount3 = 10;\r\n modalData = '';\r\n modalTitle = '';\r\n reportdownload = '';\r\n reportsearch = '';\r\n reportquotes = '';\r\n researchreward='';\r\n PageTitle = '';\r\n more: string = '';\r\n home = '';\r\n details = '';\r\n Author = '0';\r\n Year = '0';\r\n nocontent = '';\r\n EtecFullName = 'هيئة تقويم التعليم والتدريب';\r\n select = '';\r\n all = 'الكل';\r\n Reports = '';\r\n TechnicalReports = '';\r\n PublishedReports = '';\r\n servicesof = '';\r\n _lang = '';\r\n\r\n\r\n constructor(private actRoute: ActivatedRoute, private service: ApiService, config: NgbModalConfig, private modalService: NgbModal\r\n , private Title: Title, private apiResources: ResourcesService, private loading: LoadingService) {\r\n\r\n this.actRoute.params.subscribe(async params => {\r\n this.activeTab = params[\"id\"] == null ? 'report' : params[\"id\"]\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n });\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n\r\n config.backdrop = 'static';\r\n config.keyboard = false;\r\n }\r\n\r\n /** Custom methods */\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n getResearchReportList() {\r\n\r\n this.service.getListOrder('researchreportlist', 0, false, 'RRYear').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ResearchAndReportList[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields?.RRType?.LookupId === 2) {\r\n this.reasearchList.push(element);\r\n }\r\n if (element.ItemFields?.RRType?.LookupId === 1) {\r\n this.reasearchList2.push(element);\r\n }\r\n if (element.ItemFields?.RRType?.LookupId === 3) {\r\n this.reasearchList3.push(element);\r\n }\r\n });\r\n\r\n this.reasearchListSearch = [... this.reasearchList];\r\n this.reasearchList2Search = [... this.reasearchList2];\r\n this.reasearchList3Search = [... this.reasearchList3];\r\n }\r\n );\r\n }\r\n\r\n\r\n getsiteMenu() {\r\n this.service.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'data') {\r\n this.PageTitle = element.ItemFields.MenuName;\r\n this.Title.setTitle(this.EtecFullName + \" - \" + this.PageTitle);\r\n }\r\n\r\n });\r\n }\r\n );\r\n }\r\n\r\n open(content: any, citationDetails: string, mTitle: string) {\r\n this.modalData = citationDetails;\r\n this.modalTitle = mTitle;\r\n this.modalService.open(content, { centered: true });\r\n // this.modalService.open(content);\r\n }\r\n\r\n public cutString(str: string) {\r\n var output = ' ';\r\n var data = str.split(' ');\r\n var i = 0;\r\n for (var i = 0; i < 50; i++) {\r\n\r\n output = output.concat(data[i], ' ');\r\n };\r\n return output + ' ...';\r\n }\r\n\r\n onChangeAuthor(value: any) {\r\n this.Author = value.target.value;\r\n\r\n this.ShowItems(this.Author, this.Year);\r\n }\r\n\r\n onChangeYear(value: any) {\r\n this.Year = value.target.value;\r\n\r\n this.ShowItems(this.Author, this.Year);\r\n }\r\n\r\n ShowItems(Author: any, Year: any) {\r\n //console.log( this.activeTab);\r\n if (Author != '0' && Year != '0') {\r\n this.reasearchList3.splice(0, this.reasearchList3.length);\r\n this.reasearchList2.splice(0, this.reasearchList2.length);\r\n this.service.getListWithTwoConditionsTopN('researchreportlist', 0, false, 'RRYear', Author, 'RRYear', Year, 'Eq', 'And', 'Eq').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ResearchAndReportList[]) => {\r\n data.forEach(element => {\r\n\r\n if (element.ItemFields?.RRType?.LookupId === 1) {\r\n this.reasearchList2.push(element);\r\n }\r\n if (element.ItemFields?.RRType?.LookupId === 3) {\r\n this.reasearchList3.push(element);\r\n }\r\n });\r\n }\r\n );\r\n }\r\n if (Author == '0' && Year != '0') {\r\n this.reasearchList3.splice(0, this.reasearchList3.length);\r\n this.reasearchList2.splice(0, this.reasearchList2.length);\r\n this.service.getListsItemsFilterdOrderd('researchreportlist', 0, false, 'RRYear', 'RRYear', Year, 'Eq', '', 'Eq', '', '').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ResearchAndReportList[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields?.RRType?.LookupId === 1) {\r\n this.reasearchList2.push(element);\r\n }\r\n\r\n if (element.ItemFields?.RRType?.LookupId === 3) {\r\n this.reasearchList3.push(element);\r\n }\r\n });\r\n }\r\n );\r\n\r\n }\r\n if (Author != '0' && Year == '0') {\r\n\r\n this.reasearchList3.splice(0, this.reasearchList3.length);\r\n this.reasearchList2.splice(0, this.reasearchList2.length);\r\n this.service.getListsItemsFilterdOrderd('researchreportlist', 0, false, 'RRYear', 'RRWriter', Author, 'Eq', '', 'Eq', '', '').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ResearchAndReportList[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields?.RRType?.LookupId === 1) {\r\n this.reasearchList2.push(element);\r\n }\r\n\r\n if (element.ItemFields?.RRType?.LookupId === 3) {\r\n this.reasearchList3.push(element);\r\n }\r\n });\r\n }\r\n );\r\n\r\n }\r\n if (Author == '0' && Year == '0') {\r\n this.reasearchList3.splice(0, this.reasearchList3.length);\r\n this.reasearchList2.splice(0, this.reasearchList2.length);\r\n this.service.getListOrder('researchreportlist', 0, true, 'RRYear').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ResearchAndReportList[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields?.RRType?.LookupId === 1) {\r\n this.reasearchList2.push(element);\r\n }\r\n if (element.ItemFields?.RRType?.LookupId === 3) {\r\n this.reasearchList3.push(element);\r\n }\r\n });\r\n }\r\n );\r\n\r\n //this.reasearchList3 = this.reasearchList3.filter(a=>a.ItemFields.RRWriter == Author ) ;\r\n }\r\n\r\n\r\n }\r\n\r\n FillAuthorsDDL() {\r\n this.Authors.splice(0, this.Authors.length);\r\n this.service.getList('ResearchReportWriters').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Authorlist[]) => {\r\n data.forEach(element => {\r\n var obj: Author = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n NameAR: element.ItemFields.NameAR,\r\n NameEN: element.ItemFields.NameEN\r\n };\r\n\r\n this.Authors.push(obj);\r\n });\r\n }\r\n );\r\n }\r\n\r\n FillYearsDDL() {\r\n this.Years.splice(0, this.Authors.length);\r\n this.service.getListOrder('ResearchReportYears', 0, false, \"Year\").pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Authorlist[]) => {\r\n data.forEach(element => {\r\n var obj: Year = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n Year: element.ItemFields.Year\r\n };\r\n this.Years.push(obj);\r\n });\r\n }\r\n );\r\n }\r\n\r\n search() {\r\n this.showCount1 = 10;\r\n this.reasearchList = this.reasearchListSearch;\r\n this.reasearchList = this.reasearchList.filter(x => x.ItemFields?.RRName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n search2() {\r\n this.showCount2 = 10;\r\n this.reasearchList2 = this.reasearchList2Search;\r\n this.reasearchList2 = this.reasearchList2.filter(x => x.ItemFields?.RRName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n search3() {\r\n this.showCount3 = 10;\r\n this.reasearchList3 = this.reasearchList3Search;\r\n this.reasearchList3 = this.reasearchList3.filter(x => x.ItemFields?.RRName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n /** Component events */\r\n async ngOnInit() {\r\n\r\n this.getResearchReportList();\r\n this.getsiteMenu();\r\n this.FillAuthorsDDL();\r\n this.FillYearsDDL();\r\n\r\n this.reportsearch = await this.apiResources.getByKey(\"reportsearch\");\r\n this.reportdownload = await this.apiResources.getByKey(\"reportdownload\");\r\n this.reportquotes = await this.apiResources.getByKey(\"reportquotes\");\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n this.details = await this.apiResources.getByKey(\"details\");\r\n this.select = await this.apiResources.getByKey(\"select\");\r\n this.nocontent = await this.apiResources.getByKey(\"nocontent\");\r\n this.Reports = await this.apiResources.getByKey(\"Reports\");\r\n this.TechnicalReports = await this.apiResources.getByKey(\"TechnicalReports\");\r\n this.PublishedReports = await this.apiResources.getByKey(\"PublishedReports\");\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n this.researchreward = await this.apiResources.getByKey(\"research-reward\");\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-public-research',\r\n templateUrl: './public-research.component.html',\r\n styleUrls: ['./public-research.component.css']\r\n})\r\nexport class PublicResearchComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","

    public-research works!

    \r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-reports',\r\n templateUrl: './reports.component.html',\r\n styleUrls: ['./reports.component.css']\r\n})\r\nexport class ReportsComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\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 \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
    \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 \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 \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-reports-research',\r\n templateUrl: './reports-research.component.html',\r\n styleUrls: ['./reports-research.component.css']\r\n})\r\nexport class ReportsResearchComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","

    reports-research works!

    \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
    \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 \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
    \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 \r\n\r\n \r\n
    \r\n\r\n\r\n\r\n
    \r\n

    {{reportquotes}}

    \r\n \r\n
    \r\n
    \r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    ","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ScientificActivityList } from 'src/app/models/ScientificActivitiesList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { NgbModalConfig, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\n\r\n@Component({\r\n selector: 'app-scientific-activity',\r\n templateUrl: './scientific-activity.component.html',\r\n styleUrls: ['./scientific-activity.component.css']\r\n})\r\nexport class ScientificActivityComponent implements OnInit {\r\n activeTab = 'conferences';\r\n imptempPublicUrl = environment.imptempPublicUrl;\r\n imgPublicUrl = environment.imgPublicUrl;\r\n reasearchList: ScientificActivityList[] = [];\r\n reasearchList2: ScientificActivityList[] = [];\r\n searchText: any = '';\r\n reportsearch: string = '';\r\n reportdownload: string = '';\r\n reportquotes: string = '';\r\n destroy$: Subject = new Subject();\r\n modalData = '';\r\n home = '';\r\n PageTitle = '';\r\n close = '';\r\n LecturesAndDiscussions = '';\r\n conv = '';\r\n _lang = '';\r\n EtecFullName = 'هيئة تقويم التعليم والتدريب';\r\n\r\n constructor(private actRoute: ActivatedRoute, private service: ApiService, config: NgbModalConfig, private modalService: NgbModal\r\n , private Title: Title, private apiResources: ResourcesService, private loading: LoadingService) {\r\n\r\n // this.actRoute.params.subscribe(params =>\r\n // this.activeTab = params[\"id\"] == null ? 'conferences' : params[\"id\"]);\r\n this.actRoute.params.subscribe(async params => {\r\n this.activeTab = params[\"id\"] == null ? 'conferences' : params[\"id\"];\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n });\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n /** Custom methods */\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n getScientificActivitieList() {\r\n\r\n this.service.getList('ScientificActivitieList').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ScientificActivityList[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields?.ActivityType?.LookupId === 1) {\r\n this.reasearchList.push(element);\r\n }\r\n if (element.ItemFields?.ActivityType?.LookupId === 2) {\r\n this.reasearchList2.push(element);\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n getSiteMenu() {\r\n\r\n this.service.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'scientificactivities') {\r\n this.PageTitle = element.ItemFields.MenuName;\r\n this.Title.setTitle(this.EtecFullName + \" - \" + this.PageTitle);\r\n }\r\n\r\n });\r\n }\r\n );\r\n\r\n }\r\n\r\n // changeRatio(event: MatSelectChange) {\r\n // var optionSelected = event.value.split('-');\r\n // if (optionSelected[0] === 'ReportTitle' && optionSelected[1] === 'false') {\r\n // this.reasearchList.sort((a: any, b: any) => {\r\n // if (a.ItemFields.ResearchAndReportsTitle < b.ItemFields.ResearchAndReportsTitle) return -1;\r\n // if (a.ItemFields.ResearchAndReportsTitle < b.ItemFields.ResearchAndReportsTitle) return 1;\r\n // return 0;\r\n // });\r\n // }\r\n // if (optionSelected[0] === 'ReportTitle' && optionSelected[1] === 'true') {\r\n // this.reasearchList.sort((a: any, b: any) => {\r\n // if (a.ItemFields.ResearchAndReportsTitle < b.ItemFields.ResearchAndReportsTitle) return 1;\r\n // if (a.ItemFields.ResearchAndReportsTitle < b.ItemFields.ResearchAndReportsTitle) return -1;\r\n // return 0;\r\n // });\r\n // }\r\n\r\n // if (optionSelected[0] === 'Created' && optionSelected[1] === 'false') {\r\n // this.reasearchList.sort((a: any, b: any) => {\r\n // return new Date(b.ItemFields.Created) - new Date(a.ItemFields.Created);\r\n // });\r\n // }\r\n // if (optionSelected[0] === 'Created' && optionSelected[1] === 'true') {\r\n // this.reasearchList.sort((a: any, b: any) => {\r\n // return new Date(a.ItemFields.Created) - new Date(b.ItemFields.Created);\r\n // });\r\n\r\n // }\r\n // }\r\n\r\n open(content: any, citationDetails: string) {\r\n this.modalData = citationDetails;\r\n this.modalService.open(content);\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n this.getScientificActivitieList();\r\n this.getSiteMenu();\r\n\r\n this.reportsearch = await this.apiResources.getByKey(\"reportsearch\");\r\n this.reportdownload = await this.apiResources.getByKey(\"reportdownload\");\r\n this.reportquotes = await this.apiResources.getByKey(\"reportquotes\");\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n this.close = await this.apiResources.getByKey(\"close\");\r\n this.conv = await this.apiResources.getByKey(\"conv\");\r\n this.LecturesAndDiscussions = await this.apiResources.getByKey(\"LecturesAndDiscussions\");\r\n\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Publiccontentslist } from 'src/app/models/publiccontentslist';\r\n \r\nimport { PublicContents } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-privcay',\r\n templateUrl: './privcay.component.html',\r\n styleUrls: ['./privcay.component.css']\r\n})\r\n\r\nexport class PrivcayComponent implements OnInit {\r\n PageTitle ='';\r\n privacypolicy='';\r\n home ='';\r\n content ='';\r\n destroy$: Subject = new Subject();\r\n constructor(private apiServices : ApiService, private apiResources: ResourcesService) { }\r\n\r\n async ngOnInit(){\r\n this.apiServices.getList('PublicContents').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Publiccontentslist[]) => {\r\n data.forEach(element => {\r\n if(element.ItemFields.Title === 'privacy' ){\r\n var obj: PublicContents = {\r\n ID: element.ItemFields.ID ,\r\n Title: element.ItemFields.Title ,\r\n PublicContentTitle: element.ItemFields.PublicContentTitle,\r\n PublicContentDetails: element.ItemFields.PublicContentDetails\r\n \r\n };\r\n this.content = obj.PublicContentDetails ;\r\n }\r\n });\r\n }\r\n );\r\n\r\n this.privacypolicy = await this.apiResources.getByKey(\"privacypolicy\");\r\n this.home = await this.apiResources.getByKey(\"home\");\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 \r\n \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject, observable, take } from 'rxjs';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { interval, finalize, tap, noop, timer } from 'rxjs';\r\n// import lightGallery from 'lightgallery';\r\n// import lgZoom from 'lightgallery/plugins/zoom';\r\n// import { BeforeSlideDetail } from 'lightgallery/lg-events';\r\n\r\n@Component({\r\n selector: 'app-notfound',\r\n templateUrl: './notfound.component.html',\r\n styleUrls: ['./notfound.component.css']\r\n})\r\nexport class NotfoundComponent implements OnInit {\r\n destroy$: Subject = new Subject();\r\n code404: String = '';\r\n PageTitle: String;\r\n pagenotexists: string = '';\r\n redirectMessage = '';\r\n timerString = '.';\r\n\r\n // name = \"Angular \";\r\n // settings = {\r\n // counter: false,\r\n // plugins: [lgZoom]\r\n // };\r\n\r\n // onBeforeSlide = (detail: BeforeSlideDetail): void => {\r\n // const { index, prevIndex } = detail;\r\n // console.log(index, prevIndex);\r\n // };\r\n\r\n constructor(private apiResources: ResourcesService, private router: Router) {\r\n\r\n // setInterval(() => {\r\n // this.timerString +='.';\r\n // }, 1000);\r\n\r\n // setInterval(() => {\r\n // //this.tickTock();\r\n // this.router.navigateByUrl('/home' );\r\n // }, 3000);\r\n \r\n\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit(){\r\n\r\n this.code404 = await this.apiResources.getByKey(\"404code\");\r\n this.pagenotexists = await this.apiResources.getByKey(\"pagenotexists\");\r\n this.redirectMessage = await this.apiResources.getByKey(\"redirectmessage\");\r\n this.PageTitle = this.code404.toString();\r\n\r\n \r\n const source = interval(1000);\r\n const example = source.pipe(\r\n take(3), //take only the first 5 values\r\n finalize(() => this.router.navigateByUrl('/home' )) // Execute when the observable completes\r\n );\r\n const subscribe = example.subscribe(val => this.timerString +='.');\r\n\r\n }\r\n\r\n}\r\n","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period = 0, scheduler = asyncScheduler) {\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n","\r\n\r\n \r\n
    \r\n
    \r\n \r\n \r\n

    \r\n {{code404}}\r\n

    \r\n
    \r\n
    \r\n \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n

    \r\n {{code404}}\r\n

    \r\n\r\n

    \r\n {{pagenotexists}} \r\n

    \r\n

    \r\n {{redirectMessage}} {{timerString}}\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
    \r\n \r\n
    \r\n \r\n الرابط\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {{ i }}\r\n \r\n
    \r\n
    \r\n \r\n {{element.ItemFields.RRName}​\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 \r\n الرابط\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {{i}}\r\n \r\n
    \r\n
    \r\n \r\n {{ element.ItemFields?.RRName}\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 { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n \r\nimport { ResearchAndReportList } from 'src/app/models/ResearchAndReportList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\n\r\n@Component({\r\n selector: 'app-workshop',\r\n templateUrl: './workshop.component.html',\r\n styleUrls: ['./workshop.component.css']\r\n})\r\nexport class WorkshopComponent implements OnInit {\r\n activeTab = 'workshops';\r\n reasearchList: ResearchAndReportList[] = [];\r\n reasearchList2: ResearchAndReportList[] = [];\r\n\r\n destroy$: Subject = new Subject();\r\n constructor(private actRoute: ActivatedRoute, private service: ApiService) {\r\n\r\n this.actRoute.params.subscribe(params =>\r\n this.activeTab = params[\"id\"] == null ? 'workshops' : params[\"id\"]);\r\n }\r\n\r\n /** Custom methods */\r\n getResearchAndReports(){\r\n this.service.getList('ResearchAndReports').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ResearchAndReportList[]) => {\r\n data.forEach(element => {\r\n if(element.ItemFields?.RRType?.LookupId === 4 ){\r\n this.reasearchList.push(element);\r\n }\r\n if(element.ItemFields?.RRType?.LookupId === 5 ){\r\n this.reasearchList2.push(element);\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n/** Component events */\r\n ngOnInit(): void {\r\n\r\n this.getResearchAndReports();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-conference',\r\n templateUrl: './conference.component.html',\r\n styleUrls: ['./conference.component.css']\r\n})\r\nexport class ConferenceComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\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 2022-05-12 \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
    \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
    \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 من\t\r\n
    \r\n
    \r\n إلى\t\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n 8:30\t\r\n
    \r\n
    \r\n 9:00\t\r\n
    \r\n
    \r\n
    \r\n
    \r\n 8:30\t \r\n
    \r\n
    \r\n 9:00\t \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 الافتتاحية\t\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 \r\n
    \r\n
    \r\n \r\n \r\n

    \r\n {{faq}}\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
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n\r\n \r\n \r\n\r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FAQList } from 'src/app/models/FAQList';\r\n\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-faq',\r\n templateUrl: './faq.component.html',\r\n styleUrls: ['./faq.component.css']\r\n})\r\nexport class FAQComponent implements OnInit {\r\n \r\n faqList: FAQList[] = [];\r\n destroy$: Subject = new Subject();\r\n faq : string = '';\r\n home : string = '';\r\n\r\n constructor(private apiServices: ApiService, private apiRersources: ResourcesService) { }\r\n\r\n /** Custom methods */\r\n getNonServiceFaq(){\r\n\r\n this.apiServices.getListOrder('faq',0,true,'OrderFAQ' ).pipe(takeUntil(this.destroy$)).subscribe((data: FAQList[])=> this.faqList = data.filter((x) => x.ItemFields.ServiceId == null));\r\n }\r\n \r\n /** Component events */\r\n async ngOnInit() {\r\n this.getNonServiceFaq();\r\n\r\n this.faq = await this.apiRersources.getByKey(\"faq\");\r\n this.home = await this.apiRersources.getByKey(\"home\");\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { NewsList } from 'src/app/models/NewsList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { News } from 'src/app/models/ResponseModel';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-relatednews',\r\n templateUrl: './relatednews.component.html',\r\n styleUrls: ['./relatednews.component.css']\r\n})\r\nexport class RelatednewsComponent implements OnInit {\r\n @Input() keywords: string;\r\n\r\n AllNews: News[] = [];\r\n relatedNews: News[] = [];\r\n destroy$: Subject = new Subject();\r\n searchText: any = '';\r\n selectedValue: string;\r\n more: string = '';\r\n\r\n constructor(private apiServices: ApiService, private apiResources: ResourcesService) { }\r\n\r\n /** Custom methods */\r\n getRelatedNews() {\r\n this.apiServices.getList('news').pipe(takeUntil(this.destroy$)).subscribe(\r\n\r\n (data: NewsList[]) => {\r\n data.forEach(element => {\r\n var obj: News = {\r\n newsId: element.ItemId,\r\n newsDate: element.ItemFields.NewsDate,\r\n newsTitle: element.ItemFields.NewsTitle,\r\n newsDetails: this.cutString(element.ItemFields.NewsDetails?.replace(/<[^>]*>/g, '')),\r\n newsUrl: element.ItemFields?.NewsFile?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n NewsKeyword: element.ItemFields?.NewsKeyword,\r\n isActive: element.ItemFields.IsActive1,\r\n NewsCode: element.ItemFields.NewsCode\r\n };\r\n this.AllNews.push(obj);\r\n });\r\n\r\n this.AllNews.sort((a: any, b: any) => {\r\n return new Date(b.newsDate) - new Date(a.newsDate);\r\n });\r\n this.relatedNews = this.AllNews.filter(x => x.NewsKeyword?.toUpperCase().includes(this.keywords));\r\n this.relatedNews.slice(0, 3);\r\n }\r\n );\r\n }\r\n\r\n private cutString(str: string) {\r\n var output = ' ';\r\n var data = str.split(' ');\r\n var i = 0;\r\n for (var i = 0; i < 25; i++) {\r\n\r\n output = output.concat(data[i], ' ');\r\n };\r\n return output;\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n this.getRelatedNews();\r\n\r\n this.more = await this.apiResources.getByKey(\"more\");\r\n }\r\n\r\n ngOnChanges() {\r\n // this.apiServices.getList('news').pipe(takeUntil(this.destroy$)).subscribe(\r\n\r\n // (data: NewsList[]) => {\r\n // data.forEach(element => {\r\n // var obj: News = { \r\n // newsId: element.ItemId,\r\n // newsDate: element.ItemFields.NewsDate,\r\n // newsTitle: element.ItemFields.NewsTitle,\r\n // newsDetails: this.cutString(element.ItemFields.NewsDetails),\r\n // newsUrl: element.ItemFields?.NewsFile?.Url?.replace(environment.imptempPublicUrl,environment.imgPublicUrl),\r\n // NewsKeyword : element.ItemFields?.NewsKeyword,\r\n // isActive: element.ItemFields.IsActive1,\r\n // };\r\n // this.AllNews.push(obj);\r\n // });\r\n\r\n // this.AllNews.sort((a: any, b: any) => {\r\n // return new Date(b.newsDate) - new Date(a.newsDate);\r\n // });\r\n // this.relatedNews = this.AllNews.filter(x => x.NewsKeyword?.toUpperCase().includes(this.keywords));\r\n // this.relatedNews.slice(0,3);\r\n // }\r\n // );\r\n this.getRelatedNews();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\n\r\n@Component({\r\n selector: 'app-connect',\r\n templateUrl: './connect.component.html',\r\n styleUrls: ['./connect.component.css']\r\n})\r\nexport class ConnectComponent implements OnInit {\r\n\r\n constructor(private apiService: ApiService, private loader: LoadingService, private router:Router ) {\r\n // this.loader.show();\r\n // const idToken = localStorage.getItem('id_token');\r\n\r\n // if(!idToken){\r\n // if(this.apiService.logIn()){\r\n // this.router.navigateByUrl('/home');\r\n // }\r\n // }\r\n // else{\r\n // this.router.navigateByUrl('/home');\r\n // }\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n await this.apiService.logInAsync();\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
    {{ Category }}
    \r\n
    0\">\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
    0\">\r\n
    \r\n
    \r\n
    \r\n

    \r\n {{ item.ItemFields?.DocumentName }}\r\n

    \r\n \r\n
    \r\n \r\n \r\n \r\n PDF\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DynamicDocumentList } from 'src/app/models/DynamicDocumentList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { BlockLike } from 'typescript';\r\n\r\n@Component({\r\n selector: 'app-dynamic-document',\r\n templateUrl: './dynamic-document.component.html',\r\n styleUrls: ['./dynamic-document.component.css']\r\n})\r\nexport class DynamicDocumentComponent implements OnInit {\r\n @Input() ContentTitle: string\r\n // @Input() ContentDocuments: DynamicDocumentList[]\r\n @Input() ItemId: number\r\n _ContentDocuments: DynamicDocumentList[] = []\r\n _ContentDocumentsResponse: DynamicDocumentList[] = []\r\n tags: string[] = [];\r\n tagsStatus: boolean[] = [];\r\n selectedTags: string[] = [];\r\n\r\n searchtxt = '';\r\n searchText = '';\r\n Category = '';\r\n all = '';\r\n more = '';\r\n tagsAll = true;\r\n showCount = 12;\r\n imptempPublicUrl = environment.imptempPublicUrl;\r\n imgPublicUrl= environment.imgPublicUrl;\r\n constructor(private apiResources: ResourcesService, private apiServices: ApiService) { }\r\n\r\n async ngOnInit(): Promise {\r\n\r\n this.searchtxt = await this.apiResources.getByKey(\"search\");\r\n this.Category = await this.apiResources.getByKey(\"Category\");\r\n this.all = await this.apiResources.getByKey('all');\r\n this.more = await this.apiResources.getByKey('more');\r\n }\r\n\r\n ngOnChanges() {\r\n this.apiServices.GetListsItemsFilterd('PublicContentDocuments', 0, false, 'ContentTitle.LookupId', this.ItemId.toString())\r\n .subscribe(\r\n (data: DynamicDocumentList[]) => {\r\n this._ContentDocuments = data;\r\n this._ContentDocumentsResponse = data;\r\n this._ContentDocuments.forEach(element => {\r\n if (element.ItemFields?.DocumentCategory && this.tags.indexOf(element.ItemFields?.DocumentCategory?.LookupValue) == -1) {\r\n this.tags.push(element.ItemFields?.DocumentCategory?.LookupValue)\r\n this.tagsStatus.push(true)\r\n }\r\n });\r\n }\r\n );\r\n\r\n\r\n }\r\n\r\n\r\n getTagsResult() {\r\n if (!this.tagsAll) {\r\n this._ContentDocumentsResponse = this._ContentDocuments.filter(x => this.selectedTags.indexOf(x.ItemFields?.DocumentCategory?.LookupValue!) != -1);\r\n\r\n } else {\r\n this._ContentDocumentsResponse = [... this._ContentDocuments];\r\n }\r\n\r\n if (this.searchText != '') {\r\n if (!this.tagsAll) {\r\n this._ContentDocumentsResponse = this._ContentDocuments.filter(x => this.selectedTags.indexOf(x.ItemFields?.DocumentCategory?.LookupValue!) != -1);\r\n }\r\n this._ContentDocumentsResponse = this._ContentDocuments.filter(x => x.ItemFields?.DocumentName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n console.log(this.tags)\r\n }\r\n\r\n changeTage() {\r\n this.tagsStatus.forEach((element, index) => {\r\n this.tagsStatus[index] = this.tagsAll;\r\n });\r\n this.filterChange();\r\n }\r\n\r\n filterChange() {\r\n this.selectedTags = [];\r\n\r\n this.tagsStatus.forEach((element, index) => {\r\n if (element === true) {\r\n this.selectedTags.push(this.tags[index]);\r\n }\r\n //this.tagsNumber.push(0);\r\n });\r\n\r\n this.tagsAll = true;\r\n this.tagsStatus.forEach((element) => {\r\n if (!element) {\r\n this.tagsAll = false;\r\n }\r\n });\r\n\r\n console.log(this.tags);\r\n this.getTagsResult();\r\n }\r\n}\r\n","\r\n
    \r\n \r\n
    0\">\r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n {{item.ItemFields?.Title}}\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 { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\nimport { OpenDataCategoryList } from 'src/app/models/openDataCategoryList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-odatagroup',\r\n templateUrl: './odatagroup.component.html',\r\n styleUrls: ['./odatagroup.component.css']\r\n})\r\nexport class OdatagroupComponent implements OnInit {\r\n\r\n _lang = '';\r\n more = '';\r\n destroy$: Subject = new Subject();\r\n data : OpenDataCategoryList [] = [];\r\n home = '';\r\n PageTitle = '';\r\n\r\n constructor(private actRoute: ActivatedRoute, private service: ApiService,private Title: Title,\r\n private apiResources: ResourcesService, private loading: LoadingService, private router: Router) {\r\n this.actRoute.params.subscribe(async params => {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n });\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n \r\n\r\n /** Custom methods */\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n getSiteMenu() {\r\n\r\n this.service.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'opendata') {\r\n\r\n this.PageTitle = element.ItemFields.MenuName;\r\n this.Title.setTitle( this.PageTitle);\r\n }\r\n\r\n });\r\n }\r\n );\r\n }\r\n \r\n getOpenDataCategory() {\r\n this.service.getList('OpenDataCategories').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: OpenDataCategoryList[]) => {\r\n this.data = data;\r\n \r\n });\r\n }\r\n\r\n navigateUrl(product: OpenDataCategoryList){\r\n this.router.navigateByUrl('/opendata/' + product.ItemFields?.Title);\r\n }\r\n async ngOnInit(): Promise {\r\n this.more = await this.apiResources.getByKey('more');\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n \r\n this.getOpenDataCategory() ;\r\n this.getSiteMenu();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-odatarequest',\r\n templateUrl: './odatarequest.component.html',\r\n styleUrls: ['./odatarequest.component.css']\r\n})\r\nexport class OdatarequestComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\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
    \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
    \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 { Component, Input, OnInit } from '@angular/core';\r\nimport { Publiccontentslist } from 'src/app/models/publiccontentslist';\r\n\r\n@Component({\r\n selector: 'app-dynamicnav',\r\n templateUrl: './dynamicnav.component.html',\r\n styleUrls: ['./dynamicnav.component.css']\r\n})\r\nexport class DynamicnavComponent implements OnInit {\r\n @Input() hasSubContent = false;\r\n @Input() chilContentList: Publiccontentslist[];\r\n @Input() activeId :number ;\r\n\r\n childWithDocs: Publiccontentslist[];\r\n childWithOutDocs: Publiccontentslist[];\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges() {\r\n this.childWithDocs = this.chilContentList.filter(m => m.ItemFields?.Title == 'docs');\r\n this.childWithOutDocs = this.chilContentList.filter(m => m.ItemFields?.Title != 'docs');\r\n console.log(this.childWithDocs);\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 \"img\"\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 {{servicegoal}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{serviceaudience}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{ServiceTargetedSectorsTitle}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{servicesteps}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{infoAboutService}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{notes}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{serviceprerequirments}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{servicedocuments}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{videos}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{timetable}}\r\n \r\n
    • \r\n
    • \r\n \r\n \r\n {{faq}}\r\n \r\n
    • \r\n\r\n
    • \r\n \r\n \r\n {{relatedServiceGuide}}\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 \r\n
    \r\n
    \r\n \r\n
    0\">\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
    {{Category}}
    \r\n
    0\">\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 {{item.DocumentName}}\r\n

    \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n PDF\r\n \r\n \r\n DOC\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    {{showCount<\r\n ServiceDoumentResponse.length?showCount:ServiceDoumentResponse.length }} {{servicesof}}\r\n {{ServiceDoumentResponse.length}}

    \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
    0\">\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
    {{Category}}
    \r\n
    0\">\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 \"Image\"\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

    {{showVdCount<\r\n ServiceVideoResponse.length?showVdCount:ServiceVideoResponse.length }}\r\n {{servicesof}} {{ServiceVideoResponse.length}}

    \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 {{service.ItemFields?.ServiceStructureTag?.LookupValue}}\r\n
    \r\n

    {{service.ItemFields?.ServiceGuideTitle}}

    \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 { Component, Input, OnInit } from '@angular/core';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EServiceGuidList } from '../models/EServiceGuidList';\r\nimport { FAQList } from '../models/FAQList';\r\nimport { Service, ServiceGoal, ServiceContent, ServiceNote, ServiceAudience, ServiceSteps, ServicePrerequirements, ServiceDocuments } from '../models/ResponseModel';\r\nimport { ServiceMedialinksList } from '../models/ServiceMedialinksList';\r\nimport { ServiceStructureTagsResponse } from '../models/ServiceStructureTagsResponse';\r\nimport { ServiceTargetedSectorResponse } from '../models/ServiceTargetedSectorResponse';\r\nimport { ServicesTabs } from '../models/ServicesDto';\r\nimport { TestTimeTableList } from '../models/TestTimeTableList';\r\nimport { ApiService } from '../services/api.service';\r\nimport { ServiceAudnicesResponse } from '../models/ServiceAudnicesResponse';\r\nimport { ServiceContentResponse } from '../models/ServiceContentResponse';\r\nimport { ServiceDocumentsResponse } from '../models/ServiceDocumentsResponse';\r\nimport { ServiceGoalsResponse } from '../models/ServiceGoalsResponse';\r\nimport { ServiceNotesResponse } from '../models/ServiceNotesResponse';\r\nimport { ServicePrerequirementsResponse } from '../models/ServicePrerequirementsResponse';\r\nimport { ServiceStepsResponse } from '../models/ServiceStepsResponse';\r\nimport { Router } from '@angular/router';\r\nimport { ServicesResponse } from '../models/ServicesResponse';\r\nimport { ResourcesService } from '../services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-custom-service',\r\n templateUrl: './custom-service.component.html',\r\n styleUrls: ['./custom-service.component.css']\r\n})\r\nexport class CustomServiceComponent implements OnInit {\r\n productId: string | null;\r\n Product: Service;\r\n Goals: ServiceGoal[] = [];\r\n GoalsToShow: ServiceGoal[] = [];\r\n Content: ServiceContent[] = [];\r\n Notes: ServiceNote[] = [];\r\n Audnices: ServiceAudience[] = [];\r\n Steps: ServiceSteps[] = [];\r\n Prerequirements: ServicePrerequirements[] = [];\r\n ServiceDoument: ServiceDocuments[] = [];\r\n ServiceDoumentResponse: ServiceDocuments[] = [];\r\n TestTimeTable: TestTimeTableList[] = [];\r\n ServiceTargetedSector: ServiceTargetedSectorResponse[] = [];\r\n ServiceStructureTag: ServiceStructureTagsResponse[] = [];\r\n ServiceVideo: ServiceMedialinksList[] = [];\r\n ServiceVideoResponse: ServiceMedialinksList[] = [];\r\n serviceAllTabs: ServicesTabs[]= [];\r\n centerCode: string;\r\n centerName: string;\r\n currentUrl: string;\r\n htmlString = 'Hello gowtham';\r\n servicegoal = '';\r\n serviceaudience = '';\r\n servicesteps = '';\r\n servicedocuments = '';\r\n serviceprerequirments = '';\r\n serviceName = '';\r\n videos = '';\r\n timetable = '';\r\n faq = '';\r\n notes = '';\r\n close = '';\r\n PageTitle: string = '';\r\n home: string = '';\r\n EtecFullName = '';\r\n infoAboutService = '';\r\n searchText: any = '';\r\n searchText2: any = '';\r\n ServiceTargetedSectorsTitle = '';\r\n faqList: FAQList[] = [];\r\n tagImage: string;\r\n imptempPublicUrl = environment.imptempPublicUrl;\r\n imgPublicUrl = environment.imgPublicUrl;\r\n serviceSectorURL = '';\r\n url: SafeUrl | undefined;\r\n videoTitle: any;\r\n show: string = '';\r\n goalsActive = '';\r\n audnicesActive = '';\r\n serviceTargetedSectorActive = '';\r\n stepsActive = '';\r\n contentActive = '';\r\n notesActive = '';\r\n prerequirementsActive = '';\r\n serviceDoumentActive = '';\r\n serviceVideoActive = '';\r\n testTimeTableActive = '';\r\n faqListActive = '';\r\n relatedServiceGuidActive = '';\r\n\r\n goalsShow = false;\r\n audnicesShow = false;\r\n serviceTargetedSectorShow = false;\r\n stepsShow = false;\r\n contentShow = false;\r\n notesShow = false;\r\n prerequirementsShow = false;\r\n serviceDoumentShow = false;\r\n serviceVideoShow = false;\r\n testTimeTableShow = false;\r\n faqListShow = false;\r\n\r\n searchtxt = '';\r\n Category = '';\r\n all = '';\r\n more = '';\r\n relatedServiceGuide = '';\r\n showTabs = false;\r\n hasCategory = false;\r\n videoHasCategory = false;\r\n videoTagsAll = true;\r\n showLoading = false;\r\n videoTags: string[] = [];\r\n videoSelectedTags: string[] = [];\r\n videoTagsStatus: boolean[] = [];\r\n\r\n tagsAll = true;\r\n tags: string[] = [];\r\n selectedTags: string[] = [];\r\n tagsStatus: boolean[] = [];\r\n tagsNumber: number[] = [];\r\n ServiceGuid: EServiceGuidList[] = [];\r\n servicesof='';\r\n showCount =12;\r\n showVdCount =12;\r\n tabUrl = '';\r\n _lang = '';\r\n _location = '';\r\n _currentUrl = '';\r\n destroy$: Subject = new Subject();\r\n \r\n @Input() ServiceId : string;\r\n constructor(private apiServices: ApiService,private router: Router,\r\n public _sanitizer: DomSanitizer,private apiResources: ResourcesService) { }\r\n\r\n async ngOnInit(): Promise {\r\n this.servicegoal = await this.apiResources.getByKey(\"servicegoal\");\r\n this.serviceaudience = await this.apiResources.getByKey(\"serviceaudience\");\r\n this.servicesteps = await this.apiResources.getByKey(\"servicesteps\");\r\n this.servicedocuments = await this.apiResources.getByKey(\"servicedocuments\");\r\n this.serviceprerequirments = await this.apiResources.getByKey(\"serviceprerequirments\");\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n this.EtecFullName = await this.apiResources.getByKey(\"EtecFullName\");\r\n this.infoAboutService = await this.apiResources.getByKey(\"InfoAboutService\");\r\n this.ServiceTargetedSectorsTitle = await this.apiResources.getByKey(\"ServiceTargetedSectors\");\r\n this.show = await this.apiResources.getByKey(\"show\");\r\n this.videos = await this.apiResources.getByKey(\"videos\");\r\n this.timetable = await this.apiResources.getByKey(\"timetable\");\r\n this.faq = await this.apiResources.getByKey(\"faq\");\r\n this.notes = await this.apiResources.getByKey(\"notes\");\r\n this.close = await this.apiResources.getByKey(\"close\");\r\n this.searchtxt = await this.apiResources.getByKey(\"search\");\r\n this.Category = await this.apiResources.getByKey(\"Category\");\r\n this.all = await this.apiResources.getByKey('all');\r\n this.more = await this.apiResources.getByKey('more');\r\n this.relatedServiceGuide = await this.apiResources.getByKey('RelatedServiceGuide');\r\n this.servicesof = await this.apiResources.getByKey(\"servicesof\");\r\n }\r\n\r\n ngOnChanges(){\r\n console.log('Servcie' + this.ServiceId);\r\n this.productId = this.ServiceId;\r\n this.apiServices.getListTopN('Services', 1, true, \"ServiceCode\", this.productId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicesResponse[]) => {\r\n if(data.length > 0 ){\r\n var obj: Service = {\r\n serviceTitle: data[0]?.ItemFields.Title,\r\n serviceId: data[0]?.ItemId,\r\n serviceName: data[0]?.ItemFields.ServiceName,\r\n ServiceCenterId: data[0]?.ItemFields.ServiceCenterId?.LookupId,\r\n ServiceCenterName: data[0]?.ItemFields.ServiceCenterId?.LookupValue,\r\n ServiceDescription: data[0]?.ItemFields.ServiceDescription!?.replace(/<[^>]*>/g, ''),\r\n serviceIconUrl: './assets/img/icon/exam/GAT.svg',\r\n serviceLevel: 0,\r\n serviceVisitCount: 0,\r\n serviceDetailsFileUrl: data[0]?.ItemFields.ServiceCategoryId_x003a_ServiceC?.LookupValue,\r\n serviceKeyword: data[0]?.ItemFields.ServiceKeyword,\r\n serviceSector: data[0]?.ItemFields.ServiceSectorId?.LookupValue,\r\n serviceSectorId: data[0]?.ItemFields.ServiceSectorId?.LookupId,\r\n ServiceCategory: data[0]?.ItemFields.ServiceCategoryId?.LookupValue,\r\n ServiceCategoryId: data[0]?.ItemFields.ServiceCategoryId?.LookupId,\r\n serviceRegistrationLink: data[0]?.ItemFields?.DetailsButtonLink?.Url,\r\n serviceRegistrationTitle: data[0]?.ItemFields?.DetailsButtonLabel,\r\n isActive: data[0]?.ItemFields.IsActive1,\r\n showServiceRegistration: data[0]?.ItemFields?.ShowDetailsButton,\r\n ShowDetailsButton: data[0]?.ItemFields?.ShowDetailsButton,\r\n RelatedEServiceGuide: data[0]?.ItemFields?.RelatedEServiceGuide!\r\n }\r\n\r\n this.getServiceStructureTags(data[0]?.ItemFields?.ServiceTagId?.LookupId);\r\n this.Product = obj;\r\n this.getServiceTabs(data[0].ItemId);\r\n }\r\n \r\n });\r\n \r\n }\r\n\r\n route(url: string) {\r\n this.router.navigateByUrl(this._lang +'/service/'+ this.productId+ '/'+ url);\r\n }\r\n\r\n getServiceTabs(serviceId: number){\r\n this.clearActiveTabs();\r\n this.apiServices\r\n .checkService(serviceId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: ServicesTabs[]) => {\r\n this.serviceAllTabs = data.filter( m => m.IsExist );\r\n this.goalsShow = data.filter( m => m.IsExist && m.ListName == 'ServiceGoals').length > 0;\r\n this.audnicesShow = data.filter( m => m.IsExist && m.ListName == 'ServiceAudiences').length > 0;\r\n this.serviceTargetedSectorShow = data.filter( m => m.IsExist && m.ListName == 'ServiceTargetedSectors').length > 0;\r\n this.stepsShow = data.filter( m => m.IsExist && m.ListName == 'ServiceSteps').length > 0;\r\n this.contentShow = data.filter( m => m.IsExist && m.ListName == 'ServiceContent').length > 0;\r\n this.notesShow = data.filter( m => m.IsExist && m.ListName == 'ServiceNotes').length > 0;\r\n this.prerequirementsShow = data.filter( m => m.IsExist && m.ListName == 'ServicePrerequirements').length > 0;\r\n this.serviceDoumentShow = data.filter( m => m.IsExist && m.ListName == 'ServiceDocuments').length > 0;\r\n this.serviceVideoShow = data.filter( m => m.IsExist && m.ListName == 'ServiceMediaLinks').length > 0;\r\n this.testTimeTableShow = data.filter( m => m.IsExist && m.ListName == 'TestTimeTable').length > 0;\r\n this.faqListShow = data.filter( m => m.IsExist && m.ListName == 'FAQ').length > 0;\r\n this.getActiveTabByDefault(data);\r\n });\r\n }\r\n\r\n getServiceStructureTags(tagId: number) {\r\n this.apiServices.getListById('ServiceStructureTags', tagId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceStructureTagsResponse) => {\r\n this.tagImage = data?.ItemFields?.TagImage?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl);\r\n });\r\n }\r\n\r\n clearActiveTabs(){\r\n this.goalsActive = '';\r\n this.contentActive = '';\r\n this.notesActive = '';\r\n this.audnicesActive = '';\r\n this.serviceTargetedSectorActive = '';\r\n this.stepsActive = '';\r\n this.prerequirementsActive = '';\r\n this.serviceDoumentActive = '';\r\n this.testTimeTableActive = '';\r\n this.faqListActive = '';\r\n this.serviceVideoActive = '';\r\n this.relatedServiceGuidActive = '';\r\n this.showTabs = true;\r\n }\r\n\r\n getActiveTabByDefault(data: ServicesTabs[]){\r\n\r\n if(data.length > 0){\r\n var first = data.filter(m => m.IsExist)[0];\r\n if(first.ListName == 'ServiceGoals' && first.IsExist){\r\n this.goalsActive = 'active';\r\n this.getServiceGoals();\r\n }else if (first.ListName == 'ServiceAudiences' && first.IsExist){\r\n this.audnicesActive = 'active';\r\n this.getServiceAudnices();\r\n }else if (first.ListName == 'ServiceTargetedSectors' && first.IsExist){\r\n this.serviceTargetedSectorActive = 'active';\r\n this.getServiceTargetedSector();\r\n }else if (first.ListName == 'ServiceSteps' && first.IsExist){\r\n this.stepsActive = 'active';\r\n this.getServiceSteps();\r\n }else if (first.ListName == 'ServiceContent' && first.IsExist){\r\n this.contentActive = 'active';\r\n this.getServiceContent();\r\n }else if (first.ListName == 'ServiceNotes' && first.IsExist){\r\n this.notesActive = 'active';\r\n this.getServiceNotes();\r\n }else if (first.ListName == 'ServicePrerequirements' && first.IsExist){\r\n this.prerequirementsActive = 'active'; \r\n this.getServicePrerequirements();\r\n }else if (first.ListName == 'ServiceDocuments' && first.IsExist){\r\n this.serviceDoumentActive = 'active';\r\n this.getServiceDoument();\r\n }else if (first.ListName == 'ServiceMediaLinks' && first.IsExist){\r\n this.serviceVideoActive = 'active';\r\n this.getVideos();\r\n }else if (first.ListName == 'TestTimeTable' && first.IsExist){\r\n this.testTimeTableActive = 'active';\r\n this.getTestTimetable();\r\n }else if (first.ListName == 'FAQ' && first.IsExist){\r\n this.faqListActive = 'active';\r\n this.getFaq();\r\n }\r\n }\r\n }\r\n\r\n \r\n getServiceGoals() {\r\n this._currentUrl = `${location.origin }/${this._lang}/service/${this.productId}/servicegoal'`;\r\n if(this.Goals.length == 0){\r\n this.apiServices.getListTopN('ServiceGoals', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceGoalsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceGoal = {\r\n ServiceGoalNumber: element.ItemFields.ServiceGoalNumber,\r\n ServiceGoalName: element.ItemFields.ServiceGoalName\r\n };\r\n \r\n this.Goals.push(obj);\r\n });\r\n //this.getServiceContent();\r\n });\r\n }\r\n }\r\n\r\n getServiceContent() {\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/infoAboutService';\r\n if(this.Content.length == 0){\r\n this.apiServices.getListTopN('ServiceContent', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceContentResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceContent = {\r\n ServiceContentTitle: element.ItemFields.ServiceContentTitle,\r\n ServiceContentDetailes: element.ItemFields.ServiceContentDetails,\r\n ServiceContentIcon: element.ItemFields.ServiceContentIcon!\r\n };\r\n \r\n this.Content.push(obj);\r\n });\r\n // this.getServiceNotes();\r\n });\r\n }\r\n }\r\n\r\n getServiceNotes() {\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/notes';\r\n if(this.Notes.length == 0 ){\r\n this.apiServices.getListTopN('ServiceNotes', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceNotesResponse[]) => {\r\n\r\n data.forEach(element => {\r\n\r\n var obj: ServiceNote = {\r\n serviceNoteDetailes: element?.ItemFields?.ServiceNoteDetails?.replace(new RegExp(':', 'gi'), ':').replace(new RegExp(environment.imptempPublicUrl, 'gi'), environment.imgPublicUrl),\r\n serviceNoteTitle: element.ItemFields.ServiceNoteTitle\r\n };\r\n\r\n this.Notes.push(obj);\r\n });\r\n //this.getServiceAudnices();\r\n });\r\n }\r\n }\r\n\r\n getServiceAudnices() {\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/serviceaudience';\r\n if(this.Audnices.length == 0){\r\n this.apiServices.getListTopN('ServiceAudiences', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceAudnicesResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceAudience = {\r\n serviceAudienceId: element.ItemFields.ServiceAudienceId,\r\n serviceAudienceName: element.ItemFields.ServiceAudienceName\r\n\r\n };\r\n\r\n this.Audnices.push(obj);\r\n });\r\n // this.getServiceSteps();\r\n });\r\n }\r\n }\r\n\r\n getServiceSteps() {\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/servicesteps';\r\n if(this.Steps.length == 0){\r\n this.apiServices.getListTopN('ServiceSteps', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceStepsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServiceSteps = {\r\n ServiceStepsDetails: element.ItemFields.ServiceStepsDetails\r\n };\r\n\r\n this.Steps.push(obj);\r\n });\r\n // this.getServicePrerequirements();\r\n });\r\n }\r\n }\r\n\r\n getServicePrerequirements() {\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/serviceprerequirments';\r\n if(this.Prerequirements.length == 0){\r\n this.apiServices.getListTopN('ServicePrerequirements', 100, false, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicePrerequirementsResponse[]) => {\r\n data.forEach(element => {\r\n var obj: ServicePrerequirements = {\r\n ServicePrerequirementsDetails: element.ItemFields.ServicePrerequirementsDetails\r\n };\r\n\r\n this.Prerequirements.push(obj);\r\n });\r\n // this.getServiceDoument();\r\n });\r\n }\r\n }\r\n\r\n getServiceDoument() {\r\n //this.ServiceDoumentResponse = [];\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/servicedocuments';\r\n if(this.ServiceDoument.length == 0){\r\n this.ServiceDoument = [];\r\n this.apiServices.getListTopN('ServiceDocuments', 100, true, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceDocumentsResponse[]) => {\r\n\r\n data.forEach(element => {\r\n var obj: ServiceDocuments = {\r\n DocumentName: element.ItemFields.DocumentName_x0020_,\r\n ServiceDocument: element.ItemFields.ServiceDocument?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n ServiceDocumentWord: element.ItemFields.ServiceDocumentWord?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n ServiceDocumentCategory: element.ItemFields?.DocumentCategory?.LookupValue,\r\n ServiceDocumentOrder: element.ItemFields?.DocumentOrder\r\n };\r\n this.ServiceDoument.push(obj);\r\n\r\n if (obj.ServiceDocumentCategory) {\r\n if (obj.ServiceDocumentCategory != '') {\r\n this.hasCategory = true;\r\n if (this.tags.indexOf(obj.ServiceDocumentCategory) == -1) {\r\n this.tags.push(obj.ServiceDocumentCategory);\r\n this.tagsStatus.push(true);\r\n }\r\n }\r\n }\r\n });\r\n //this.ServiceDoument = this.ServiceDoument.sort((a, b) => a.ServiceDocumentOrder! - b.ServiceDocumentOrder!);\r\n this.ServiceDoumentResponse = [... this.ServiceDoument].sort((a, b) => a.ServiceDocumentOrder! - b.ServiceDocumentOrder!);\r\n //this.getTestTimetable();\r\n });\r\n }\r\n }\r\n\r\n getTestTimetable() {\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/timetable';\r\n if(this.TestTimeTable.length == 0){\r\n this.apiServices.getListTopN('TestTimeTable', 100, true, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: TestTimeTableList[]) => {\r\n this.TestTimeTable = data;\r\n //this.getServiceTargetedSector();\r\n });\r\n }\r\n }\r\n\r\n getServiceTargetedSector() {\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/servicetargetedsectors';\r\n if(this.ServiceTargetedSector.length == 0){\r\n this.apiServices.getListTopN('ServiceTargetedSectors', 100, true, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceTargetedSectorResponse[]) => {\r\n this.ServiceTargetedSector = data;\r\n // this.getFaq();\r\n });\r\n }\r\n }\r\n\r\n getFaq() {\r\n\r\n this._currentUrl = location.origin+'/'+this._lang +'/service/'+ this.productId+ '/faq';\r\n if(this.faqList.length == 0){\r\n this.apiServices.getListOrder('faq', 0, true, 'OrderFAQ').pipe(takeUntil(this.destroy$)).subscribe((data: FAQList[]) => {\r\n this.faqList = data.filter((x) => x.ItemFields.ServiceId?.LookupId == this.Product.serviceId);\r\n this.faqList.forEach(element => {\r\n element.ItemFields.FAQQuestion = element.ItemFields.FAQQuestion?.replace(/<[^>]*>/g, '');\r\n element.ItemFields.FAQAnswer = element.ItemFields.FAQAnswer;\r\n });\r\n //this.getVideos();\r\n });\r\n }\r\n }\r\n\r\n getVideos() {\r\n \r\n this._currentUrl = location.origin+this._lang +'/service/'+ this.productId+ '/servicedocuments';\r\n if(this.ServiceVideo.length == 0){\r\n this.apiServices.getListTopN('ServiceMediaLinks', 100, true, \"ServiceId\", this.Product.serviceId).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServiceMedialinksList[]) => {\r\n this.ServiceVideo = data;\r\n this.ServiceVideo = this.ServiceVideo.sort((a, b) => a.ItemFields?.ServiceMediaOrder! - b.ItemFields?.ServiceMediaOrder!);\r\n this.ServiceVideoResponse = [... this.ServiceVideo];\r\n data.forEach(element => {\r\n if (element.ItemFields.ServiceMediaCategory) {\r\n if (element.ItemFields.ServiceMediaCategory?.LookupValue != '') {\r\n this.videoHasCategory = true;\r\n if (this.videoTags.indexOf(element.ItemFields.ServiceMediaCategory?.LookupValue) == -1) {\r\n this.videoTags.push(element.ItemFields.ServiceMediaCategory?.LookupValue);\r\n this.videoTagsStatus.push(true);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n open(item: ServiceMedialinksList) {\r\n this.showLoading = true;\r\n this.videoTitle = item.ItemFields.MediaLinkName;\r\n this.url = this.getVideo(item.ItemFields.MediaLink.Url);\r\n }\r\n\r\n getVideo(url: string) {\r\n return this._sanitizer.bypassSecurityTrustResourceUrl(url.replace(this.imptempPublicUrl, this.imgPublicUrl) + '?rel=0');\r\n }\r\n putVisitNo(itemId: string) {\r\n this.apiServices.putVisitingCount('EServiceGuide', itemId).subscribe();\r\n }\r\n\r\n navigateUrl(product: EServiceGuidList) {\r\n\r\n this.putVisitNo(product.ItemId.toString());\r\n this.router.navigateByUrl('/servicecatalogdetails/' + product.ItemFields?.Title);\r\n\r\n }\r\n \r\n changeTageVideo() {\r\n this.videoTagsStatus.forEach((element, index) => {\r\n this.videoTagsStatus[index] = this.videoTagsAll;\r\n });\r\n this.filterChangeVideo();\r\n }\r\n\r\n filterChangeVideo() {\r\n this.videoSelectedTags = [];\r\n\r\n this.videoTagsStatus.forEach((element, index) => {\r\n if (element === true) {\r\n this.videoSelectedTags.push(this.videoTags[index]);\r\n }\r\n //this.tagsNumber.push(0);\r\n });\r\n\r\n this.videoTagsAll = true;\r\n this.videoTagsStatus.forEach((element) => {\r\n if (!element) {\r\n this.videoTagsAll = false;\r\n }\r\n });\r\n\r\n\r\n this.getVideoTagsResult();\r\n }\r\n\r\n getVideoTagsResult() {\r\n\r\n if (!this.videoTagsAll && this.videoHasCategory) {\r\n this.ServiceVideoResponse = this.ServiceVideo.filter(x => this.videoSelectedTags.indexOf(x.ItemFields.ServiceMediaCategory?.LookupValue!) != -1);\r\n } else {\r\n this.ServiceVideoResponse = [... this.ServiceVideo];\r\n }\r\n\r\n if (this.searchText2 != '') {\r\n if (!this.videoTagsAll && this.videoHasCategory) {\r\n this.ServiceVideoResponse = this.ServiceVideo.filter(x => this.videoSelectedTags.indexOf(x.ItemFields.ServiceMediaCategory?.LookupValue!) != -1);\r\n }\r\n this.ServiceVideoResponse = this.ServiceVideoResponse.filter(x => x.ItemFields.MediaLinkName?.toUpperCase().includes(this.searchText2.toUpperCase())\r\n );\r\n }\r\n }\r\n\r\n changeTage() {\r\n this.tagsStatus.forEach((element, index) => {\r\n this.tagsStatus[index] = this.tagsAll;\r\n });\r\n this.filterChange();\r\n }\r\n\r\n filterChange() {\r\n this.selectedTags = [];\r\n\r\n this.tagsStatus.forEach((element, index) => {\r\n if (element === true) {\r\n this.selectedTags.push(this.tags[index]);\r\n }\r\n //this.tagsNumber.push(0);\r\n });\r\n\r\n this.tagsAll = true;\r\n this.tagsStatus.forEach((element) => {\r\n if (!element) {\r\n this.tagsAll = false;\r\n }\r\n });\r\n\r\n\r\n this.getTagsResult();\r\n }\r\n\r\n getTagsResult() {\r\n\r\n if (!this.tagsAll && this.hasCategory) {\r\n //this.ServiceDoumentResponse = this.ServiceDoument.filter(x => this.selectedTags.indexOf(x.ServiceDocumentCategory!) != -1 || !x.ServiceDocumentCategory);\r\n this.ServiceDoumentResponse = this.ServiceDoument.filter(x => this.selectedTags.indexOf(x.ServiceDocumentCategory!) != -1);\r\n\r\n } else {\r\n this.ServiceDoumentResponse = [... this.ServiceDoument];\r\n }\r\n\r\n if (this.searchText != '') {\r\n if (!this.tagsAll && this.hasCategory) {\r\n this.ServiceDoumentResponse = this.ServiceDoument.filter(x => this.selectedTags.indexOf(x.ServiceDocumentCategory!) != -1);\r\n }\r\n this.ServiceDoumentResponse = this.ServiceDoumentResponse.filter(x => x.DocumentName?.toUpperCase().includes(this.searchText.toUpperCase()));\r\n }\r\n }\r\n\r\n getThumbnail(url: any, size: string): string {\r\n var video, results;\r\n\r\n video = url.match(/youtube\\.com.*(\\?v=|\\/embed\\/)(.{11})/).pop();\r\n // video = (results === null) ? url : results[1];\r\n\r\n if (size === 'small') {\r\n return 'https://img.youtube.com/vi/' + video + '/2.jpg';\r\n }\r\n return 'https://img.youtube.com/vi/' + video + '/0.jpg';\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\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 { Component, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ApiService } from '../services/api.service';\r\nimport { PublicContents } from '../models/ResponseModel';\r\nimport { Publiccontentslist } from '../models/publiccontentslist';\r\nimport { ResourcesService } from '../services/resources.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { LoadingService } from '../services/loading.service';\r\nimport { DynamicDocumentList } from '../models/DynamicDocumentList';\r\nimport { ServicesResponse } from '../models/ServicesResponse';\r\n\r\n@Component({\r\n selector: 'app-page',\r\n templateUrl: './page.component.html',\r\n styleUrls: ['./page.component.css']\r\n})\r\nexport class PageComponent implements OnInit {\r\n\r\n PageTitle = '';\r\n privacypolicy = '';\r\n home = '';\r\n content = '';\r\n hasSubContent = false;\r\n hasCustomContent = false;\r\n activeId = 0;\r\n _lang = '';\r\n isService = false;\r\n _routeParameter = '';\r\n _route = '';\r\n chilContentList: Publiccontentslist[] = [];\r\n customDocumentList: DynamicDocumentList [] = [];\r\n destroy$: Subject = new Subject();\r\n\r\n constructor(private actRoute: ActivatedRoute, private apiServices: ApiService\r\n , private apiResources: ResourcesService\r\n ,private router: Router,\r\n private loading: LoadingService) {\r\n this.actRoute.params.subscribe(async params => {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n });\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n async ngOnInit() {\r\n this.actRoute.params.subscribe(async params => {\r\n\r\n if(params[\"id\"] && params[\"id\"] === 'service-details' && !params[\"route\"]){\r\n this.router.navigateByUrl('/notfound')\r\n }\r\n this.apiServices.getListWithTwoConditionsTopN('PublicContents', 1, false, \"ContentCode\", params[\"id\"], \"RouteParameter\", params[\"route\"]?params[\"route\"] : '', \"Eq\", params[\"route\"]? \"And\":\"\", \"Eq\")\r\n .pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Publiccontentslist[]) => {\r\n data.forEach(element => {\r\n var obj: PublicContents = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n PublicContentTitle: element.ItemFields.PublicContentTitle,\r\n PublicContentDetails: element.ItemFields.PublicContentDetails,\r\n HasSubContent: element.ItemFields.HasSubContent,\r\n HasCustomContent: element.ItemFields.HasCustomContent,\r\n RouteParameter: element.ItemFields?.RouteParameter,\r\n ContentCode: element.ItemFields?.ContentCode,\r\n };\r\n this.privacypolicy = obj.PublicContentTitle;\r\n \r\n //show page content if has no child\r\n if (!obj.HasSubContent && !obj.HasCustomContent) {\r\n this.content = obj.PublicContentDetails;\r\n this.privacypolicy = obj.PublicContentTitle;\r\n }\r\n else if (!obj.HasSubContent && obj.HasCustomContent){\r\n this.hasCustomContent = true;\r\n this.apiServices.GetListsItemsFilterd('PublicContentDocuments', 0, false, 'ContentTitle.LookupValue', obj.PublicContentTitle)\r\n .subscribe(\r\n (data: DynamicDocumentList[]) => {\r\n this.customDocumentList = data ;\r\n }\r\n );\r\n }\r\n //else if (obj.HasSubContent && obj.HasCustomContent){\r\n else if (obj.RouteParameter ){\r\n this.hasSubContent = true;\r\n this.hasCustomContent = true;\r\n this.apiServices.GetListsItemsFilterd('services', 0, false, 'ServiceCode', obj.RouteParameter!)\r\n .subscribe(\r\n (data: ServicesResponse[]) => {\r\n if(data.length > 0 ){\r\n this.isService = true;\r\n this._routeParameter = obj.RouteParameter!;\r\n }\r\n }\r\n );\r\n }\r\n //build child view while it has childs\r\n else {\r\n this.hasSubContent = true;\r\n this.apiServices.GetListsItemsFilterd('PublicContents', 0, false, 'ParentContent.LookupValue', obj.Title)\r\n .subscribe(\r\n (data: Publiccontentslist[]) => {\r\n this.chilContentList = data.sort((a, b) => a.ItemFields?.ContentOrder! - b.ItemFields?.ContentOrder!)\r\n\r\n this.activeId = data[0].ItemId;\r\n }\r\n );\r\n }\r\n });\r\n\r\n if(data.length == 0){\r\n this.router.navigateByUrl('/notfound')\r\n console.log('from here')\r\n }\r\n }\r\n );\r\n\r\n });\r\n\r\n //this.privacypolicy = await this.apiResources.getByKey(\"privacypolicy\");\r\n this.home = await this.apiResources.getByKey(\"home\");\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
    {{Category}}
    \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 \"img\"\r\n {{service.ItemFields?.ServiceStructureTag?.LookupValue}}\r\n
    \r\n

    {{service.ItemFields?.ServiceGuideTitle}}

    \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

    {{showCount< response.length?showCount:response.length }}\r\n {{servicesof}} {{response.length}}

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { EServiceGuidList } from 'src/app/models/EServiceGuidList';\r\nimport { ServiceStructureTagsList } from 'src/app/models/ServiceStructureTagsList';\r\nimport { ServiceStructureTagsResponse } from 'src/app/models/ServiceStructureTagsResponse';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-servicecatalog',\r\n templateUrl: './servicecatalog.component.html',\r\n styleUrls: ['./servicecatalog.component.css'],\r\n})\r\nexport class ServicecatalogComponent implements OnInit {\r\n tags: ServiceStructureTagsResponse[] = [];\r\n tagsNumber: number[] = [];\r\n tagsStaus: boolean[] = [];\r\n selectedTags: string[] = [];\r\n responseService: EServiceGuidList[] = [];\r\n response: EServiceGuidList[] = [];\r\n destroy$: Subject = new Subject();\r\n all: string = '';\r\n Category: string = '';\r\n more: string = '';\r\n searchtxt: string = '';\r\n searchText: string = '';\r\n serviceGuid : string = '';\r\n home: string = '';\r\n tagsAll = true;\r\n showCount =12;\r\n servicesof='';\r\n\r\n constructor(\r\n private apiServices: ApiService,\r\n private apiRersources: ResourcesService,\r\n private router: Router,\r\n private loading: LoadingService,\r\n private actRoute: ActivatedRoute\r\n ) {\r\n this.actRoute.params.subscribe(async params =>\r\n {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if(isRoute){\r\n window.location.reload();\r\n }\r\n });\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiRersources.clearResource();\r\n }\r\n\r\n\r\n async ngOnInit(): Promise {\r\n this.Category = await this.apiRersources.getByKey('Category');\r\n this.all = await this.apiRersources.getByKey('all');\r\n this.more = await this.apiRersources.getByKey('more');\r\n this.home = await this.apiRersources.getByKey('home');\r\n this.serviceGuid = await this.apiRersources.getByKey(\"ServiceGuide\");\r\n this.servicesof = await this.apiRersources.getByKey(\"servicesof\");\r\n\r\n this.getStructureTags();\r\n this.getServiceGuid();\r\n }\r\n\r\n getStructureTags() {\r\n this.apiServices\r\n .getList('ServiceStructureTags')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: ServiceStructureTagsResponse[]) => {\r\n this.tags = data;\r\n data.forEach((element) => {\r\n this.tagsStaus.push(true);\r\n this.selectedTags.push(element.ItemFields.ServiceTagName);\r\n this.tagsNumber.push(0);\r\n });\r\n\r\n this.filterChange();\r\n });\r\n }\r\n\r\n getServiceGuid() {\r\n this.apiServices\r\n .getList('EServiceGuide')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: EServiceGuidList[]) => {\r\n this.responseService = data.sort((a, b) => (a.ItemFields?.EServiceOrder -b.ItemFields?.EServiceOrder));\r\n this.response = [... this.responseService ]; \r\n this.responseService.forEach((element) => {\r\n var index = this.tags.findIndex(\r\n (x) =>\r\n x.ItemFields.ServiceTagName ===\r\n element.ItemFields?.ServiceStructureTag.LookupValue!\r\n );\r\n if (index != -1) {\r\n this.tagsNumber[index]++;\r\n }\r\n });\r\n });\r\n }\r\n\r\n getSorted(data: EServiceGuidList[]){\r\n return data.sort((a, b) => (a.ItemFields?.EServiceOrder -b.ItemFields?.EServiceOrder));\r\n }\r\n\r\n getServiceGuidFilter() {\r\n this.tagsStaus.forEach((element, index) => {\r\n if (element === true) {\r\n this.selectedTags.push(this.tags[index].ItemFields.ServiceTagName);\r\n }\r\n });\r\n\r\n this.apiServices\r\n .getList('EServiceGuide')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: EServiceGuidList[]) => {\r\n this.responseService = data.filter(x => this.selectedTags.indexOf(x.ItemFields?.ServiceStructureTag.LookupValue) != -1 );\r\n this.response = data.filter(x => this.selectedTags.indexOf(x.ItemFields?.ServiceStructureTag.LookupValue) != -1 );\r\n this.responseService.forEach(element => {\r\n element.ItemFields.ServiceGuidIcon = this.tags.filter(m => m.ItemId == element.ItemFields.ServiceStructureTag.LookupId)[0].ItemFields.TagImage?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl);\r\n });\r\n });\r\n }\r\n\r\n changeTage() {\r\n this.tagsStaus.forEach((element, index) => {\r\n this.tagsStaus[index] = this.tagsAll;\r\n });\r\n this.filterChange();\r\n }\r\n\r\n filterChange() {\r\n //this.tagsNumber = [];\r\n this.selectedTags = [];\r\n\r\n this.tagsStaus.forEach((element, index) => {\r\n if (element === true) {\r\n this.selectedTags.push(this.tags[index].ItemFields.ServiceTagName);\r\n }\r\n this.tagsNumber.push(0);\r\n });\r\n\r\n this.tagsAll = true;\r\n this.tagsStaus.forEach((element) => {\r\n if (!element) {\r\n this.tagsAll = false;\r\n }\r\n });\r\n\r\n this.getServiceGuidFilter();\r\n }\r\n\r\n search(){\r\n this.responseService = this.response.filter(x=> x.ItemFields?.ServiceGuideTitle?.toUpperCase().includes(this.searchText.toUpperCase()))\r\n }\r\n\r\n putVisitNo(itemId: string) {\r\n this.apiServices.putVisitingCount('EServiceGuide', itemId).subscribe();\r\n }\r\n\r\n navigateUrl(product: EServiceGuidList) {\r\n \r\n this.putVisitNo(product.ItemId.toString());\r\n this.router.navigateByUrl('/servicecatalogdetails/' + product.ItemFields?.Title);\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

    {{response.ItemFields?.ServiceGuideTitle}}

    \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

    \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
    \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 \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Observable, Subject, takeUntil } from 'rxjs';\r\nimport { EServiceGuidList } from 'src/app/models/EServiceGuidList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { InputModality } from '@angular/cdk/a11y';\r\nimport { EServiceGuideChannelList } from 'src/app/models/EServiceGuideChannelList';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\n\r\n@Component({\r\n selector: 'app-servicecatalogdetails',\r\n templateUrl: './servicecatalogdetails.component.html',\r\n styleUrls: ['./servicecatalogdetails.component.css']\r\n})\r\nexport class ServicecatalogdetailsComponent implements OnInit {\r\n home: string = '';\r\n Guid: string;\r\n serviceGuideDescription: string = '';\r\n serviceGuideRequirements: string = '';\r\n serviceGuideSupportChannel: string = '';\r\n serviceGuideSteps: string = '';\r\n serviceGuideTargetedGroup: string = '';\r\n serviceGuideAvailabilityTime: string = '';\r\n serviceGuideAlternativeChannels: string = '';\r\n serviceGuid: string = '';\r\n jumpToService: string = '';\r\n serviceGuideCompletionTime: string = '';\r\n destroy$: Subject = new Subject();\r\n response: EServiceGuidList;\r\n channel$: EServiceGuideChannelList[];\r\n defaultLink: string = '';\r\n\r\n constructor(private actRoute: ActivatedRoute, private apiServices: ApiService\r\n , private apiRersources: ResourcesService, private router: Router\r\n , private Title: Title,\r\n private loading: LoadingService) {\r\n\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiRersources.clearResource();\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.home = await this.apiRersources.getByKey('home');\r\n this.serviceGuideDescription = await this.apiRersources.getByKey(\"serviceGuideDescription\");\r\n this.serviceGuideRequirements = await this.apiRersources.getByKey(\"serviceGuideRequirements\");\r\n this.serviceGuideSupportChannel = await this.apiRersources.getByKey(\"ServiceGuideChannel\");\r\n this.serviceGuideSteps = await this.apiRersources.getByKey(\"ServiceGuideSteps\");\r\n this.serviceGuideTargetedGroup = await this.apiRersources.getByKey(\"ServiceGuideTargetedGroup\");\r\n this.serviceGuideAvailabilityTime = await this.apiRersources.getByKey(\"ServiceGuideAvailabilityTime\");\r\n this.serviceGuideAlternativeChannels = await this.apiRersources.getByKey(\"ServiceGuideAlternativeChannels\");\r\n this.serviceGuid = await this.apiRersources.getByKey(\"ServiceGuide\");\r\n this.serviceGuideCompletionTime = await this.apiRersources.getByKey(\"ServiceGuideCompletionTime\");\r\n this.jumpToService = await this.apiRersources.getByKey(\"JumpToService\");\r\n\r\n this.actRoute.params.subscribe(async params => {\r\n this.Guid = params[\"id\"];\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n\r\n this.getCatalog();\r\n });\r\n\r\n this.getServiceChannel();\r\n }\r\n\r\n getCatalog() {\r\n\r\n this.apiServices\r\n .getListTopN('EServiceGuide', 1, true, 'Title', this.Guid)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: EServiceGuidList[]) => {\r\n if (data.length === 0) {\r\n this.router.navigateByUrl('/notfound')\r\n }\r\n\r\n this.response = data[0];\r\n this.Title.setTitle(data[0]?.ItemFields?.ServiceGuideTitle);\r\n });\r\n }\r\n\r\n getServiceChannel() {\r\n return this.apiServices\r\n .getList('EServiceGuideChannel')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data) => this.channel$ = data);\r\n }\r\n\r\n getChannelById(id: number) {\r\n return this.channel$.filter(m => m.ItemId == id)[0].ItemFields;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport lgZoom from 'lightgallery/plugins/zoom';\r\nimport lgFullscreen from 'lightgallery/plugins/fullscreen';\r\nimport { BeforeSlideDetail } from 'lightgallery/lg-events';\r\n\r\n@Component({\r\n selector: 'app-lightgallery',\r\n templateUrl: './lightgallery.component.html',\r\n styleUrls: ['./lightgallery.component.css']\r\n})\r\nexport class LightgalleryComponent implements OnInit {\r\n // start settings\r\n settings = {\r\n counter: false,\r\n actualSize: true,\r\n height: '100%',\r\n width: '100%',\r\n zoomFromOrigin: true,\r\n zoomPosition: 'center',\r\n mobileSettings: { controls: true,},\r\n plugins: [lgFullscreen, lgZoom]\r\n };\r\n onBeforeSlide = (detail: BeforeSlideDetail): void => {\r\n const { index, prevIndex } = detail;\r\n console.log(index, prevIndex);\r\n };\r\n // end settings\r\n \r\n constructor() { }\r\n ngOnInit(): void {\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 { Component, OnInit } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-scroll-totop',\r\n templateUrl: './scroll-totop.component.html',\r\n})\r\nexport class ScrollTotopComponent implements OnInit {\r\n constructor() {}\r\n ngOnInit() {\r\n fromEvent(window, 'scroll').pipe()\r\n .subscribe((_e: Event) => {\r\n this.scrollY = window.scrollY ;\r\n });\r\n }\r\n\r\n scrollY =0;\r\n isTop = window.scrollY === 0;\r\n\r\n scrollToTop() {\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\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 \"img\"\r\n {{service.ItemFields?.ServiceStructureTag?.LookupValue}}\r\n
    \r\n

    {{service.ItemFields?.ServiceGuideTitle}}

    \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

    {{showCount< response.length?showCount:response.length }}\r\n {{servicesof}} {{response?.length}}

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { EServiceGuidList } from 'src/app/models/EServiceGuidList';\r\nimport { ServiceStructureTagsResponse } from 'src/app/models/ServiceStructureTagsResponse';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-center-service-catalog',\r\n templateUrl: './center-service-catalog.component.html',\r\n styleUrls: ['./center-service-catalog.component.css'],\r\n})\r\nexport class CenterServiceCatalogComponent implements OnInit {\r\n searchtxt: string = '';\r\n searchText: string = '';\r\n more: string = '';\r\n @Input() centerName: string;\r\n centerNameStr: string;\r\n serviceGuid : string = '';\r\n showCount = 12;\r\n servicesof = '';\r\n responseService: EServiceGuidList[];\r\n response: EServiceGuidList[];\r\n tags: ServiceStructureTagsResponse[] = [];\r\n destroy$: Subject = new Subject();\r\n\r\n constructor(\r\n private apiServices: ApiService,\r\n private apiRersources: ResourcesService,\r\n private router: Router\r\n ) { }\r\n\r\n async ngOnInit(): Promise {\r\n this.more = await this.apiRersources.getByKey('more');\r\n this.serviceGuid = await this.apiRersources.getByKey(\"ServiceGuide\");\r\n this.servicesof = await this.apiRersources.getByKey(\"servicesof\");\r\n }\r\n\r\n getServiceGuid(centerName: string) {\r\n this.apiServices\r\n .getListTopN('EServiceGuide', 0, true, \"CenterName\", centerName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: EServiceGuidList[]) => {\r\n this.responseService = data.sort((a, b) => (a.ItemFields?.EServiceOrder - b.ItemFields?.EServiceOrder));\r\n this.response = [... this.responseService];\r\n this.getStructureTags();\r\n });\r\n }\r\n\r\n search() {\r\n this.response = this.responseService.filter(x => x.ItemFields?.ServiceGuideTitle?.toUpperCase().includes(this.searchText.toUpperCase()))\r\n }\r\n\r\n\r\n putVisitNo(itemId: string) {\r\n this.apiServices.putVisitingCount('EServiceGuide', itemId).subscribe();\r\n }\r\n\r\n navigateUrl(product: EServiceGuidList) {\r\n \r\n this.putVisitNo(product.ItemId.toString());\r\n this.router.navigateByUrl('/servicecatalogdetails/' + product.ItemFields?.Title);\r\n\r\n }\r\n\r\n getStructureTags() {\r\n this.apiServices\r\n .getList('ServiceStructureTags')\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: ServiceStructureTagsResponse[]) => {\r\n this.tags = data;\r\n \r\n this.responseService.forEach(element => {\r\n element.ItemFields.ServiceGuidIcon = this.tags.filter(m => m.ItemId == element.ItemFields.ServiceStructureTag.LookupId)[0].ItemFields.TagImage?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl);\r\n });\r\n \r\n });\r\n }\r\n \r\n ngOnChanges() {\r\n this.centerNameStr = this.centerName;\r\n\r\n this.getServiceGuid(this.centerNameStr);\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \"masar\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
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CenterLeaderList } from 'src/app/models/CenterLeaderList';\r\nimport { CenterList } from 'src/app/models/CenterList';\r\nimport { EServiceGuidList } from 'src/app/models/EServiceGuidList';\r\nimport { Center, CenterLeader, PublicContents, Service } from 'src/app/models/ResponseModel';\r\nimport { ServicesResponse } from 'src/app/models/ServicesResponse';\r\nimport { Publiccontentslist } from 'src/app/models/publiccontentslist';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-dynamic-center',\r\n templateUrl: './dynamic-center.component.html',\r\n styleUrls: ['./dynamic-center.component.css']\r\n})\r\nexport class DynamicCenterComponent implements OnInit {\r\n\r\n center: Center;\r\n centerName: string = '';\r\n centerId: number;\r\n PageTitle: string = '';\r\n home: string = '';\r\n services: string = '';\r\n aboutcenter: string = '';\r\n ceo: string = '';\r\n serviceGuid: string = '';\r\n centerCode: string = '';\r\n activeTab: string = '';\r\n CenterTabs: Publiccontentslist[] = [];\r\n centerLeader: CenterLeader;\r\n cenetrservices: Service[] = [];\r\n cenetrservicesCategory: Service[] = [];\r\n catalogCount = 0;\r\n activeSection = '';\r\n centerIconUrl = '';\r\n _lang = '';\r\n _dynamicUrl = location.href;\r\n destroy$: Subject = new Subject();\r\n\r\n constructor(private centerService: ApiService, private apiResources: ResourcesService, private actRoute: ActivatedRoute, private loading: LoadingService) {\r\n this.actRoute.params.subscribe(async params => {\r\n this.centerCode = params[\"id\"] == null ? 'QIYAS' : params[\"id\"];\r\n this.activeTab = params[\"tab\"] == null ? '' : params[\"tab\"];\r\n this.activeSection = params[\"type\"] == null ? '' : params[\"type\"];\r\n\r\n this.getCenter(this.centerCode);\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n\r\n });\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n\r\n getChildData(data: string){\r\n this._dynamicUrl = data;\r\n }\r\n async ngOnInit() {\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n this.services = await this.apiResources.getByKey(\"services\");\r\n this.aboutcenter = await this.apiResources.getByKey(\"aboutcenter\");\r\n this.ceo = await this.apiResources.getByKey(\"ceo\");\r\n this.serviceGuid = await this.apiResources.getByKey(\"ServiceGuide\");\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n getCenter(centerCode: string) {\r\n this.centerService.GetListsItemsFilterd('centers', 1, false, 'CenterCode', centerCode).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: CenterList[]) => {\r\n var element = data[0];\r\n var obj: Center = {\r\n centerId: element.ItemId,\r\n centerName: element.ItemFields.CenterName,\r\n centerDescription: element.ItemFields.CenterDescription?.toString(),\r\n centerVision: element.ItemFields.CenterVision?.toString(),\r\n centerVisionIcon: '',\r\n centerMission: element.ItemFields.CenterMission?.toString(),\r\n centerMissionIcon: '',\r\n centerLogo: element.ItemFields.CenterLogo?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n CenterLogoIcon: element.ItemFields.CenterLogoIcon?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n CenterMainImageCover: element.ItemFields.CenterMainImageCover?.Url.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n centerOrgnizationalStructureUrl: '',\r\n centerMainImageCoverUrl: '',\r\n centerParenetId: -1,\r\n isActive: element.ItemFields.IsActive1,\r\n CenterMoreDetails: ''\r\n };\r\n\r\n this.centerId = obj.centerId;\r\n this.PageTitle = obj.centerName;\r\n this.centerName = obj.centerName;\r\n this.center = obj;\r\n this.centerIconUrl = element.ItemFields.CenterLogoIcon?.Url?.replace(environment.imptempPublicUrl, environment.imgPublicUrl);\r\n this.getCenterTabs(obj.centerId);\r\n this.getLeaders(obj.centerId);\r\n this.getServiceCenter(obj.centerId);\r\n this.getServiceGuid(obj.centerName);\r\n }\r\n );\r\n }\r\n\r\n getCenterTabs(centerId: number) {\r\n this.centerService.GetListsItemsFilterd('PublicContents', 0, false, 'CenterName.LookupId', centerId.toString())\r\n .pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Publiccontentslist[]) => {\r\n this.CenterTabs = data.sort((a, b) => a.ItemFields.ContentOrder! - b.ItemFields.ContentOrder!);\r\n\r\n }\r\n );\r\n }\r\n\r\n private getLeaders(centerId: number) {\r\n this.centerService.GetListsItemsFilterd('centersleader', 0, false, 'CenterId.LookupId', centerId.toString()).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: CenterLeaderList[]) => {\r\n data.forEach(element => {\r\n\r\n var obj: CenterLeader = {\r\n centerLeaderId: element.ItemId,\r\n centerLeaderPosition: element.ItemFields.CentersLeaderPositionId?.LookupValue,\r\n centerLeaderPrefixId: element.ItemFields.CentersLeaderPrefixId?.LookupValue == null ? '' : element.ItemFields.CentersLeaderPrefixId?.LookupValue,\r\n centerLeaderName: element.ItemFields.CentersLeaderName,\r\n centerLeaderPortrait: element.ItemFields?.CentersLeaderPortrait.replace(environment.imptempPublicUrl, environment.imgPublicUrl),\r\n centerLeaderCurriculumVite: element.ItemFields.CentersLeaderCurriculumVitae,\r\n Sequence: element.ItemFields.Sequence,\r\n isActive: element.ItemFields.IsActive1,\r\n\r\n };\r\n this.centerLeader = obj;\r\n });\r\n }\r\n );\r\n }\r\n\r\n private getServiceCenter(centerId: number) {\r\n this.cenetrservices = [];\r\n this.centerService.getListsItemsFilterdOrderd('Services', 0, false, 'VisitingCount', 'ServiceCenterId', centerId, 'Eq', '', 'Eq', '', '').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ServicesResponse[]) => {\r\n data.forEach(element => {\r\n var obj: Service = {\r\n GUID: element.ItemFields.GUID,\r\n serviceId: element.ItemFields.ID,\r\n ServiceCode: element.ItemFields?.ServiceCode,\r\n serviceName: element.ItemFields.ServiceName,\r\n ServiceDescription: element.ItemFields.ServiceDescription.replace(/<[^>]*>/g, ''),\r\n serviceIconUrl: './assets/img/icon/NCAAE/AccredItationinstitutional.svg',\r\n ServiceCenterId: element.ItemFields?.ServiceCenterId?.LookupId,\r\n serviceLevel: 0,\r\n serviceVisitCount: 0,\r\n serviceDetailsFileUrl: '',\r\n serviceKeyword: '',\r\n ServiceCategory: element.ItemFields?.ServiceCategoryId?.LookupValue!,\r\n ServiceCategoryId: element.ItemFields?.ServiceCategoryId?.LookupId!,\r\n isActive: false,\r\n serviceTitle: element.ItemFields?.ServiceCategoryId_x003a_ServiceC?.LookupValue!,\r\n ShowDetailsButton: element.ItemFields.ShowDetailsButton\r\n };\r\n this.cenetrservices.push(obj);\r\n });\r\n \r\n this.cenetrservicesCategory = [...new Map(this.cenetrservices.map(item => [item.ServiceCategoryId, item])).values()];\r\n });\r\n\r\n }\r\n\r\n getServiceGuid(centerName: string) {\r\n this.centerService\r\n .getListTopN('EServiceGuide', 1, true, \"CenterName\", centerName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((data: EServiceGuidList[]) => {\r\n this.catalogCount = data.length;\r\n\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport domtoimage from 'dom-to-image';\r\nimport { Observable, Observer } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'app-greatings',\r\n templateUrl: './greatings.component.html',\r\n styleUrls: ['./greatings.component.css']\r\n})\r\nexport class GreatingsComponent implements OnInit {\r\n @ViewChild('container') container: { nativeElement: Node; }; \r\n imageUrl: string = '';\r\n title = \"أ\";\r\n name = \"\";\r\n base64Image: any;\r\n ctx: CanvasRenderingContext2D | null;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n \r\n }\r\n\r\n downloadImage() {\r\n setTimeout(() => domtoimage.toSvg(this.container.nativeElement)\r\n .then( (dataUrl) => {\r\n var img = new Image();\r\n img.src = dataUrl;\r\n // document.body.appendChild(img);\r\n this.imageUrl = dataUrl;\r\n\r\n let imageUrl =\r\n dataUrl;\r\n\r\n this.getBase64ImageFromURL(imageUrl).subscribe((base64data: string) => {\r\n \r\n this.base64Image = \"data:image/jpg;base64,\" + base64data;\r\n // save image to disk\r\n var link = document.createElement(\"a\");\r\n \r\n document.body.appendChild(link); // for Firefox\r\n \r\n link.setAttribute(\"href\", this.base64Image);\r\n link.setAttribute(\"download\", \"mrHankey.jpg\");\r\n link.click();\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error('oops, something went wrong!', error);\r\n }), 500);\r\n \r\n \r\n\r\n \r\n }\r\n\r\n getBase64ImageFromURL(url: string) {\r\n return Observable.create((observer: Observer) => {\r\n const img: HTMLImageElement = new Image();\r\n img.crossOrigin = \"Anonymous\";\r\n img.src = url;\r\n if (!img.complete) {\r\n img.onload = () => {\r\n observer.next(this.getBase64Image(img));\r\n observer.complete();\r\n };\r\n img.onerror = err => {\r\n observer.error(err);\r\n };\r\n } else {\r\n observer.next(this.getBase64Image(img));\r\n observer.complete();\r\n }\r\n });\r\n }\r\n\r\n getBase64Image(img: HTMLImageElement) {\r\n const canvas: HTMLCanvasElement = document.createElement(\"canvas\");\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n this.ctx = canvas.getContext(\"2d\");\r\n this.ctx?.drawImage(img, 0, 0);\r\n const dataURL: string = canvas.toDataURL(\"image/png\");\r\n\r\n return dataURL.replace(/^data:image\\/(png|jpg);base64,/, \"\");\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

    {{title}}

    \r\n
    \r\n
    \r\n

    {{name}}

    \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 { ValidatorFn, AbstractControl } from '@angular/forms';\r\n\r\nexport function fileExtensionValidator(validExt: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n let forbidden = true;\r\n if (control.value) {\r\n const fileExt = control.value.split('.').pop();\r\n validExt.split(',').forEach(ext => {\r\n if (ext.trim() == fileExt) {\r\n forbidden = false;\r\n }\r\n });\r\n }\r\n return forbidden ? { 'inValidExt': true } : null;\r\n };\r\n}\r\n// export function fileMaxSize(maxSize: number): ValidatorFn {\r\n// return (control: AbstractControl): { [key: string]: any } | null => {\r\n// let forbidden = true;\r\n// if (control instanceof File && control.size > 2097152) {\r\n// forbidden = false;\r\n// }\r\n\r\n// return forbidden ? { 'inValidSize': true } : null;\r\n// };\r\n// }\r\n\r\nexport function fileSizeValidator(maxSize: number): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const file = control.value;\r\n if (file) {\r\n const fileSize = file.size / 4024; // convert size to KB\r\n if (fileSize > maxSize) {\r\n return { fileSizeExceeded: true };\r\n }\r\n }\r\n return 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 الرجاء إدخال 100 حرف كحد أقصى \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 الرجاء إدخال 100 حرف كحد أقصى \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 الرجاء إدخال 100 حرف كحد أقصى \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 الرجاء إدخال 100 حرف كحد أقصى \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 الرجاء إدخال 13 رقم كحد أقصى \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 الرجاء إدخال 100 حرف كحد أقصى \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n حقل مطلوب.\r\n
    \r\n
    \r\n الرجاء إدخال 100 حرف كحد أقصى \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 الإمتداد غير صالح يجب أن يكون pdf\r\n
    \r\n
    \r\n File size exceeds the limit\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 الرجاء إدخال 300 حرف كحد أقصى \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 {{ progress }}%\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    ","import { HttpClient, HttpEventType, HttpErrorResponse, HttpResponse, HttpRequest } from '@angular/common/http';\r\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ConnectableObservable, catchError, map, throwError } from 'rxjs';\r\nimport { fileExtensionValidator, fileSizeValidator } from 'src/app/file-extension-validator.directive';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-researcher',\r\n templateUrl: './researcher.component.html',\r\n styleUrls: ['./researcher.component.css']\r\n})\r\nexport class ResearcherComponent implements OnInit {\r\n\r\n progress: number;\r\n message: string;\r\n educationdata: any[] = []\r\n\r\n @Input() showCompare!: any[];\r\n @Output() showCompareChange = new EventEmitter();\r\n @Output() step = new EventEmitter();\r\n\r\n @Input() GUID: string;\r\n @Input() localGUID : string = '';\r\n isCorrectSize : boolean = true;\r\n\r\n myForm = new FormGroup({\r\n nationalId: new FormControl('', [Validators.required, Validators.minLength(10),Validators.maxLength(10), Validators.pattern(\"^[0-9]*$\")]),\r\n name: new FormControl('', [Validators.required,Validators.maxLength(10)]),\r\n degree: new FormControl('', [Validators.required]),\r\n degreeDate: new FormControl('', [Validators.required]),\r\n spciality: new FormControl('', [Validators.required,Validators.maxLength(100)]),\r\n workOn: new FormControl('', [Validators.required,Validators.maxLength(100)]),\r\n email: new FormControl('', [Validators.required,Validators.maxLength(100), Validators.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/)]),\r\n mobile: new FormControl('', [Validators.required,Validators.maxLength(14), Validators.pattern(\"^05[0-8]*$\"), Validators.minLength(10)]),\r\n role: new FormControl('', [Validators.required]),\r\n resumeText: new FormControl('', [Validators.required, Validators.maxLength(100)]),\r\n anyConflict: new FormControl('', [Validators.required,Validators.maxLength(300)]),\r\n researchDate: new FormControl('', [Validators.required]),\r\n file: new FormControl('', [Validators.required, fileExtensionValidator('pdf'),fileSizeValidator(200)]),\r\n GUID: new FormControl(this.localGUID),\r\n });\r\n\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n get f() {\r\n return this.myForm.controls;\r\n }\r\n\r\n upload(event: any) {\r\n this.isCorrectSize = true;\r\n const file = event.target.files[0];\r\n\r\n if(file.size > environment.maxFileSize){\r\n this.isCorrectSize = false;\r\n return;\r\n }\r\n else{\r\n //const file = event.target.files[0];\r\n this.progress = 1;\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n\r\n this.http\r\n .post(`${environment.tarteebUrl}Upload?nationalId=${this.myForm.get('nationalId')?.value}`, formData, {\r\n reportProgress: true,\r\n observe: \"events\"\r\n })\r\n .pipe(\r\n map((event: any) => {\r\n if (event.type == HttpEventType.UploadProgress) {\r\n this.progress = Math.round((100 / event.total) * event.loaded);\r\n } else if (event.type == HttpEventType.Response) {\r\n this.progress = 0;\r\n }\r\n }),\r\n catchError((err: any) => {\r\n this.progress = 0;\r\n alert(err.message);\r\n return throwError(err.message);\r\n })\r\n )\r\n .toPromise();\r\n }\r\n }\r\n\r\n submit() {\r\n\r\n this.myForm.get(\"GUID\")?.patchValue(this.GUID);\r\n\r\n this.http\r\n .post(`${environment.tarteebUrl}Save`, this.myForm.value, {\r\n reportProgress: true,\r\n observe: \"events\"\r\n })\r\n .pipe(\r\n map((event: any) => {\r\n if (event.type == HttpEventType.UploadProgress) {\r\n this.progress = Math.round((100 / event.total) * event.loaded);\r\n } else if (event.type == HttpEventType.Response) {\r\n this.progress = 0;\r\n }\r\n }),\r\n catchError((err: any) => {\r\n this.progress = 0;\r\n alert(err.message);\r\n return throwError(err.message);\r\n })\r\n )\r\n .toPromise();\r\n\r\n this.educationdata.push(this.myForm.getRawValue())\r\n this.showCompareChange.emit(this.educationdata);\r\n this.step.emit(3);\r\n\r\n if(this.myForm.get('role')?.value! != 'باحث رئيس'){\r\n this.myForm.reset();\r\n }\r\n \r\n }\r\n\r\n finish(){\r\n this.step.emit(4);\r\n console.log(4);\r\n }\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges(){\r\n if(this.GUID)\r\n this.localGUID = this.GUID;\r\n else\r\n this.GUID = localStorage.getItem('GUID')!;\r\n\r\n this.educationdata = this.showCompare;\r\n // if(this.educationdata.length === 0 )\r\n // this.myForm.get(\"role\")?.setValue('باحث رئيس');\r\n // else{\r\n // this.myForm.get(\"role\")?.setValue('باحث مشارك');\r\n // }\r\n }\r\n}\r\n","
    \r\n
    \r\n 0\">\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
    رقم الهوية الوطنيةاسم الباحث آخر درجة علميةالتخصصجهة العمل البريد الإلكترونيرقم الجوالدور الباحثحذف
    {{item.nationalId}}{{item.name}}{{item.degree}}{{item.spciality}}{{item.workOn}}{{item.email}}{{item.mobile}}{{item.role}}
    \r\n
    \r\n\r\n
    ","import { HttpClient, HttpEventType } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { map, catchError, throwError } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-researcher-list',\r\n templateUrl: './researcher-list.component.html',\r\n styleUrls: ['./researcher-list.component.css']\r\n})\r\nexport class ResearcherListComponent implements OnInit {\r\n\r\n @Input() educationList: any[];\r\n @Output() educationListChange = new EventEmitter();\r\n\r\n localEducationList : any[];\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges(){\r\n this.localEducationList = this.educationList;\r\n this.educationListChange.emit(this.educationList);\r\n }\r\n\r\n removeResearcher(nationalId: string , guid: string){\r\n this.http\r\n .post(`${environment.tarteebUrl}RemoveResearch?nationalId=${nationalId}&guid=${guid}`, {\r\n reportProgress: true,\r\n observe: \"events\"\r\n })\r\n .pipe(\r\n map((event: any) => {\r\n this.localEducationList = [... this.localEducationList .filter(item => item.nationalId != nationalId )];\r\n //this.educationList = this.localEducationList;\r\n this.educationListChange.emit(this.localEducationList);\r\n\r\n console.log( this.localEducationList)\r\n }),\r\n\r\n catchError((err: any) => {\r\n alert(err.message);\r\n return throwError(err.message);\r\n })\r\n )\r\n .toPromise();\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 الرجاء إدخال 100 حرف بحد اقصى \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 الرجاء إدخال 100 حرف بحد اقصى \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 الرجاء إدخال 100 حرف بحد اقصى \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 الرجاء إدخال 100 حرف بحد اقصى \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 الإمتداد غير صالح يجب أن يكون xlsx,xls\r\n
    \r\n \r\n
    \r\n
    \r\n حجم الملف كبير\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{ progress }}%\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 الرجاء إدخال 300 حرف بحد اقصى \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 الرجاء إدخال 300 حرف بحد اقصى \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 الرجاء إدخال 300 حرف بحد اقصى \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 { HttpClient, HttpEventType } from '@angular/common/http';\r\nimport { Component, OnInit, Output,EventEmitter } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators , ValidatorFn} from '@angular/forms';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { catchError, map, throwError } from 'rxjs';\r\nimport { fileExtensionValidator } from 'src/app/file-extension-validator.directive';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n\r\n@Component({\r\n selector: 'app-research-details',\r\n templateUrl: './research-details.component.html',\r\n styleUrls: ['./research-details.component.css']\r\n})\r\nexport class ResearchDetailsComponent implements OnInit {\r\n @Output() GUID = new EventEmitter();\r\n @Output() step = new EventEmitter();\r\n progress: number;\r\n message: string;\r\n isCorrectSize : boolean = true;\r\n\r\n myForm = new FormGroup({\r\n title: new FormControl('', [Validators.required,Validators.maxLength(100)]),\r\n major: new FormControl('', [Validators.required,Validators.maxLength(100)]),\r\n subField: new FormControl('', [Validators.required,Validators.maxLength(100)]),\r\n specialization: new FormControl('', [Validators.required,Validators.maxLength(100)]),\r\n suggestedDuration: new FormControl('', [Validators.required,Validators.pattern(\"^[0-9]*$\"), Validators.maxLength(2)]),\r\n summary: new FormControl('', [Validators.required,Validators.maxLength(300)]),\r\n summary2: new FormControl('', [Validators.required,Validators.maxLength(300)]),\r\n summary3: new FormControl('', [Validators.required,Validators.maxLength(300)]),\r\n file: new FormControl('', [Validators.required, fileExtensionValidator('xlsx,xls')]),\r\n GUID:new FormControl(crypto.randomUUID(), [Validators.required])\r\n });\r\n \r\n \r\n\r\n constructor(private http: HttpClient, private cookieService: CookieService) { }\r\n\r\n get f() {\r\n return this.myForm.controls;\r\n }\r\n\r\n upload(event: any) {\r\n this.isCorrectSize = true;\r\n const file = event.target.files[0];\r\n\r\n if(file.size > environment.maxFileSize ){\r\n this.isCorrectSize = false;\r\n return;\r\n }\r\n else{\r\n this.progress = 1;\r\n const formData = new FormData();\r\n formData.append(\"file\", file);\r\n \r\n this.http\r\n .post(`${environment.tarteebUrl}Upload?nationalId=${this.myForm.get('GUID')?.value}`, formData, {\r\n reportProgress: true,\r\n observe: \"events\"\r\n })\r\n .pipe(\r\n map((event: any) => {\r\n if (event.type == HttpEventType.UploadProgress) {\r\n this.progress = Math.round((100 / event.total) * event.loaded);\r\n } else if (event.type == HttpEventType.Response) {\r\n this.progress = 0;\r\n }\r\n }),\r\n catchError((err: any) => {\r\n this.progress = 0;\r\n alert(err.message);\r\n return throwError(err.message);\r\n })\r\n )\r\n .toPromise();\r\n }\r\n }\r\n\r\n submit() {\r\n this.http\r\n .post(`${environment.tarteebUrl}SaveResearch`, this.myForm.value, {\r\n reportProgress: true,\r\n observe: \"events\"\r\n })\r\n .pipe(\r\n map((event: any) => {\r\n if(this.myForm.get('GUID')?.value){\r\n\r\n this.cookieService.set('GUID', this.myForm.get('GUID')?.value!);\r\n this.GUID.emit(this.myForm.get('GUID')?.value!);\r\n this.step.emit(2);\r\n }\r\n \r\n }),\r\n catchError((err: any) => {\r\n \r\n return throwError(err.message);\r\n })\r\n )\r\n .toPromise();\r\n // this.myForm.reset();\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public OnlyNumbers($event: { key: string; }) {\r\n let regex: RegExp = new RegExp(/^[0-9]{1,}$/g);\r\n let specialKeys: Array = ['Backspace', 'Tab', 'End', 'Home', 'ArrowRight','ArrowLeft'];\r\n if (specialKeys.indexOf($event.key) !== -1) {\r\n return;\r\n } else {\r\n if (regex.test($event.key)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }\r\n}\r\n\r\n","import { HttpClient, HttpEventType, HttpErrorResponse, HttpResponse, HttpRequest } from '@angular/common/http';\r\nimport { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-research-prize',\r\n templateUrl: './research-prize.component.html',\r\n styleUrls: ['./research-prize.component.css']\r\n})\r\nexport class ResearchPrizeComponent {\r\n educationdata: any[] = []\r\n GUID : string ='';\r\n firstStep = 1 ;\r\n _lang = '';\r\n home = '';\r\n constructor(private http: HttpClient, private fb: FormBuilder, private apiResources: ResourcesService) {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n }\r\n getChildData(data: string){\r\n this.GUID = data\r\n }\r\n\r\n getStep(data: number){\r\n this.firstStep = data\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
    0) ? 'show active':''}}\" role=\"tabpanel\" aria-labelledby=\"pills-pills3\">\r\n

    \r\n البيانات الأولية للباحث المشارك أو المساعد\r\n

    \r\n \r\n \r\n
    \r\n
    0) ? 'show active':''}}\" role=\"tabpanel\" aria-labelledby=\"pills-pills4\" >\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 0\">\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
    {{branch}} {{announceNumber}}{{announcePeriod}}{{startDate}}{{status}}{{contactName}}{{contactMobile}}
    {{item.ItemFields?.Branch}}{{item.ItemFields?.AnnounceNumber}}{{item.ItemFields?.AnnouncePeriod}}{{item.ItemFields?.StartDate | date:\"yyyy/MM/dd\"}}{{item.ItemFields?.Status}}{{item.ItemFields?.ContactName}}{{item.ItemFields?.ContactMobile}}\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 { Component, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { TranscriptsList } from 'src/app/models/TranscriptsList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-transcripts',\r\n templateUrl: './transcripts.component.html',\r\n styleUrls: ['./transcripts.component.css']\r\n})\r\nexport class TranscriptsComponent implements OnInit {\r\n destroy$: Subject = new Subject();\r\n transcriptList : TranscriptsList[]=[] ;\r\n home = '';\r\n _lang = '';\r\n PageTitle = '';\r\n branch = '';\r\n announcePeriod ='';\r\n announceNumber = '';\r\n startDate = '';\r\n status = '';\r\n contactName = '';\r\n contactMobile = '';\r\n description = '';\r\n tempPublicUrl = environment.imptempPublicUrl;\r\n imgPublicUrl = environment.imgPublicUrl;\r\n\r\n constructor(private apiServices: ApiService, private apiRersources: ResourcesService) {\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.home = await this.apiRersources.getByKey(\"home\");\r\n this.PageTitle = await this.apiRersources.getByKey(\"TranscriptsList\");\r\n this.branch = await this.apiRersources.getByKey(\"Branch\");\r\n this.announcePeriod = await this.apiRersources.getByKey(\"AnnouncePeriod\");\r\n this.announceNumber = await this.apiRersources.getByKey(\"AnnounceNumber\");\r\n this.startDate = await this.apiRersources.getByKey(\"StartDate\");\r\n this.status = await this.apiRersources.getByKey(\"Status\");\r\n this.contactName = await this.apiRersources.getByKey(\"ContactName\");\r\n this.contactMobile = await this.apiRersources.getByKey(\"ContactMobile\");\r\n this.description = await this.apiRersources.getByKey(\"Description\");\r\n\r\n this.apiServices.getList('ExpiredAssets').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: TranscriptsList[]) => {\r\n this.transcriptList = data;\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
    0\">\r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n {{item.ItemFields?.Title}}\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 { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\nimport { OpenDataCategoryList } from 'src/app/models/openDataCategoryList';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-open-data-all',\r\n templateUrl: './open-data-all.component.html',\r\n styleUrls: ['./open-data-all.component.css']\r\n})\r\nexport class OpenDataAllComponent implements OnInit {\r\n\r\n _lang = '';\r\n more = '';\r\n destroy$: Subject = new Subject();\r\n data : OpenDataCategoryList [] = [];\r\n home = '';\r\n PageTitle = '';\r\n\r\n constructor(private actRoute: ActivatedRoute, private service: ApiService,private Title: Title,\r\n private apiResources: ResourcesService, private loading: LoadingService, private router: Router) {\r\n this.actRoute.params.subscribe(async params => {\r\n var isRoute = localStorage.getItem('lang') != params[\"language\"] && params[\"language\"];\r\n await this.changeLang(params[\"language\"]);\r\n\r\n if (isRoute) {\r\n window.location.reload();\r\n }\r\n });\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n \r\n\r\n /** Custom methods */\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n getSiteMenu() {\r\n\r\n this.service.getList('SiteMenu').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: ListResponse[]) => {\r\n data.forEach(element => {\r\n if (element.ItemFields.Title.toLowerCase() === 'opendata') {\r\n\r\n this.PageTitle = element.ItemFields.MenuName;\r\n this.Title.setTitle( this.PageTitle);\r\n }\r\n\r\n });\r\n }\r\n );\r\n }\r\n \r\n getOpenDataCategory() {\r\n this.service.getList('OpenDataCategories').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: OpenDataCategoryList[]) => {\r\n this.data = data;\r\n \r\n });\r\n }\r\n\r\n navigateUrl(product: OpenDataCategoryList){\r\n this.router.navigateByUrl('/opendata/' + product.ItemFields?.Title);\r\n }\r\n async ngOnInit(): Promise {\r\n this.more = await this.apiResources.getByKey('more');\r\n this.home = await this.apiResources.getByKey(\"home\");\r\n \r\n this.getOpenDataCategory() ;\r\n this.getSiteMenu();\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n \"hero\r\n
    \r\n
    \r\n
    \r\n \"etec\r\n \"moe\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n الملتقى الوطني للتميز المدرسي (تميز 2024)\r\n

    \r\n

    \r\n 11 ربيع الثاني 1446هـ الموافق 14 أكتوبر 2024\r\n

    \r\n

    \r\n تنظم هيئة تقويم التعليم والتدريب بالتعاون مع وزارة التعليم الملتقى الوطني للتميز المدرسي \"تميز 2024\"\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 رؤية السعودية 2030 ومستهدفات برنامج تنمية القدرات البشرية.\r\n

    \r\n\r\n
    \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n المدارس الحاصلة على مستوى التميز 2024\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 \"icon\"\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
    \r\n \"icon\"\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 \"icon\"\r\n
    \r\n

    \r\n تاريخ الملتقى\r\n

    \r\n

    \r\n 11 ربيع الثاني 1446هـ الموافق 14 أكتوبر 2024\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n مكان الملتقى\r\n

    \r\n

    \r\n المملكة العربية السعودية\r\n
    \r\n مدينة الرياض – فندق فيرمونت\r\n

    \r\n
    \r\n \r\n \"icon\"\r\n\r\n

    الوصول للموقع

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n البث المباشر\r\n

    \r\n

    \r\n البث المباشر الساعة 9:30ص بتوقيت السعودية\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 \"img\"\r\n
    \r\n

    \r\n فعاليات الملتقى\r\n

    \r\n

    \r\n يتخلل الملتقى الوطني للتميز المدرسي (تميز 2024) عددًا من الفعاليات وهي :\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n تكريم المدارس المتميزة\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n عروض تقديمية\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n توقيع اتفاقيات\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\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 \"icon\"\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 \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 9:30- 9:45 ص\r\n
    \r\n كلمة معالي رئيس مجلس إدارة هيئة تقويم التعليم والتدريب\r\n \r\n 9:45- 9:55 ص\r\n
    \r\n برنامج التقويم والتصنيف والاعتماد المدرسي\r\n \r\n 9:55- 10:10 ص\r\n
    \r\n تكريم المدارس الحاصلة على مستوى التميز وفقًا لنتائج التقويم والتصنيف المدرسي.\r\n \r\n 10:10 -11:00 ص\r\n
    \r\n حلقة نقاش بعنوان: أبرز نتائج التقويم والتصنيف المدرسي ونتائج نافس 2024م\r\n
    \r\n (هيئة تقويم التعليم والتدريب)\r\n
    \r\n 11:00- 11:30 ص\r\n
    \r\n حلقة نقاش بعنوان: توظيف نتائج التقويمات الوطنية في تحسين الأداء المدرسي (الخطط والدروس\r\n المستفادة من الميدان التعليمي)\r\n
    \r\n (وزارة التعليم)\r\n
    \r\n 11:30 ص – 12:00 م\r\n
    \r\n استراحة الصلاة والغداء\r\n \r\n 12:00 – 1:00 م\r\n
    \r\n استراحة الصلاة والغداء ، توقيع الاتفاقيات مع المدارس والشركات التعليمية، ومنح الشهادات\r\n لجهات\r\n الاعتماد الدولية\r\n \r\n 12:00 – 1:00 م\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 The National Forum for School Excellence (Tamayuz 2024)\r\n

    \r\n

    \r\n 11 Rabi' al-Thani, 1446,\r\n October 14, 2024\r\n

    \r\n

    \r\n The Education and Training Evaluation Commission, in partnership with the Ministry of Education, will\r\n organize the National Forum for School Excellence, \"Tamayuz 2024\". The forum will be attended by His\r\n Excellency the Minister of Education and His Excellency the Chairman of the Commission's Board of Directors.\r\n The event will review and discuss the National School Evaluation Program and recognize schools that excelled\r\n based on their evaluation results. This forum is part of the ongoing efforts by the Commission, the\r\n Ministry, and the broader education sector to transition toward the Saudi Model of Quality Assurance and\r\n Control in education within the Kingdom.\r\n

    \r\n

    \r\n The forum will feature the recognition of schools classified at the Excellence Level based on external\r\n evaluation results. It aims to foster excellence in K-12 education, promote healthy and positive\r\n competition, and cultivate a culture of quality. These efforts contribute to the development of skilled and\r\n academically outstanding generations, in line with Saudi Vision 2030 and the objectives of the Human\r\n Capability Development Program.\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n Objectives of the Forum\r\n

    \r\n
    \r\n
      \r\n
    • \r\n Creating a momentum at the national level to assure and control the quality of K-12\r\n education and improve its outputs.\r\n
    • \r\n
    • \r\n Supporting data-driven decision-making in the development of education based on the\r\n results of school evaluation and classification.\r\n
    • \r\n
    • \r\n Highlighting the characteristics of distinguished schools in light of the results of\r\n school evaluation and classification, to serve as a Saudi model to be emulated.\r\n
    • \r\n
    • \r\n Encouraging schools to provide attractive learning environments that foster\r\n creativity and innovation, and enhance students' motivation and enjoyment of\r\n learning.\r\n
    • \r\n
    • \r\n Stimulating positive competition among educational institutions and teachers in\r\n adopting the most effective educational practices to improve educational outcomes.\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 \"icon\"\r\n
    \r\n

    \r\n Forum Date\r\n

    \r\n

    \r\n 11 Rabi' al-Thani, 1446, corresponding to October 14, 2024\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n Forum Venue\r\n

    \r\n

    \r\n Kingdom of Saudi Arabia - Riyadh - Fairmont Hotel\r\n

    \r\n
    \r\n \r\n \"icon\"\r\n\r\n

    Click here\r\n
    \r\n for directions\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 \"img\"\r\n
    \r\n

    \r\n Forum Activities\r\n

    \r\n

    \r\n The National Forum for School Excellence (Tamayuz 2024) will feature a number of activities, including:\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n Honoring distinguished schools\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n Presentations\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n Signing agreements\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n Panel discussions\r\n

    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"icon\"\r\n
    \r\n

    \r\n Forum Agenda\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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n Topic\r\n Time
    \r\n Opening Ceremony\r\n \r\n 9:30 - 9:45 AM\r\n
    \r\n Address by His Excellency the Chairman of the Commission's Board of Directors\r\n \r\n 9:45 - 9:55 AM\r\n
    \r\n School Evaluation, Classification, and Accreditation Program\r\n \r\n 9:55 - 10:10 AM\r\n
    \r\n Honoring Schools that Have Achieved Excellence Level Based on Evaluation and\r\n Classification Results\r\n \r\n 10:10 - 11:00 AM\r\n
    \r\n Panel Discussion: Key Findings from School Evaluation and Classification, and NAFES 2024\r\n Results\r\n
    \r\n (Education and Training Evaluation Commission)\r\n
    \r\n 11:00 - 11:30 AM\r\n
    \r\n Panel Discussion: Utilizing National Evaluation Results to Improve School Performance\r\n
    \r\n (Plans and Lessons Learned from the Educational Field - Ministry of Education)\r\n ()\r\n
    \r\n 11:30 AM - 12:00 PM\r\n
    \r\n Prayer and Lunch Break\r\n \r\n 12:00 - 1:00 PM\r\n
    \r\n Signing Agreements with Schools and Educational Companies, and Issuance of Certificates\r\n to International Accreditation Bodies\r\n \r\n 12:00 - 1:00 PM\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 { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport lgZoom from 'lightgallery/plugins/zoom';\r\nimport lgThumbnail from 'lightgallery/plugins/thumbnail';\r\nimport { LightGallery } from 'lightgallery/lightgallery';\r\nimport { LightGallerySettings } from 'lightgallery/lg-settings';\r\n\r\n@Component({\r\n selector: 'app-sef',\r\n templateUrl: './sef.component.html',\r\n styleUrls: ['./sef.component.css']\r\n})\r\nexport class SEFComponent implements OnInit {\r\n content ='';\r\n _lang = '';\r\n private lightGallery!: LightGallery;\r\n private needRefresh = false;\r\n ngAfterViewChecked(): void {\r\n if (this.needRefresh) {\r\n this.lightGallery.refresh();\r\n this.needRefresh = false;\r\n }\r\n }\r\n title = 'angular-demo';\r\n settings = {\r\n counter: false,\r\n plugins: [lgZoom]\r\n };\r\n items = [\r\n {\r\n id: '1',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A01.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A01.jpg',\r\n },\r\n {\r\n id: '2',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A02.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A02.jpg',\r\n },\r\n {\r\n id: '3',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A03.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A03.jpg',\r\n },\r\n {\r\n id: '4',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A04.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A04.jpg',\r\n },\r\n {\r\n id: '5',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A05.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A05.jpg',\r\n },\r\n {\r\n id: '6',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A06.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A06.jpg',\r\n },\r\n {\r\n id: '7',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A07.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A07.jpg',\r\n },\r\n {\r\n id: '8',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A08.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A08.jpg',\r\n },\r\n {\r\n id: '9',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A09.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A09.jpg',\r\n },\r\n {\r\n id: '11',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A011.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A011.jpg',\r\n },\r\n {\r\n id: '12',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A012.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A012.jpg',\r\n },\r\n {\r\n id: '13',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A013.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A013.jpg',\r\n },\r\n {\r\n id: '14',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A014.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A014.jpg',\r\n },\r\n {\r\n id: '15',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A015.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A015.jpg',\r\n },\r\n {\r\n id: '16',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A016.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A016.jpg',\r\n },\r\n {\r\n id: '17',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A017.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A017.jpg',\r\n },\r\n {\r\n id: '18',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A018.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A018.jpg',\r\n },\r\n {\r\n id: '19',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A019.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A019.jpg',\r\n },\r\n {\r\n id: '20',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A020.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A020.jpg',\r\n },\r\n {\r\n id: '21',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A021.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A021.jpg',\r\n },\r\n {\r\n id: '22',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A022.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A022.jpg',\r\n },\r\n {\r\n id: '23',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A023.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A023.jpg',\r\n },\r\n {\r\n id: '24',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A024.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A024.jpg',\r\n },\r\n {\r\n id: '25',\r\n size: '1000-666',\r\n src:\r\n 'assets/media/img/sef-img/A025.jpg',\r\n thumb:\r\n 'assets/media/img/sef-img/A025.jpg',\r\n }\r\n ];\r\n onInit = (detail:any): void => {\r\n this.lightGallery = detail.instance;\r\n };\r\n constructor(private apiServices : ApiService, private actRoute: ActivatedRoute, private apiResources: ResourcesService, private loading: LoadingService) {\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n \"hero\r\n
    \r\n
    \r\n
    \r\n \"etec\r\n \"moe\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n

    \r\n الملتقى الوطني للتميز المدرسي (تميز 2024)\r\n

    \r\n

    \r\n 11 ربيع الثاني 1446هـ الموافق 14 أكتوبر 2024\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n The National Forum for School Excellence (Tamayuz 2024)\r\n

    \r\n

    \r\n 11 Rabi' al-Thani, 1446,\r\n October 14, 2024\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
    \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 الرجاء إدخال 100 حرف كحد أقصى\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 الرجاء إدخال 14 رقم كحد أقصى\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
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n حقل مطلوب\r\n
    \r\n
    \r\n الإمتداد غير صالح يجب أن يكون png,jpeg\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 800x800 بكسل تنسيقات PNG & JPEG لا يتجاوز حجمها 3 ميجابايت\r\n

    \r\n
    \r\n
    \r\n

    \r\n *Image Specifications: Layout Square Image Ratio Dimensions 800x800 pixels\r\n PNG & JPEG formats 3MB maximum size\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 {{message}}\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 The invitation has been accepted.\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 This page is for invitations only.\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 {{message}}\r\n

    \r\n
    \r\n
    \r\n

    \r\n {{messageEnglish}}\r\n

    \r\n
    \r\n
    \r\n
    \r\n\r\n
    ","import { HttpClient } from '@angular/common/http';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { catchError, map, throwError } from 'rxjs';\r\nimport { fileExtensionValidator, fileSizeValidator } from 'src/app/file-extension-validator.directive';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-sefregistration',\r\n templateUrl: './sefregistration.component.html',\r\n styleUrls: ['./sefregistration.component.css']\r\n})\r\nexport class SEFRegistrationComponent implements OnInit {\r\n\r\n myForm = new FormGroup({\r\n token_key: new FormControl(''),\r\n first_name: new FormControl('', [Validators.required, Validators.maxLength(100)]),\r\n last_name: new FormControl('', [Validators.required, Validators.maxLength(100)]),\r\n email: new FormControl('', [Validators.required, Validators.maxLength(100), Validators.pattern(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/)]),\r\n phone: new FormControl('', [Validators.required, Validators.maxLength(14), Validators.pattern(/^((?:[+?0?0?966]+)(?:\\s?5)(?:\\s?\\d{8}))$/), Validators.minLength(10)]),\r\n company: new FormControl('', [Validators.required, Validators.maxLength(100)]),\r\n position: new FormControl('', [ Validators.maxLength(100)]),\r\n //image: new FormControl('', [fileExtensionValidator('PNG,JPEG,png,jpeg'), fileSizeValidator(3000)]),\r\n image: new FormControl(''),\r\n\r\n });\r\n\r\n file: any;\r\n isCorrectSize: boolean = true\r\n isCorrectExt: boolean = false\r\n token = ''\r\n message = ''\r\n messageEnglish = ''\r\n _lang = '';\r\n requiredfield = '';\r\n email = '';\r\n invalidemail = '';\r\n mobilenumber = '';\r\n invalidmobilenumber = '';\r\n isView: boolean = false\r\n isRegistered: number = 0\r\n isSuccess: boolean = false\r\n hasFile : boolean = false\r\n constructor(private http: HttpClient, private actRoute: ActivatedRoute, private apiResources: ResourcesService) {\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n\r\n this.actRoute.queryParams.subscribe(async params => {\r\n this.token = params[\"t\"];\r\n });\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.apiResources.clearResource();\r\n }\r\n\r\n get f() {\r\n return this.myForm.controls;\r\n }\r\n\r\n async ngOnInit() {\r\n this.requiredfield = await this.apiResources.getByKey(\"requiredfield\");\r\n this.email = await this.apiResources.getByKey(\"email\");\r\n this.invalidemail = await this.apiResources.getByKey(\"invalidemail\");\r\n this.mobilenumber = await this.apiResources.getByKey(\"mobilenumber\");\r\n this.invalidmobilenumber = await this.apiResources.getByKey(\"invalidmobilenumber\");\r\n\r\n if(this.token != ''){\r\n this.http\r\n .post(`https://etec-event.com/api/v1/get-info`, {'token_key':this.token})\r\n .subscribe((data:any) => {\r\n this.isView = data.success;\r\n this.isRegistered = data?.info.registered;\r\n this.myForm.get('first_name')?.setValue(data.info.first_name);\r\n this.myForm.get('last_name')?.setValue(data.info.last_name);\r\n this.myForm.get('email')?.setValue(data.info.email);\r\n this.myForm.get('phone')?.setValue(data.info.phone);\r\n this.myForm.get('company')?.setValue(data.info.company);\r\n this.myForm.get('position')?.setValue(data.info.position);\r\n });\r\n }\r\n }\r\n\r\n onSubmit() {\r\n\r\n const formData = new FormData();\r\n this.myForm.get('token_key')?.patchValue(this.token);\r\n console.log(this.myForm.get('first_name')?.value!)\r\n if(this.myForm.get('image')?.value! != ''){\r\n formData.append(\"image\", this.file);\r\n }\r\n \r\n formData.append(\"first_name\", this.myForm.get('first_name')?.value!);\r\n formData.append(\"last_name\", this.myForm.get('last_name')?.value!);\r\n formData.append(\"email\", this.myForm.get('email')?.value!);\r\n formData.append(\"phone\", this.myForm.get('phone')?.value!);\r\n formData.append(\"company\", this.myForm.get('company')?.value!);\r\n formData.append(\"position\", this.myForm.get('position')?.value!);\r\n formData.append(\"token_key\", this.myForm.get('token_key')?.value!);\r\n\r\n this.http\r\n .post(`https://etec-event.com/api/v1/update-honored-info`, formData)\r\n .subscribe((data: any) => {\r\n console.log(data.status);\r\n this.isSuccess= true;\r\n this.isView = false;\r\n this.message = !data.success? 'حصل خطأ.. الرجاء المحاولة مرة أخرى':'شكرًا لكم على التسجيل في \"الملتقى الوطني للتميز المدرسي 2024\". سوف تتلقون رسالة برمز الدخول قريبًا.'; // data?.message;\r\n this.messageEnglish = !!data.success? 'Error.. try again':'Thank you for registering for the National Forum for School Excellence 2024. You will receive an email with your access code shortly.'; // data?.message;\r\n });\r\n }\r\n\r\n upload(event: any) {\r\n this.hasFile = true;\r\n this.isCorrectSize = true;\r\n const file = event.target.files[0];\r\n this.file = file;\r\n \r\n if (file.size > environment.maxFileSize) {\r\n this.isCorrectSize = false;\r\n\r\n } \r\n\r\n //from here \r\n const fileExt = this.myForm?.get('image')?.value!.split('.').pop();\r\n 'PNG,JPEG,png,jpeg,JPG,jpg'.split(',').forEach(ext => {\r\n if (ext.trim() == fileExt) {\r\n this.isCorrectExt = true;\r\n }\r\n });\r\n\r\n this.isCorrectSize = this.isCorrectSize && this.isCorrectExt;\r\n }\r\n}\r\n// const invalid = [];\r\n// const controls = this.myForm.controls;\r\n// for(const name in controls){\r\n// console.log(name);\r\n// if(this.myForm?.get(name)?.invalid){\r\n// console.log(name);\r\n// }\r\n// }\r\n// console.log(document.getElementsByClassName('ng-invalid'));\r\n// console.log(this.myForm.invalid);\r\n","\r\n
    \r\n
    \r\n
    \r\n \"hero\r\n
    \r\n
    \r\n
    \r\n \"etec\r\n \"moe\r\n
    \r\n
    \r\n\r\n\r\n
    \r\n \r\n
    \r\n

    \r\n الملتقى الوطني للتميز المدرسي (تميز 2024)\r\n

    \r\n

    \r\n 11 ربيع الثاني 1446هـ الموافق 14 أكتوبر 2024\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n The National Forum for School Excellence (Tamayuz 2024)\r\n

    \r\n

    \r\n 11 Rabi' al-Thani, 1446,\r\n October 14, 2024\r\n

    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n ","import { Component, OnInit } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-sefbadge',\r\n templateUrl: './sefbadge.component.html',\r\n styleUrls: ['./sefbadge.component.css']\r\n})\r\nexport class SEFBadgeComponent implements OnInit {\r\n _lang = '';\r\n token = ''\r\n url :SafeUrl | undefined;\r\n constructor(private http: HttpClient, private actRoute: ActivatedRoute\r\n , private apiResources: ResourcesService, private sanitizer: DomSanitizer) {\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n\r\n this.actRoute.queryParams.subscribe(async params => {\r\n this.token = params[\"t\"];\r\n this.url = this.sanitizer.bypassSecurityTrustResourceUrl(`https://etec-event.com/badge/?t=${this.token}`);\r\n });\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.apiResources.clearResource();\r\n }\r\n\r\n async ngOnInit() {\r\n\r\n // if(this.token != ''){\r\n // this.http\r\n // .post(`https://etec-event.com/badge`, {'token_key':this.token})\r\n // .subscribe((data) => {\r\n // console.log(Object.values(data)[2]);\r\n \r\n // this.url = this.sanitizer.bypassSecurityTrustResourceUrl(Object.values(data)[2]);\r\n // });\r\n // }\r\n\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { HomeComponent } from './components/home/home.component';\r\nimport { ProductsComponent } from './components/products/products.component';\r\nimport { CentersComponent } from './components/centers/centers.component';\r\nimport { AboutComponent } from './components/about/about.component';\r\nimport { EtecComponent } from './components/eteccenters/etec/etec.component';\r\nimport { QiyasComponent } from './components/eteccenters/qiyas/qiyas.component';\r\nimport { NewsComponent } from './components/news/news.component';\r\nimport { NcseeComponent } from './components/eteccenters/ncsee/ncsee.component';\r\nimport { NcaaComponent } from './components/eteccenters/ncaa/ncaa.component';\r\nimport { ContactUsComponent } from './components/contact-us/contact-us.component';\r\nimport { MasarComponent } from './components/eteccenters/masar/masar.component';\r\nimport { MediacenterComponent } from './components/mediacenter/mediacenter.component';\r\nimport { ProductAccreditationComponent } from './components/product-accreditation/product-accreditation.component';\r\nimport { ProductQiyasComponent } from './components/product-qiyas/product-qiyas.component';\r\nimport { ServiceDetailsComponent } from './components/service-details/service-details.component';\r\nimport { DataComponent } from './components/reports/data/data.component';\r\nimport { OpenDataComponent } from './components/reports/open-data/open-data.component';\r\nimport { PublicResearchComponent } from './components/reports/public-research/public-research.component';\r\nimport { ReportsComponent } from './components/reports/reports/reports.component';\r\nimport { ReportsResearchComponent } from './components/reports/reports-research/reports-research.component';\r\nimport { ScientificActivityComponent } from './components/reports/scientific-activity/scientific-activity.component';\r\nimport { AccreditationresultComponent } from './components/accreditationresult/accreditationresult.component';\r\nimport { PrivcayComponent } from './components/shared/privcay/privcay.component';\r\nimport { NotfoundComponent } from './components/shared/notfound/notfound.component';\r\nimport { WorkshopComponent } from './components/reports/workshop/workshop.component';\r\nimport { ConferenceComponent } from './components/reports/conference/conference.component';\r\nimport { FAQComponent } from './components/shared/faq/faq.component';\r\nimport { RelatednewsComponent } from './components/relatednews/relatednews.component';\r\nimport { NcmaaComponent } from './components/eteccenters/ncmaa/ncmaa.component';\r\nimport { ImportsNotUsedAsValues } from 'typescript';\r\nimport { ConnectComponent } from './components/connect/connect.component';\r\nimport { PageComponent } from './page/page.component';\r\nimport { ServicecatalogComponent } from './components/service-catalog/servicecatalog/servicecatalog.component';\r\nimport { ServicecatalogdetailsComponent } from './components/service-catalog/servicecatalogdetails/servicecatalogdetails.component';\r\nimport { LightgalleryComponent } from './lightgallery/lightgallery.component';\r\nimport { ScrollTotopComponent } from './components/scroll-totop/scroll-totop.component';\r\nimport { DynamicCenterComponent } from './components/dynamic-center/dynamic-center.component';\r\nimport { GreatingsComponent } from './components/greatings/greatings.component';\r\nimport { ResearchPrizeComponent } from './forms/research-prize/research-prize.component';\r\nimport { ReactiveFormComponent } from './forms/reactive-form/reactive-form.component';\r\nimport { TranscriptsComponent } from './components/transcripts/transcripts.component';\r\nimport { OpenDataAllComponent } from './components/reports/open-data-all/open-data-all.component';\r\nimport { SecComponent } from './components/sec/sec.component';\r\nimport { SecRegistrationComponent } from './components/sec-registration/sec-registration.component';\r\nimport { SEFComponent } from './components/sef/sef.component';\r\nimport { SEFRegistrationComponent } from './components/sefregistration/sefregistration.component';\r\nimport { SEFBadgeComponent } from './components/sefbadge/sefbadge.component';\r\n\r\nconst routes: Routes = [\r\n // { path: 'services', component: ProductsComponent },\r\n { path: 'opendataall', component: OpenDataAllComponent },\r\n { path: ':language/opendataall', component: OpenDataAllComponent },\r\n { path: 'services/:id', component: ProductsComponent },\r\n { path: 'Accreditationresult', component: AccreditationresultComponent },\r\n { path: 'prize', component: ResearchPrizeComponent },\r\n // { path: 'reactive',component:ReactiveFormComponent},\r\n { path: 'home', component: HomeComponent },\r\n { path: ':language/home', component: HomeComponent },\r\n { path: 'connect', component: ConnectComponent },\r\n // { path: 'about', component: AboutComponent},\r\n { path: 'centers/:id', component: CentersComponent },\r\n { path: 'mediacenter/:id', component: MediacenterComponent },\r\n { path: ':language/mediacenter/:id', component: MediacenterComponent },\r\n { path: 'mediacenter', component: MediacenterComponent },\r\n { path: ':language/mediacenter', component: MediacenterComponent },\r\n { path: '', redirectTo: 'home', pathMatch: 'full' },\r\n { path: 'etec', component: EtecComponent },\r\n { path: 'etec/:id', component: EtecComponent },\r\n { path: ':language/etec', component: EtecComponent },\r\n { path: ':language/etec/:id', component: EtecComponent },\r\n\r\n { path: ':language/greatings', component: GreatingsComponent },\r\n { path: 'greatings', component: GreatingsComponent },\r\n // { path: 'qiyas', component: QiyasComponent },\r\n // { path: 'qiyas/:id', component: QiyasComponent },\r\n // { path: 'qiyas/:id/:type', component: QiyasComponent },\r\n // { path: ':language/qiyas', component: QiyasComponent },\r\n // { path: ':language/qiyas/:id', component: QiyasComponent },\r\n // { path: ':language/qiyas/:id/:type', component: QiyasComponent },\r\n // { path: 'ncsee', component: NcseeComponent },\r\n // { path: 'ncsee/:id', component: NcseeComponent },\r\n // { path: ':language/ncsee', component: NcseeComponent },\r\n // { path: ':language/ncsee/:id', component: NcseeComponent },\r\n // { path: 'ncaaa', component: NcaaComponent},\r\n // { path: 'ncaaa/:id', component: NcaaComponent},\r\n // { path: ':language/ncaaa', component: NcaaComponent},\r\n // { path: ':language/ncaaa/:id', component: NcaaComponent},\r\n // { path: 'nctaa', component: MasarComponent },\r\n // { path: 'nctaa/:id', component: MasarComponent },\r\n // { path: ':language/nctaa', component: MasarComponent },\r\n // { path: ':language/nctaa/:id', component: MasarComponent },\r\n // { path: 'ncmaa', component: NcmaaComponent },\r\n // { path: 'ncmaa/:id', component: NcmaaComponent },\r\n // { path: 'ncmaa/:id/:type', component: NcmaaComponent },\r\n // { path: ':language/ncmaa', component: NcmaaComponent },\r\n // { path: ':language/ncmaa/:id', component: NcmaaComponent },\r\n // { path: ':language/ncmaa/:id/:type', component: NcmaaComponent },\r\n { path: 'news/:id', component: NewsComponent },\r\n { path: ':language/news/:id', component: NewsComponent },\r\n { path: 'contactus', component: ContactUsComponent },\r\n { path: ':language/contactus', component: ContactUsComponent },\r\n { path: 'productAccreditation/:id', component: ProductAccreditationComponent },\r\n { path: ':language/productAccreditation/:id', component: ProductAccreditationComponent },\r\n { path: 'productQiyas/:id', component: ProductQiyasComponent },\r\n { path: ':language/productQiyas/:id', component: ProductQiyasComponent },\r\n { path: 'service/:id', component: ServiceDetailsComponent },\r\n { path: ':language/service/:id', component: ServiceDetailsComponent },\r\n { path: 'service/:id/:tab', component: ServiceDetailsComponent },\r\n { path: ':language/service/:id/:tab', component: ServiceDetailsComponent },\r\n { path: 'data', component: DataComponent },\r\n { path: ':language/data', component: DataComponent },\r\n { path: 'data/:id', component: DataComponent },\r\n { path: ':language/data/:id', component: DataComponent },\r\n { path: 'opendata', loadComponent: () => import(\"./components/reports/open-data/open-data.component\").then((m) => m.OpenDataComponent) },\r\n { path: ':language/opendata', loadComponent: () => import(\"./components/reports/open-data/open-data.component\").then((m) => m.OpenDataComponent) },\r\n { path: 'opendata/:id', loadComponent: () => import(\"./components/reports/open-data/open-data.component\").then((m) => m.OpenDataComponent) },\r\n { path: ':language/opendata/:id', loadComponent: () => import(\"./components/reports/open-data/open-data.component\").then((m) => m.OpenDataComponent) },\r\n\r\n\r\n { path: 'publicresearch', component: PublicResearchComponent },\r\n { path: ':language/publicresearch', component: PublicResearchComponent },\r\n { path: ':language/report', component: ReportsComponent },\r\n { path: 'transcripts', component: TranscriptsComponent },\r\n { path: ':language/transcripts', component: TranscriptsComponent },\r\n { path: 'report', component: ReportsComponent },\r\n { path: 'reportsresearch', component: ReportsResearchComponent },\r\n { path: 'privacy', component: PrivcayComponent },\r\n { path: 'notfound', component: NotfoundComponent },\r\n { path: 'workshops', component: WorkshopComponent },\r\n { path: 'workshops/:id', component: WorkshopComponent },\r\n { path: 'conferences', component: ConferenceComponent },\r\n { path: 'faq', component: FAQComponent },\r\n { path: 'scientificactivities', component: ScientificActivityComponent },\r\n { path: 'scientificactivities/:id', component: ScientificActivityComponent },\r\n { path: 'personalinfo/:id/:type', loadComponent: () => import(\"./components/personal-info/personal-info.component\").then((m) => m.PersonalInfoComponent) },\r\n { path: 'relatednews', component: RelatednewsComponent },\r\n { path: 'serviceguidecatalog', component: ServicecatalogComponent },\r\n { path: 'sec', component: SEFComponent },\r\n { path: 'secRegistration', component: SEFRegistrationComponent },\r\n { path: 'secbadge', component: SEFBadgeComponent },\r\n { path: ':language/SEF', component: SEFComponent},\r\n { path: ':language/SEFRegistration', component: SEFRegistrationComponent},\r\n { path: ':language/SEFBadge', component: SEFBadgeComponent},\r\n // { path: 'secRegistration/:k', component: SEFRegistrationComponent },\r\n // { path: ':language/SEFRegistration/:k', component: SEFRegistrationComponent},\r\n { path: 'servicecatalogdetails/:id', component: ServicecatalogdetailsComponent },\r\n { path: 'page/:id', component: PageComponent },\r\n { path: 'page/:id/:route', component: PageComponent },\r\n { path: 'lightgallery', component: LightgalleryComponent },\r\n { path: 'scroll-totop', component: ScrollTotopComponent },\r\n { path: 'c/:id/:tab/:type', component: DynamicCenterComponent },\r\n { path: 'c/:id/:tab', component: DynamicCenterComponent },\r\n\r\n { path: ':language/services/:id', component: ProductsComponent },\r\n { path: ':language/Accreditationresult', component: AccreditationresultComponent },\r\n { path: ':language/report', component: ReportsComponent },\r\n { path: ':language/reportsresearch', component: ReportsResearchComponent },\r\n { path: ':language/privacy', component: PrivcayComponent },\r\n { path: ':language/notfound', component: NotfoundComponent },\r\n { path: ':language/workshops', component: WorkshopComponent },\r\n { path: ':language/workshops/:id', component: WorkshopComponent },\r\n { path: ':language/conferences', component: ConferenceComponent },\r\n { path: ':language/faq', component: FAQComponent },\r\n { path: ':language/scientificactivities', component: ScientificActivityComponent },\r\n { path: ':language/scientificactivities/:id', component: ScientificActivityComponent },\r\n // { path: ':language/personalinfo/:id/:type', component: PersonalInfoComponent},\r\n { path: ':language/personalinfo/:id/:type', loadComponent: () => import(\"./components/personal-info/personal-info.component\").then((m) => m.PersonalInfoComponent) },\r\n\r\n { path: ':language/relatednews', component: RelatednewsComponent },\r\n { path: ':language/serviceguidecatalog', component: ServicecatalogComponent },\r\n // { path: ':language/servicecatalogdetails/:id', component: ServicecatalogdetailsComponent },\r\n { path: ':language/page/:id', component: PageComponent },\r\n { path: ':language/page/:id/:route', component: PageComponent },\r\n { path: ':language/lightgallery', component: LightgalleryComponent },\r\n { path: ':language/scroll-totop', component: ScrollTotopComponent },\r\n { path: ':language/:id/:tab/:type', component: DynamicCenterComponent },\r\n { path: ':language/:id/:tab', component: DynamicCenterComponent },\r\n { path: ':language/:id/:tab', component: DynamicCenterComponent },\r\n { path: ':language/:id', component: DynamicCenterComponent },\r\n { path: ':id', component: DynamicCenterComponent },\r\n\r\n { path: '**', component: NotfoundComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { scrollPositionRestoration: 'enabled' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n// ","export function not(pred, thisArg) {\n return (value, index) => !pred.call(thisArg, value, index);\n}\n","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function debounce(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n const emit = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = createOperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n","import * as i0 from '@angular/core';\nimport { Directive, Input, Component, Injectable, NgModule } from '@angular/core';\nimport { ReplaySubject, partition, merge, timer } from 'rxjs';\nimport { finalize, switchMap, debounce, distinctUntilChanged, tap } from 'rxjs/operators';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass AbstractLoaderDirective {\n}\nAbstractLoaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: AbstractLoaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nAbstractLoaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.0.0\", type: AbstractLoaderDirective, inputs: { backgroundColor: \"backgroundColor\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: AbstractLoaderDirective, decorators: [{\n type: Directive\n }], propDecorators: { backgroundColor: [{\n type: Input\n }] } });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SkChasingDotsComponent extends AbstractLoaderDirective {\n}\nSkChasingDotsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkChasingDotsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSkChasingDotsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: SkChasingDotsComponent, selector: \"sk-chasing-dots\", usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-chasing-dots{top:50%;margin:auto;width:40px;height:40px;position:relative;text-align:center;animation:sk-chasingDotsRotate 2s infinite linear}.sk-chasing-dots .sk-child{width:60%;height:60%;display:inline-block;position:absolute;top:0;border-radius:100%;animation:sk-chasingDotsBounce 2s infinite ease-in-out}.sk-chasing-dots .sk-dot2{top:auto;bottom:0;animation-delay:-1s}@keyframes sk-chasingDotsRotate{to{transform:rotate(360deg)}}@keyframes sk-chasingDotsBounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkChasingDotsComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sk-chasing-dots', template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-chasing-dots{top:50%;margin:auto;width:40px;height:40px;position:relative;text-align:center;animation:sk-chasingDotsRotate 2s infinite linear}.sk-chasing-dots .sk-child{width:60%;height:60%;display:inline-block;position:absolute;top:0;border-radius:100%;animation:sk-chasingDotsBounce 2s infinite ease-in-out}.sk-chasing-dots .sk-dot2{top:auto;bottom:0;animation-delay:-1s}@keyframes sk-chasingDotsRotate{to{transform:rotate(360deg)}}@keyframes sk-chasingDotsBounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}\\n\"] }]\n }] });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SkCubeGridComponent extends AbstractLoaderDirective {\n}\nSkCubeGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkCubeGridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSkCubeGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: SkCubeGridComponent, selector: \"sk-cube-grid\", usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-cube-grid{position:relative;top:50%;width:40px;height:40px;margin:auto}.sk-cube-grid .sk-cube{width:33.33%;height:33.33%;float:left;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}.sk-cube-grid .sk-cube1{animation-delay:.2s}.sk-cube-grid .sk-cube2{animation-delay:.3s}.sk-cube-grid .sk-cube3{animation-delay:.4s}.sk-cube-grid .sk-cube4{animation-delay:.1s}.sk-cube-grid .sk-cube5{animation-delay:.2s}.sk-cube-grid .sk-cube6{animation-delay:.3s}.sk-cube-grid .sk-cube7{animation-delay:0s}.sk-cube-grid .sk-cube8{animation-delay:.1s}.sk-cube-grid .sk-cube9{animation-delay:.2s}@keyframes sk-cubeGridScaleDelay{0%,70%,to{transform:scaleZ(1)}35%{transform:scale3D(0,0,1)}}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkCubeGridComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sk-cube-grid', template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-cube-grid{position:relative;top:50%;width:40px;height:40px;margin:auto}.sk-cube-grid .sk-cube{width:33.33%;height:33.33%;float:left;animation:sk-cubeGridScaleDelay 1.3s infinite ease-in-out}.sk-cube-grid .sk-cube1{animation-delay:.2s}.sk-cube-grid .sk-cube2{animation-delay:.3s}.sk-cube-grid .sk-cube3{animation-delay:.4s}.sk-cube-grid .sk-cube4{animation-delay:.1s}.sk-cube-grid .sk-cube5{animation-delay:.2s}.sk-cube-grid .sk-cube6{animation-delay:.3s}.sk-cube-grid .sk-cube7{animation-delay:0s}.sk-cube-grid .sk-cube8{animation-delay:.1s}.sk-cube-grid .sk-cube9{animation-delay:.2s}@keyframes sk-cubeGridScaleDelay{0%,70%,to{transform:scaleZ(1)}35%{transform:scale3D(0,0,1)}}\\n\"] }]\n }] });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SkDoubleBounceComponent extends AbstractLoaderDirective {\n}\nSkDoubleBounceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkDoubleBounceComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSkDoubleBounceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: SkDoubleBounceComponent, selector: \"sk-double-bounce\", usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-double-bounce{top:50%;width:40px;height:40px;position:relative;margin:auto}.sk-double-bounce .sk-child{width:100%;height:100%;border-radius:50%;background-color:#333;opacity:.6;position:absolute;top:0;left:0;animation:sk-doubleBounce 2s infinite ease-in-out}.sk-double-bounce .sk-double-bounce2{animation-delay:-1s}@keyframes sk-doubleBounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkDoubleBounceComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sk-double-bounce', template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-double-bounce{top:50%;width:40px;height:40px;position:relative;margin:auto}.sk-double-bounce .sk-child{width:100%;height:100%;border-radius:50%;background-color:#333;opacity:.6;position:absolute;top:0;left:0;animation:sk-doubleBounce 2s infinite ease-in-out}.sk-double-bounce .sk-double-bounce2{animation-delay:-1s}@keyframes sk-doubleBounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}\\n\"] }]\n }] });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SkRotatingPlaneComponent extends AbstractLoaderDirective {\n}\nSkRotatingPlaneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkRotatingPlaneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSkRotatingPlaneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: SkRotatingPlaneComponent, selector: \"sk-rotating-plane\", usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n\", styles: [\".sk-rotating-plane{position:relative;top:50%;width:40px;height:40px;margin:auto;animation:sk-rotatePlane 1.2s infinite ease-in-out}@keyframes sk-rotatePlane{0%{transform:perspective(120px) rotateX(0) rotateY(0)}50%{transform:perspective(120px) rotateX(-180.1deg) rotateY(0)}to{transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg)}}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkRotatingPlaneComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sk-rotating-plane', template: \"\\n\\n
    \\n\", styles: [\".sk-rotating-plane{position:relative;top:50%;width:40px;height:40px;margin:auto;animation:sk-rotatePlane 1.2s infinite ease-in-out}@keyframes sk-rotatePlane{0%{transform:perspective(120px) rotateX(0) rotateY(0)}50%{transform:perspective(120px) rotateX(-180.1deg) rotateY(0)}to{transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg)}}\\n\"] }]\n }] });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SkSpinnerPulseComponent extends AbstractLoaderDirective {\n}\nSkSpinnerPulseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkSpinnerPulseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSkSpinnerPulseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: SkSpinnerPulseComponent, selector: \"sk-spinner-pulse\", usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n\", styles: [\".sk-spinner-pulse{position:relative;top:50%;width:40px;height:40px;margin:auto;border-radius:100%;animation:sk-pulseScaleOut 1s infinite ease-in-out}@keyframes sk-pulseScaleOut{0%{transform:scale(0)}to{transform:scale(1);opacity:0}}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkSpinnerPulseComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sk-spinner-pulse', template: \"\\n\\n
    \\n\", styles: [\".sk-spinner-pulse{position:relative;top:50%;width:40px;height:40px;margin:auto;border-radius:100%;animation:sk-pulseScaleOut 1s infinite ease-in-out}@keyframes sk-pulseScaleOut{0%{transform:scale(0)}to{transform:scale(1);opacity:0}}\\n\"] }]\n }] });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SkThreeBounceComponent extends AbstractLoaderDirective {\n}\nSkThreeBounceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkThreeBounceComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSkThreeBounceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: SkThreeBounceComponent, selector: \"sk-three-bounce\", usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-three-bounce{top:50%;position:relative;margin:auto;width:80px;text-align:center}.sk-three-bounce .sk-child{width:20px;height:20px;border-radius:100%;display:inline-block;animation:sk-three-bounce 1.4s ease-in-out 0s infinite both}.sk-three-bounce .sk-bounce1{animation-delay:-.32s}.sk-three-bounce .sk-bounce2{animation-delay:-.16s}@keyframes sk-three-bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkThreeBounceComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sk-three-bounce', template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-three-bounce{top:50%;position:relative;margin:auto;width:80px;text-align:center}.sk-three-bounce .sk-child{width:20px;height:20px;border-radius:100%;display:inline-block;animation:sk-three-bounce 1.4s ease-in-out 0s infinite both}.sk-three-bounce .sk-bounce1{animation-delay:-.32s}.sk-three-bounce .sk-bounce2{animation-delay:-.16s}@keyframes sk-three-bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}\\n\"] }]\n }] });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SkWanderingCubesComponent extends AbstractLoaderDirective {\n}\nSkWanderingCubesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkWanderingCubesComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSkWanderingCubesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: SkWanderingCubesComponent, selector: \"sk-wandering-cubes\", usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-wandering-cubes{top:50%;margin:auto;width:40px;height:40px;position:relative}.sk-wandering-cubes .sk-cube{width:10px;height:10px;position:absolute;top:0;left:0;animation:sk-wanderingCube 1.8s ease-in-out -1.8s infinite both}.sk-wandering-cubes .sk-cube2{animation-delay:-.9s}@keyframes sk-wanderingCube{0%{transform:rotate(0)}25%{transform:translate(30px) rotate(-90deg) scale(.5)}50%{transform:translate(30px) translateY(30px) rotate(-179deg)}50.1%{transform:translate(30px) translateY(30px) rotate(-180deg)}75%{transform:translate(0) translateY(30px) rotate(-270deg) scale(.5)}to{transform:rotate(-360deg)}}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkWanderingCubesComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sk-wandering-cubes', template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-wandering-cubes{top:50%;margin:auto;width:40px;height:40px;position:relative}.sk-wandering-cubes .sk-cube{width:10px;height:10px;position:absolute;top:0;left:0;animation:sk-wanderingCube 1.8s ease-in-out -1.8s infinite both}.sk-wandering-cubes .sk-cube2{animation-delay:-.9s}@keyframes sk-wanderingCube{0%{transform:rotate(0)}25%{transform:translate(30px) rotate(-90deg) scale(.5)}50%{transform:translate(30px) translateY(30px) rotate(-179deg)}50.1%{transform:translate(30px) translateY(30px) rotate(-180deg)}75%{transform:translate(0) translateY(30px) rotate(-270deg) scale(.5)}to{transform:rotate(-360deg)}}\\n\"] }]\n }] });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SkWaveComponent extends AbstractLoaderDirective {\n}\nSkWaveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkWaveComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\nSkWaveComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: SkWaveComponent, selector: \"sk-wave\", usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-wave{position:relative;top:50%;margin:auto;width:50px;height:40px;text-align:center;font-size:10px}.sk-wave .sk-rect{float:left;margin-right:1px;height:100%;width:6px;display:inline-block;animation:sk-waveStretchDelay 1.2s infinite ease-in-out}.sk-wave .sk-rect1{animation-delay:-1.2s}.sk-wave .sk-rect2{animation-delay:-1.1s}.sk-wave .sk-rect3{animation-delay:-1s}.sk-wave .sk-rect4{animation-delay:-.9s}.sk-wave .sk-rect5{animation-delay:-.8s}@keyframes sk-waveStretchDelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}\\n\"] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SkWaveComponent, decorators: [{\n type: Component,\n args: [{ selector: 'sk-wave', template: \"\\n\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\", styles: [\".sk-wave{position:relative;top:50%;margin:auto;width:50px;height:40px;text-align:center;font-size:10px}.sk-wave .sk-rect{float:left;margin-right:1px;height:100%;width:6px;display:inline-block;animation:sk-waveStretchDelay 1.2s infinite ease-in-out}.sk-wave .sk-rect1{animation-delay:-1.2s}.sk-wave .sk-rect2{animation-delay:-1.1s}.sk-wave .sk-rect3{animation-delay:-1s}.sk-wave .sk-rect4{animation-delay:-.9s}.sk-wave .sk-rect5{animation-delay:-.8s}@keyframes sk-waveStretchDelay{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}\\n\"] }]\n }] });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nconst Spinkit = {\n skChasingDots: 'sk-chasing-dots',\n skCubeGrid: 'sk-cube-grid',\n skDoubleBounce: 'sk-double-bounce',\n skRotatingPlane: 'sk-rotationg-plane',\n skSpinnerPulse: 'sk-spinner-pulse',\n skThreeBounce: 'sk-three-bounce',\n skWanderingCubes: 'sk-wandering-cubes',\n skWave: 'sk-wave'\n};\nconst SPINKIT_COMPONENTS = [\n SkCubeGridComponent,\n SkChasingDotsComponent,\n SkDoubleBounceComponent,\n SkRotatingPlaneComponent,\n SkSpinnerPulseComponent,\n SkThreeBounceComponent,\n SkWanderingCubesComponent,\n SkWaveComponent,\n];\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass PendingRequestsInterceptor {\n constructor() {\n this._pendingRequests = 0;\n this._pendingRequestsStatus$ = new ReplaySubject(1);\n this._filteredUrlPatterns = [];\n this._filteredMethods = [];\n this._filteredHeaders = [];\n this._forceByPass = false;\n }\n get pendingRequestsStatus$() {\n return this._pendingRequestsStatus$.asObservable();\n }\n get pendingRequests() {\n return this._pendingRequests;\n }\n get filteredUrlPatterns() {\n return this._filteredUrlPatterns;\n }\n set filteredMethods(httpMethods) {\n this._filteredMethods = httpMethods;\n }\n set filteredHeaders(value) {\n this._filteredHeaders = value;\n }\n set forceByPass(value) {\n this._forceByPass = value;\n }\n shouldBypassUrl(url) {\n return this._filteredUrlPatterns.some(e => {\n return e.test(url);\n });\n }\n shouldBypassMethod(req) {\n return this._filteredMethods.some(e => {\n return e.toUpperCase() === req.method.toUpperCase();\n });\n }\n shouldBypassHeader(req) {\n return this._filteredHeaders.some(e => {\n return req.headers.has(e);\n });\n }\n shouldBypass(req) {\n return this._forceByPass\n || this.shouldBypassUrl(req.urlWithParams)\n || this.shouldBypassMethod(req)\n || this.shouldBypassHeader(req);\n }\n intercept(req, next) {\n const shouldBypass = this.shouldBypass(req);\n if (!shouldBypass) {\n this._pendingRequests++;\n if (1 === this._pendingRequests) {\n this._pendingRequestsStatus$.next(true);\n }\n }\n return next.handle(req).pipe(finalize(() => {\n if (!shouldBypass) {\n this._pendingRequests--;\n if (0 === this._pendingRequests) {\n this._pendingRequestsStatus$.next(false);\n }\n }\n }));\n }\n}\nPendingRequestsInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: PendingRequestsInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPendingRequestsInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: PendingRequestsInterceptor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: PendingRequestsInterceptor, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\nconst PendingRequestsInterceptorProvider = [{\n provide: HTTP_INTERCEPTORS,\n useExisting: PendingRequestsInterceptor,\n multi: true\n }];\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass SpinnerVisibilityService {\n constructor(pendingRequestsInterceptor) {\n this.pendingRequestsInterceptor = pendingRequestsInterceptor;\n this._visibility$ = new ReplaySubject(1);\n }\n get visibility$() {\n return this._visibility$.asObservable();\n }\n show() {\n this.pendingRequestsInterceptor.forceByPass = true;\n this._visibility$.next(true);\n }\n hide() {\n this._visibility$.next(false);\n this.pendingRequestsInterceptor.forceByPass = false;\n }\n}\nSpinnerVisibilityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SpinnerVisibilityService, deps: [{ token: PendingRequestsInterceptor }], target: i0.ɵɵFactoryTarget.Injectable });\nSpinnerVisibilityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SpinnerVisibilityService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: SpinnerVisibilityService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], ctorParameters: function () { return [{ type: PendingRequestsInterceptor }]; } });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass NgHttpLoaderComponent {\n constructor(pendingRequestsInterceptor, spinnerVisibility) {\n this.pendingRequestsInterceptor = pendingRequestsInterceptor;\n this.spinnerVisibility = spinnerVisibility;\n this.spinkit = Spinkit;\n this.visibleUntil = Date.now();\n this.backdrop = true;\n this.debounceDelay = 0;\n this.entryComponent = null;\n this.extraDuration = 0;\n this.filteredHeaders = [];\n this.filteredMethods = [];\n this.filteredUrlPatterns = [];\n this.minDuration = 0;\n this.opacity = '.7';\n this.backdropBackgroundColor = '#f1f1f1';\n this.spinner = Spinkit.skWave;\n }\n ngOnInit() {\n this.initIsvisibleObservable();\n this.nullifySpinnerIfEntryComponentIsDefined();\n this.initFilters();\n }\n initIsvisibleObservable() {\n const [showSpinner$, hideSpinner$] = partition(this.pendingRequestsInterceptor.pendingRequestsStatus$, h => h);\n this.isVisible$ = merge(this.pendingRequestsInterceptor.pendingRequestsStatus$\n .pipe(switchMap(() => showSpinner$.pipe(debounce(() => timer(this.debounceDelay))))), showSpinner$\n .pipe(switchMap(() => hideSpinner$.pipe(debounce(() => this.getVisibilityTimer$())))), this.spinnerVisibility.visibility$).pipe(distinctUntilChanged(), tap(h => this.updateExpirationDelay(h)));\n }\n nullifySpinnerIfEntryComponentIsDefined() {\n if (this.entryComponent) {\n this.spinner = null;\n }\n }\n initFilters() {\n this.initFilteredUrlPatterns();\n this.initFilteredMethods();\n this.initFilteredHeaders();\n }\n initFilteredUrlPatterns() {\n if (!!this.filteredUrlPatterns.length) {\n this.filteredUrlPatterns.forEach(e => this.pendingRequestsInterceptor.filteredUrlPatterns.push(new RegExp(e)));\n }\n }\n initFilteredMethods() {\n this.pendingRequestsInterceptor.filteredMethods = this.filteredMethods;\n }\n initFilteredHeaders() {\n this.pendingRequestsInterceptor.filteredHeaders = this.filteredHeaders;\n }\n updateExpirationDelay(showSpinner) {\n if (showSpinner) {\n this.visibleUntil = Date.now() + this.minDuration;\n }\n }\n getVisibilityTimer$() {\n return timer(Math.max(this.extraDuration, this.visibleUntil - Date.now()));\n }\n}\nNgHttpLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: NgHttpLoaderComponent, deps: [{ token: PendingRequestsInterceptor }, { token: SpinnerVisibilityService }], target: i0.ɵɵFactoryTarget.Component });\nNgHttpLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.0.0\", type: NgHttpLoaderComponent, selector: \"ng-http-loader\", inputs: { backdrop: \"backdrop\", backgroundColor: \"backgroundColor\", debounceDelay: \"debounceDelay\", entryComponent: \"entryComponent\", extraDuration: \"extraDuration\", filteredHeaders: \"filteredHeaders\", filteredMethods: \"filteredMethods\", filteredUrlPatterns: \"filteredUrlPatterns\", minDuration: \"minDuration\", opacity: \"opacity\", backdropBackgroundColor: \"backdropBackgroundColor\", spinner: \"spinner\" }, ngImport: i0, template: \"
    \\n\\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n
    \\n\\n\", styles: [\"#spinner{top:50%;left:50%;transform:translate(-50%,-50%);position:fixed;z-index:9999}#spinner.backdrop{top:0;left:0;height:100%;width:100%;display:flex;align-items:center;justify-content:center;transform:none}::ng-deep .colored-parent,::ng-deep .colored>div{background-color:#333}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { kind: \"component\", type: SkCubeGridComponent, selector: \"sk-cube-grid\" }, { kind: \"component\", type: SkChasingDotsComponent, selector: \"sk-chasing-dots\" }, { kind: \"component\", type: SkDoubleBounceComponent, selector: \"sk-double-bounce\" }, { kind: \"component\", type: SkRotatingPlaneComponent, selector: \"sk-rotating-plane\" }, { kind: \"component\", type: SkSpinnerPulseComponent, selector: \"sk-spinner-pulse\" }, { kind: \"component\", type: SkThreeBounceComponent, selector: \"sk-three-bounce\" }, { kind: \"component\", type: SkWanderingCubesComponent, selector: \"sk-wandering-cubes\" }, { kind: \"component\", type: SkWaveComponent, selector: \"sk-wave\" }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: NgHttpLoaderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ng-http-loader', template: \"
    \\n\\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n
    \\n\\n\", styles: [\"#spinner{top:50%;left:50%;transform:translate(-50%,-50%);position:fixed;z-index:9999}#spinner.backdrop{top:0;left:0;height:100%;width:100%;display:flex;align-items:center;justify-content:center;transform:none}::ng-deep .colored-parent,::ng-deep .colored>div{background-color:#333}\\n\"] }]\n }], ctorParameters: function () { return [{ type: PendingRequestsInterceptor }, { type: SpinnerVisibilityService }]; }, propDecorators: { backdrop: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], debounceDelay: [{\n type: Input\n }], entryComponent: [{\n type: Input\n }], extraDuration: [{\n type: Input\n }], filteredHeaders: [{\n type: Input\n }], filteredMethods: [{\n type: Input\n }], filteredUrlPatterns: [{\n type: Input\n }], minDuration: [{\n type: Input\n }], opacity: [{\n type: Input\n }], backdropBackgroundColor: [{\n type: Input\n }], spinner: [{\n type: Input\n }] } });\n\n/*\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nclass NgHttpLoaderModule {\n static forRoot() {\n return {\n ngModule: NgHttpLoaderModule,\n providers: [\n PendingRequestsInterceptorProvider,\n ]\n };\n }\n}\nNgHttpLoaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: NgHttpLoaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgHttpLoaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.0\", ngImport: i0, type: NgHttpLoaderModule, declarations: [NgHttpLoaderComponent, SkCubeGridComponent, SkChasingDotsComponent, SkDoubleBounceComponent, SkRotatingPlaneComponent, SkSpinnerPulseComponent, SkThreeBounceComponent, SkWanderingCubesComponent, SkWaveComponent], imports: [CommonModule], exports: [NgHttpLoaderComponent, SkCubeGridComponent, SkChasingDotsComponent, SkDoubleBounceComponent, SkRotatingPlaneComponent, SkSpinnerPulseComponent, SkThreeBounceComponent, SkWanderingCubesComponent, SkWaveComponent] });\nNgHttpLoaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: NgHttpLoaderModule, imports: [CommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: NgHttpLoaderModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n NgHttpLoaderComponent,\n ...SPINKIT_COMPONENTS,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n NgHttpLoaderComponent,\n ...SPINKIT_COMPONENTS,\n ]\n }]\n }] });\n\n/*\n * Public API Surface of ng-http-loader\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AbstractLoaderDirective, NgHttpLoaderComponent, NgHttpLoaderModule, PendingRequestsInterceptor, PendingRequestsInterceptorProvider, SPINKIT_COMPONENTS, SkChasingDotsComponent, SkCubeGridComponent, SkDoubleBounceComponent, SkRotatingPlaneComponent, SkSpinnerPulseComponent, SkThreeBounceComponent, SkWanderingCubesComponent, SkWaveComponent, Spinkit, SpinnerVisibilityService };\n","import { not } from '../util/not';\nimport { filter } from '../operators/filter';\nimport { innerFrom } from './innerFrom';\nexport function partition(source, predicate, thisArg) {\n return [filter(predicate, thisArg)(innerFrom(source)), filter(not(predicate, thisArg))(innerFrom(source))];\n}\n","import { Component, LOCALE_ID, Inject, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { ApiService } from './services/api.service';\r\nimport { LoadingService } from './services/loading.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Metadatalist } from './models/metadatalist';\r\nimport { MetaData, Resources } from './models/ResponseModel';\r\nimport { Meta } from '@angular/platform-browser';\r\nimport { ResourcesService } from './services/resources.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { DOCUMENT, ViewportScroller } from '@angular/common';\r\nimport * as AOS from 'aos';\r\nimport { Spinkit } from 'ng-http-loader';\r\nimport { SpinnerComponent } from './components/spinner/spinner.component';\r\nimport { Configurationlist } from './models/configurationlist';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class AppComponent {\r\n\r\n title = 'EtecPortal';\r\n Tag = '';\r\n Value = '';\r\n language = 'none';\r\n public loading = false;\r\n logo = 'https://beta.etec.gov.sa/assets/media/logos/etec-OI.svg';\r\n MetaData: MetaData[] = [];\r\n Resources: Resources[] = [];\r\n loading$ = this.loader.loading$;\r\n typeSelected: string;\r\n destroy$: Subject = new Subject();\r\n defaultTheme = 'Default';\r\n isEvent = false;\r\n public spinkit = Spinkit;\r\n public spinnerComponent = SpinnerComponent;\r\n\r\n constructor(private loader: LoadingService, @Inject(DOCUMENT) private document: Document, @Inject(LOCALE_ID) protected localeId: string, private resources: ResourcesService\r\n , private changeDetector: ChangeDetectorRef, private actRoute: ActivatedRoute, private apiServices: ApiService, private metaTagService: Meta, private router: Router, private scroll: ViewportScroller) {\r\n }\r\n\r\n /** Custom methods */\r\n prepareDocument() {\r\n\r\n let _lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n\r\n var linkRtl = '';\r\n var linkLtr = '';\r\n\r\n if (_lang == 'en') {\r\n\r\n var a = document.getElementById('rtl');\r\n a?.parentNode?.removeChild(a);\r\n document.body.dir = \"ltr\";\r\n }\r\n else {\r\n var a = document.getElementById('ltr');\r\n a?.parentNode?.removeChild(a);\r\n document.body.dir = \"rtl\";\r\n }\r\n\r\n\r\n if (localStorage.getItem('defaultTheme') === null) {\r\n document.body.setAttribute(\"data-event\", this.defaultTheme);\r\n } else {\r\n document.body.setAttribute(\"data-event\", localStorage.getItem('defaultTheme')!);\r\n }\r\n\r\n\r\n\r\n let _darkMode = localStorage.getItem('darkTheme')?.toString();\r\n document.body.setAttribute(\"data-theme\", _darkMode!);\r\n\r\n // if (!this.isEvent) {\r\n // let _eventMode = localStorage.getItem('eventTheme')?.toString();\r\n // document.body.setAttribute(\"data-theme\", _eventMode!);\r\n // }\r\n\r\n\r\n let font = localStorage.getItem('fontsize')?.toString();\r\n\r\n var root = document.getElementsByTagName('html')[0];\r\n root.setAttribute('class', font!);\r\n\r\n }\r\n\r\n getConfig() {\r\n this.apiServices.getList('Configurations').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Configurationlist[]) => {\r\n if(data .length > 0 ){\r\n this.defaultTheme = data.filter(m => m.ItemFields?.ConfigurationName == 'DefaultTheme')[0].ItemFields?.ConfigurationValue!;\r\n this.isEvent = data.filter(m => m.ItemFields?.ConfigurationName == 'IsEvent')[0].ItemFields?.ConfigurationValue! == '1' ? true : false;\r\n }\r\n this.prepareDocument();\r\n }\r\n );\r\n }\r\n\r\n\r\n getMetaData() {\r\n this.apiServices.getList('Metadata').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Metadatalist[]) => {\r\n data.forEach(element => {\r\n var obj: MetaData = {\r\n ID: element.ItemFields.ID,\r\n Title: element.ItemFields.Title,\r\n Tag: element.ItemFields.Tag,\r\n Value: element.ItemFields.Value,\r\n IsSocial: element.ItemFields.IsSocial\r\n };\r\n\r\n if (obj.IsSocial) {\r\n this.metaTagService.addTag({ property: obj.Tag, content: obj.Value });\r\n }\r\n else {\r\n this.metaTagService.addTag({ name: obj.Tag, content: obj.Value });\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n /** Component events */\r\n async ngOnInit() {\r\n this.getConfig();\r\n await this.apiServices.logInAsync();\r\n await this.getMetaData();\r\n AOS.init();\r\n }\r\n\r\n onActivate() {\r\n let scrollToTop = window.setInterval(() => {\r\n let pos = window.pageYOffset;\r\n if (pos > 0) {\r\n window.scroll({\r\n top: 0,\r\n left: 0,\r\n behavior: 'auto'\r\n });\r\n } else {\r\n window.clearInterval(scrollToTop);\r\n }\r\n }, 500);\r\n\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.changeDetector.detectChanges();\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 { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-theme-menu',\r\n templateUrl: './theme-menu.component.html',\r\n styleUrls: ['./theme-menu.component.css']\r\n})\r\nexport class ThemeMenuComponent implements OnInit {\r\n\r\n @Input() isEvent: boolean\r\n @Input() eventTheme: boolean\r\n @Input() eventName: string\r\n @Output() dark = new EventEmitter()\r\n @Output() event = new EventEmitter()\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n } \r\n\r\n ChangeToDark(){\r\n this.dark.emit();\r\n }\r\n\r\n ChangeToEvent(){\r\n this.event.emit();\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 \"ETEC\r\n \r\n \r\n \"ETEC\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \"ETEC\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 {{demo}}\r\n  \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \"ETEC\r\n \r\n \r\n \r\n \"ETEC\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \"ETEC\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {{demo}}\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 { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { fromEvent, map, Subject, takeUntil } from 'rxjs';\r\nimport { ListResponse } from 'src/app/models/ListResponse';\r\nimport { MenuResponse } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\nimport { RouteApiService } from 'src/app/services/route-api.service';\r\nimport { LoadingService } from 'src/app/services/loading.service';\r\nimport { Configurationlist } from 'src/app/models/configurationlist';\r\n\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.css']\r\n})\r\n\r\nexport class HeaderComponent implements OnInit {\r\n destroy$: Subject = new Subject();\r\n CopyRights: string = '';\r\n response: MenuResponse[] = [];\r\n betadisclaimer: string = '';\r\n search: string = '';\r\n headerClass = '';\r\n isHome = false;\r\n url = '';\r\n _lang = '';\r\n settings = '';\r\n darkMoode = '';\r\n demo = '';\r\n defaultTheme = 'Default';\r\n isEvent = false;\r\n isProducation = true;\r\n eventName= '';\r\n constructor(private apiServices: ApiService\r\n , private router: Router, private apiRouter: RouteApiService\r\n , private apiResources: ResourcesService, private loading: LoadingService) {\r\n //set language link\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n\r\n\r\n //Control scroll position \r\n fromEvent(window, 'scroll').pipe(takeUntil(this.destroy$))\r\n .subscribe((_e: Event) => {\r\n this.headerClass = window.scrollY > 50 ? 'navbar-stuck' : ' ';\r\n });\r\n\r\n //Chekc if this home page\r\n this.router.events.subscribe(_value => {\r\n this.isHome = window.location.href.toLowerCase().endsWith('home');\r\n this.url = this._lang == 'ar' ? window.location.href.toLowerCase().replace('/ar/', '/en/') : window.location.href.toLowerCase().replace('/en/', '/ar/');\r\n });\r\n }\r\n\r\n test: string[];\r\n /** Custom methods */\r\n getMenu() {\r\n\r\n this.apiServices.getList('sitemenu').pipe(map((res: ListResponse[]) => res.map(re => {\r\n return (\r\n {\r\n menuId: re.ItemId, menuName: re.ItemFields.MenuName,\r\n menULink: re.ItemFields.MenuLink?.Url.replace('http://baseurl.com/', '').toLocaleLowerCase(),\r\n menuSubLink: re.ItemFields.MenuLink?.Url.replace('http://baseurl.com/', '').toLocaleLowerCase(),\r\n menuVisitTotal: '0',\r\n Sequence: re.ItemFields.Sequence,\r\n isActive: re.ItemFields.IsActive1,\r\n parentMenuId: re.ItemFields.ParentMenuId?.LookupId\r\n } as MenuResponse)\r\n }))).subscribe({\r\n next: data => {\r\n this.response = data;\r\n this.response.sort((a, b) => a.Sequence - b.Sequence)\r\n },\r\n error: er => {\r\n this.apiServices.logIn();\r\n }\r\n })\r\n }\r\n\r\n getConfig() {\r\n this.apiServices.getList('Configurations').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Configurationlist[]) => {\r\n this.defaultTheme = data.filter(m => m.ItemFields?.ConfigurationName == 'DefaultTheme')[0].ItemFields?.ConfigurationValue!;\r\n this.isEvent = data.filter(m => m.ItemFields?.ConfigurationName== 'IsEvent')[0].ItemFields?.ConfigurationValue! == '1' ? true : false;\r\n this.isProducation = data.filter(m => m.ItemFields?.ConfigurationName== 'IsProduction')[0].ItemFields?.ConfigurationValue! == '1' ? true : false;\r\n this.eventName = data.filter(m => m.ItemFields?.ConfigurationName== 'EventName')[0].ItemFields?.ConfigurationValue!;\r\n if(localStorage.getItem('defaultTheme') === null){\r\n this.eventTheme = this.defaultTheme === '' ? false: true ;\r\n } else{\r\n this.eventTheme = localStorage.getItem('defaultTheme') ==='event' ? true : false;\r\n }\r\n }\r\n );\r\n }\r\n\r\n putVisitNo(itemId: string) {\r\n this.apiServices.putVisitingCount('SiteMenu', itemId).subscribe();\r\n }\r\n\r\n ifHasChild(menuItem: MenuResponse) {\r\n return this.response.find(element => element.parentMenuId == menuItem.menuId);\r\n }\r\n\r\n navigateUrl(routeUrl: string) {\r\n this.apiRouter.setMediaCenter(routeUrl);\r\n\r\n this.router.navigateByUrl('/mediacenter')\r\n\r\n }\r\n\r\n toggle(size: string) {\r\n\r\n this.apiRouter.setCss('html', 'font-size', size);\r\n }\r\n\r\n async changeLang(lang: string) {\r\n this.loading.setLang(lang);\r\n this.apiResources.clearResource();\r\n }\r\n\r\n darkTheme = (localStorage.getItem('darkTheme')) == \"dark\" ? true : false;\r\n eventTheme = localStorage.getItem('defaultTheme') === null ? true : false;\r\n\r\n Change() {\r\n this.darkTheme = !this.darkTheme;\r\n localStorage.setItem('darkTheme', this.darkTheme ? \"dark\" : \"\");\r\n document.body.setAttribute(\"data-theme\", this.darkTheme ? \"dark\" : \"\");\r\n }\r\n\r\n ChangeToEvent() {\r\n this.eventTheme = !this.eventTheme;\r\n localStorage.setItem('eventTheme', this.eventTheme ? \"event\" : \"\");\r\n localStorage.setItem('defaultTheme', this.eventTheme ? \"event\" : \"\");\r\n document.body.setAttribute(\"data-event\", this.eventTheme ? \"event\" : \"\");\r\n\r\n window.location.reload();\r\n }\r\n\r\n increaseFont() {\r\n var root = document.getElementsByTagName('html')[0];\r\n localStorage.setItem('fontsize', 'increaseFont');\r\n root.setAttribute('class', 'increaseFont');\r\n }\r\n\r\n normalFont() {\r\n var root = document.getElementsByTagName('html')[0];\r\n localStorage.setItem('fontsize', '');\r\n root.setAttribute('class', '');\r\n }\r\n\r\n decreaseFont() {\r\n var root = document.getElementsByTagName('html')[0];\r\n localStorage.setItem('fontsize', 'decreaseFont');\r\n root.setAttribute('class', 'decreaseFont');\r\n }\r\n /** Component events */\r\n async ngOnInit(): Promise {\r\n // await this.apiServices.logInAsync();\r\n this.getMenu();\r\n this.getConfig();\r\n this.settings = await this.apiResources.getByKey(\"settings\");\r\n this.darkMoode = await this.apiResources.getByKey(\"darkmode\");\r\n this.demo = await this.apiResources.getByKey(\"Demo\");\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","
    \r\n \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { Importantlinklist } from 'src/app/models/importantlinklist';\r\nimport { ImportantLinks } from 'src/app/models/ResponseModel';\r\nimport { ApiService } from 'src/app/services/api.service';\r\n\r\n@Component({\r\n selector: 'app-importantlinks',\r\n templateUrl: './importantlinks.component.html',\r\n styleUrls: ['./importantlinks.component.css']\r\n})\r\nexport class ImportantlinksComponent implements OnInit {\r\n\r\n @Input() title :string;\r\n destroy$: Subject = new Subject();\r\n ImportantLinks: ImportantLinks[] =[];\r\n _lang = '';\r\n\r\n constructor(private ImportantLinkService: ApiService) { \r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n }\r\n\r\n /** Custom methods */\r\n getRelatedLink(){\r\n this.ImportantLinkService.getListTopN('relatedlinks', 100, false, \"IsFooterLink\", true).pipe(takeUntil(this.destroy$)).subscribe(\r\n (data: Importantlinklist[]) => {\r\n data.forEach(element => {\r\n var obj: ImportantLinks = { \r\n title: element.ItemFields.RelatedLinkName,\r\n url: element.ItemFields.RelatedLinkTarget.replace('http://baseurl.com/', this._lang+'/').toLocaleLowerCase(),\r\n };\r\n \r\n this.ImportantLinks.push(obj);\r\n });\r\n }\r\n );\r\n }\r\n\r\n /** Component events */\r\n ngOnInit(): void {\r\n this.getRelatedLink();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {{CopyRights.replace(\"{0}\", curYear.toString())}}

    \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\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 { Component, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { AppComponent } from 'src/app/app.component';\r\nimport { CenterList } from 'src/app/models/CenterList';\r\n\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { NotificationService } from 'src/app/services/notification.service';\r\nimport { ResourcesService } from 'src/app/services/resources.service';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\n\r\n\r\nexport class FooterComponent implements OnInit {\r\n\r\n emailForm: FormGroup;\r\n myusername: string = '';\r\n emailRegex =\r\n '^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$';\r\n\r\n destroy$: Subject = new Subject();\r\n CopyRights: string = '';\r\n EtecFooterDescription: string = '';\r\n ETEC: string = '';\r\n NewsLitter: string = '';\r\n ImportantLinks: string = '';\r\n requiredfield: string = '';\r\n invalidemail: string = '';\r\n email: string = '';\r\n SubscribeText: string = '';\r\n cookiedisclaimer: string = '';\r\n privacypolicy: string = '';\r\n Centers: string = '';\r\n importantLinks: string = '';\r\n services: string = '';\r\n ok: string = '';\r\n isDone = false;\r\n isAgree = false;\r\n emailtxt = '';\r\n Center = '';\r\n FollowUson = '';\r\n ServicesforIndividuals = '';\r\n ServicesforBusinesses = '';\r\n serviceGuid = '';\r\n _lang = '';\r\n currentDate = new Date();\r\n curYear = this.currentDate.getFullYear();\r\n centers: CenterList[] = [];\r\n\r\n constructor(private apiService: ApiService, private apiResources: ResourcesService, private notificationService: NotificationService,\r\n private cookieService: CookieService, private _appService: AppComponent) {\r\n\r\n if (!localStorage.getItem('lang')) {\r\n this._lang = 'ar';\r\n }\r\n else {\r\n this._lang = (localStorage.getItem('lang')) == \"en\" ? 'en' : 'ar';\r\n }\r\n\r\n this.isDone = this.getCookie();\r\n this.isAgree = this.getCookiefooter();\r\n }\r\n\r\n /** Custom methods */\r\n get validator() {\r\n return true;\r\n }\r\n\r\n async ngOnInit() {\r\n await this.apiService.logInAsync();\r\n this.ETEC = await this.apiResources.getByKey(\"etecfullname\");\r\n this.cookiedisclaimer = await this.apiResources.getByKey(\"cookiedisclaimer\");\r\n this.SubscribeText = await this.apiResources.getByKey(\"subscribetext\");\r\n this.invalidemail = await this.apiResources.getByKey(\"importantlinks\");\r\n this.ImportantLinks = await this.apiResources.getByKey(\"importantlinks\");\r\n this.EtecFooterDescription = await this.apiResources.getByKey(\"etecfooterdescription\");\r\n this.privacypolicy = await this.apiResources.getByKey(\"privacypolicy\");\r\n this.emailtxt = await this.apiResources.getByKey(\"email\");\r\n this.ok = await this.apiResources.getByKey(\"ok\");\r\n this.CopyRights = await this.apiResources.getByKey(\"CopyRights\");\r\n this.NewsLitter = await this.apiResources.getByKey(\"NewsLetter\");\r\n this.Centers = await this.apiResources.getByKey(\"Centers\");\r\n this.importantLinks = await this.apiResources.getByKey(\"importantLinks\");\r\n this.services = await this.apiResources.getByKey(\"services\");\r\n this.Center = await this.apiResources.getByKey(\"Center\");\r\n this.FollowUson = await this.apiResources.getByKey(\"FollowUson\");\r\n this.ServicesforIndividuals = await this.apiResources.getByKey(\"ServicesforIndividuals\");\r\n this.ServicesforBusinesses = await this.apiResources.getByKey(\"ServicesforBusinesses\");\r\n this.serviceGuid = await this.apiResources.getByKey(\"ServiceGuide\");\r\n\r\n\r\n this.getCenter();\r\n }\r\n\r\n setCookie() {\r\n this.cookieService.set('subscribe', 'true');\r\n\r\n }\r\n\r\n getCookie() {\r\n return this.cookieService.get('subscribe') ? true : false;\r\n }\r\n\r\n setCookiefooter() {\r\n this.cookieService.set('Agree', 'true', 365);\r\n\r\n }\r\n\r\n getCookiefooter() {\r\n return this.cookieService.get('Agree') ? true : false;\r\n }\r\n\r\n agree() {\r\n this.setCookiefooter();\r\n this.isAgree = true;\r\n }\r\n\r\n sendSubscribtion() {\r\n if (!this.email) {\r\n this.notificationService.showError('', 'الرجاء إدخال الإيميل');\r\n return;\r\n }\r\n\r\n let pattern = new RegExp(\"^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$\");\r\n let valid = pattern.test(this.email);\r\n if (!valid) {\r\n this.notificationService.showError('', 'الرجاء إدخال إيميل صحيح');\r\n return;\r\n }\r\n\r\n this.apiService.subscribe(this.email).subscribe(\r\n () => {\r\n this.email = '';\r\n this.notificationService.showSuccess('', 'تم إرسال طلب الإشتراك بنجاح');\r\n this.setCookie();\r\n this.isDone = true;\r\n }\r\n );\r\n\r\n }\r\n\r\n getCenter() {\r\n this.apiService.getList('centers').pipe(takeUntil(this.destroy$)).subscribe(\r\n (data) => {\r\n this.centers = data.filter(\r\n (x: CenterList) => x.ItemId != 1);\r\n this.centers.sort((a, b) => a.ItemFields.Order - b.ItemFields.Order);\r\n }\r\n );\r\n }\r\n\r\n /** Component events */\r\n ngOnDestroy() {\r\n this.destroy$.next(true);\r\n // Unsubscribe from the subject\r\n this.destroy$.unsubscribe();\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor\r\n} from '@angular/common/http';\r\nimport { finalize, Observable } from 'rxjs';\r\nimport { LoadingService } from './services/loading.service';\r\n\r\n@Injectable()\r\nexport class AuthInterceptorInterceptor implements HttpInterceptor {\r\n constructor(private loader: LoadingService) {}\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n this.loader.show();\r\n const idToken = localStorage.getItem('id_token');\r\n\r\n if(request.url.endsWith('Authenticate')){\r\n return next.handle(request).pipe(\r\n finalize ( () => this.loader.hide())\r\n );\r\n }\r\n \r\n if(idToken){\r\n const cloned = request.clone({\r\n headers: request.headers.set('Authorization', `Bearer ${idToken}`).set('Content-Type', 'application/x-www-form-urlencoded')\r\n \r\n });\r\n\r\n return next.handle(cloned).pipe(\r\n finalize ( () => this.loader.hide())\r\n );\r\n }\r\n else{\r\n return next.handle(request).pipe(\r\n finalize ( () => this.loader.hide())\r\n );\r\n }\r\n\r\n return next.handle(request).pipe(\r\n finalize ( () => this.loader.hide())\r\n );\r\n }\r\n}\r\n","/**\n * @license Angular v14.2.6\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* RuntimeErrorCode.INVALID_TIMING_VALUE */, ngDevMode && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* RuntimeErrorCode.NEGATIVE_STEP_VALUE */, ngDevMode && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* RuntimeErrorCode.NEGATIVE_DELAY_VALUE */, ngDevMode && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* RuntimeErrorCode.INVALID_STYLE_PARAMS */, ngDevMode &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* RuntimeErrorCode.INVALID_PARAM_VALUE */, ngDevMode && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* RuntimeErrorCode.INVALID_NODE_TYPE */, ngDevMode && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* RuntimeErrorCode.INVALID_CSS_UNIT_VALUE */, ngDevMode && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* RuntimeErrorCode.INVALID_TRIGGER */, ngDevMode &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* RuntimeErrorCode.INVALID_DEFINITION */, ngDevMode && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* RuntimeErrorCode.INVALID_STATE */, ngDevMode &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* RuntimeErrorCode.INVALID_STYLE_VALUE */, ngDevMode && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* RuntimeErrorCode.INVALID_PROPERTY */, ngDevMode &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* RuntimeErrorCode.INVALID_PARALLEL_ANIMATION */, ngDevMode &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* RuntimeErrorCode.INVALID_KEYFRAMES */, ngDevMode && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* RuntimeErrorCode.INVALID_OFFSET */, ngDevMode && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* RuntimeErrorCode.KEYFRAME_OFFSETS_OUT_OF_ORDER */, ngDevMode && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* RuntimeErrorCode.KEYFRAMES_MISSING_OFFSETS */, ngDevMode && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* RuntimeErrorCode.INVALID_STAGGER */, ngDevMode && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* RuntimeErrorCode.INVALID_QUERY */, ngDevMode &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* RuntimeErrorCode.INVALID_EXPRESSION */, ngDevMode && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* RuntimeErrorCode.INVALID_TRANSITION_ALIAS */, ngDevMode && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* RuntimeErrorCode.VALIDATION_FAILED */, ngDevMode && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* RuntimeErrorCode.BUILDING_FAILED */, ngDevMode && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* RuntimeErrorCode.TRIGGER_BUILD_FAILED */, ngDevMode &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* RuntimeErrorCode.ANIMATION_FAILED */, ngDevMode &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* RuntimeErrorCode.REGISTRATION_FAILED */, ngDevMode &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* RuntimeErrorCode.MISSING_OR_DESTROYED_ANIMATION */, ngDevMode && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* RuntimeErrorCode.CREATE_ANIMATION_FAILED */, ngDevMode &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* RuntimeErrorCode.MISSING_PLAYER */, ngDevMode && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* RuntimeErrorCode.MISSING_TRIGGER */, ngDevMode &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* RuntimeErrorCode.MISSING_EVENT */, ngDevMode &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* RuntimeErrorCode.UNSUPPORTED_TRIGGER_EVENT */, ngDevMode &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* RuntimeErrorCode.UNREGISTERED_TRIGGER */, ngDevMode && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* RuntimeErrorCode.TRIGGER_TRANSITIONS_FAILED */, ngDevMode &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* RuntimeErrorCode.TRIGGER_PARSING_FAILED */, ngDevMode &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* RuntimeErrorCode.TRANSITION_FAILED */, ngDevMode && `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\n- ')}`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Set of all animatable CSS properties\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties\n */\nconst ANIMATABLE_PROP_SET = new Set([\n '-moz-outline-radius',\n '-moz-outline-radius-bottomleft',\n '-moz-outline-radius-bottomright',\n '-moz-outline-radius-topleft',\n '-moz-outline-radius-topright',\n '-ms-grid-columns',\n '-ms-grid-rows',\n '-webkit-line-clamp',\n '-webkit-text-fill-color',\n '-webkit-text-stroke',\n '-webkit-text-stroke-color',\n 'accent-color',\n 'all',\n 'backdrop-filter',\n 'background',\n 'background-color',\n 'background-position',\n 'background-size',\n 'block-size',\n 'border',\n 'border-block-end',\n 'border-block-end-color',\n 'border-block-end-width',\n 'border-block-start',\n 'border-block-start-color',\n 'border-block-start-width',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-width',\n 'border-color',\n 'border-end-end-radius',\n 'border-end-start-radius',\n 'border-image-outset',\n 'border-image-slice',\n 'border-image-width',\n 'border-inline-end',\n 'border-inline-end-color',\n 'border-inline-end-width',\n 'border-inline-start',\n 'border-inline-start-color',\n 'border-inline-start-width',\n 'border-left',\n 'border-left-color',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-width',\n 'border-start-end-radius',\n 'border-start-start-radius',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-shadow',\n 'caret-color',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-width',\n 'column-width',\n 'columns',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-grow',\n 'flex-shrink',\n 'font',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-variation-settings',\n 'font-weight',\n 'gap',\n 'grid-column-gap',\n 'grid-gap',\n 'grid-row-gap',\n 'grid-template-columns',\n 'grid-template-rows',\n 'height',\n 'inline-size',\n 'input-security',\n 'inset',\n 'inset-block',\n 'inset-block-end',\n 'inset-block-start',\n 'inset-inline',\n 'inset-inline-end',\n 'inset-inline-start',\n 'left',\n 'letter-spacing',\n 'line-clamp',\n 'line-height',\n 'margin',\n 'margin-block-end',\n 'margin-block-start',\n 'margin-bottom',\n 'margin-inline-end',\n 'margin-inline-start',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'mask',\n 'mask-border',\n 'mask-position',\n 'mask-size',\n 'max-block-size',\n 'max-height',\n 'max-inline-size',\n 'max-lines',\n 'max-width',\n 'min-block-size',\n 'min-height',\n 'min-inline-size',\n 'min-width',\n 'object-position',\n 'offset',\n 'offset-anchor',\n 'offset-distance',\n 'offset-path',\n 'offset-position',\n 'offset-rotate',\n 'opacity',\n 'order',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-width',\n 'padding',\n 'padding-block-end',\n 'padding-block-start',\n 'padding-bottom',\n 'padding-inline-end',\n 'padding-inline-start',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'perspective',\n 'perspective-origin',\n 'right',\n 'rotate',\n 'row-gap',\n 'scale',\n 'scroll-margin',\n 'scroll-margin-block',\n 'scroll-margin-block-end',\n 'scroll-margin-block-start',\n 'scroll-margin-bottom',\n 'scroll-margin-inline',\n 'scroll-margin-inline-end',\n 'scroll-margin-inline-start',\n 'scroll-margin-left',\n 'scroll-margin-right',\n 'scroll-margin-top',\n 'scroll-padding',\n 'scroll-padding-block',\n 'scroll-padding-block-end',\n 'scroll-padding-block-start',\n 'scroll-padding-bottom',\n 'scroll-padding-inline',\n 'scroll-padding-inline-end',\n 'scroll-padding-inline-start',\n 'scroll-padding-left',\n 'scroll-padding-right',\n 'scroll-padding-top',\n 'scroll-snap-coordinate',\n 'scroll-snap-destination',\n 'scrollbar-color',\n 'shape-image-threshold',\n 'shape-margin',\n 'shape-outside',\n 'tab-size',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-thickness',\n 'text-emphasis',\n 'text-emphasis-color',\n 'text-indent',\n 'text-shadow',\n 'text-underline-offset',\n 'top',\n 'transform',\n 'transform-origin',\n 'translate',\n 'vertical-align',\n 'visibility',\n 'width',\n 'word-spacing',\n 'z-index',\n 'zoom',\n]);\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n}\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes$1(driver, normalizer, element, keyframes, preStyles = new Map(), postStyles = new Map()) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf.get('offset');\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || new Map();\n kf.forEach((val, prop) => {\n let normalizedProp = prop;\n let normalizedValue = val;\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles.get(prop);\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles.get(prop);\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe.set(normalizedProp, normalizedValue);\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetDefaultValue(map, key, defaultValue) {\n let value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.slice(separatorPos + 1);\n return [id, action];\n}\nlet _contains = (elm1, elm2) => false;\nlet _query = (element, selector, multi) => {\n return [];\n};\nlet _documentElement = null;\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host; // consider host to support shadow DOM\n if (parent === _documentElement) {\n return null;\n }\n return parent;\n}\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n if (!isBrowser()) {\n _contains = (elm1, elm2) => elm1.contains(elm2);\n }\n else {\n // Read the document element in an IIFE that's been marked pure to avoid a top-level property\n // read that may prevent tree-shaking.\n _documentElement = /* @__PURE__ */ (() => document.documentElement)();\n _contains = (elm1, elm2) => {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n };\n }\n _query = (element, selector, multi) => {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n };\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.slice(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction validateWebAnimatableStyleProperty(prop) {\n return ANIMATABLE_PROP_SET.has(prop);\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nconst containsElement = _contains;\nconst invokeQuery = _query;\nfunction hypenatePropsKeys(original) {\n const newMap = new Map();\n original.forEach((val, prop) => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newMap.set(newProp, val);\n });\n return newMap;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\nNoopAnimationDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopAnimationDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopAnimationDriver });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = ( /* @__PURE__ */new NoopAnimationDriver());\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction convertToMap(obj) {\n const styleMap = new Map();\n Object.keys(obj).forEach(prop => {\n const val = obj[prop];\n styleMap.set(prop, val);\n });\n return styleMap;\n}\nfunction normalizeKeyframes(keyframes) {\n if (!keyframes.length) {\n return [];\n }\n if (keyframes[0] instanceof Map) {\n return keyframes;\n }\n return keyframes.map(kf => convertToMap(kf));\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = new Map();\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, normalizedStyles));\n }\n else {\n copyStyles(styles, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, destination = new Map(), backfill) {\n if (backfill) {\n for (let [prop, val] of backfill) {\n destination.set(prop, val);\n }\n }\n for (let [prop, val] of styles) {\n destination.set(prop, val);\n }\n return destination;\n}\nfunction getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\n styles.forEach((val, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.has(prop)) {\n formerStyles.set(prop, element.style[camelProp]);\n }\n element.style[camelProp] = val;\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n styles.forEach((_, prop) => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (localVal == null) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n if (previousStyles.size && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyles.forEach((val, prop) => {\n if (!startingKeyframe.has(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe.set(prop, val);\n });\n if (missingStyleProps.length) {\n for (let i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(prop => kf.set(prop, computeStyle(element, prop)));\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* AnimationMetadataType.Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* AnimationMetadataType.State */:\n return visitor.visitState(node, context);\n case 1 /* AnimationMetadataType.Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* AnimationMetadataType.Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* AnimationMetadataType.Group */:\n return visitor.visitGroup(node, context);\n case 4 /* AnimationMetadataType.Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* AnimationMetadataType.Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* AnimationMetadataType.Style */:\n return visitor.visitStyle(node, context);\n case 8 /* AnimationMetadataType.Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimationMetadataType.AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimationMetadataType.AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* AnimationMetadataType.Query */:\n return visitor.visitQuery(node, context);\n case 12 /* AnimationMetadataType.Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n NG_DEV_MODE && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (props.length) {\n warnings.push(`The following provided properties are not recognized: ${props.join(', ')}`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = new Map();\n context.collectedStyles.set(ROOT_SELECTOR, new Map());\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* AnimationMetadataType.State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* AnimationMetadataType.Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* AnimationMetadataType.Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(style => {\n if (style instanceof Map) {\n style.forEach(value => {\n extractStyleParams(value).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* AnimationMetadataType.State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* AnimationMetadataType.Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* AnimationMetadataType.Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* AnimationMetadataType.Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* AnimationMetadataType.Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* AnimationMetadataType.Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n const metadataStyles = Array.isArray(metadata.styles) ? metadata.styles : [metadata.styles];\n for (let styleTuple of metadataStyles) {\n if (typeof styleTuple === 'string') {\n if (styleTuple === AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(convertToMap(styleTuple));\n }\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (styleData instanceof Map) {\n if (styleData.has('easing')) {\n collectedEasing = styleData.get('easing');\n styleData.delete('easing');\n }\n if (!containsDynamicStyles) {\n for (let value of styleData.values()) {\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* AnimationMetadataType.Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple === 'string')\n return;\n tuple.forEach((value, prop) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._driver.validateStyleProperty(prop)) {\n tuple.delete(prop);\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n }\n // This is guaranteed to have a defined Map at this querySelector location making it\n // safe to add the assertion here. It is set as a default empty map in prior methods.\n const collectedStyles = context.collectedStyles.get(context.currentQuerySelector);\n const collectedEntry = collectedStyles.get(prop);\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles.set(prop, { startTime, endTime });\n }\n if (context.options) {\n validateStyleParams(value, context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* AnimationMetadataType.Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* AnimationMetadataType.Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimationMetadataType.AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimationMetadataType.AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetDefaultValue(context.collectedStyles, context.currentQuerySelector, new Map());\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* AnimationMetadataType.Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* AnimationMetadataType.Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.slice(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = new Map();\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (styleTuple instanceof Map && styleTuple.has('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n });\n }\n else if (styles instanceof Map && styles.has('offset')) {\n const obj = styles;\n offset = parseFloat(obj.get('offset'));\n obj.delete('offset');\n }\n return offset;\n}\nfunction constructTimingAst(value, errors) {\n if (value.hasOwnProperty('duration')) {\n return value;\n }\n if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n const timings = resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* AnimationTransitionInstructionType.TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill map. The `copyStyles` method in util.ts\n * handles propagating that backfill map to the styles object.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = new Map(), finalStyles = new Map(), options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n context.currentTimeline.delayNextStep(delay);\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n if (timelines.length && finalStyles.size) {\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ?\n timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, delay, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this._applyAnimationRefDelays([ast.options, ast.animation.options], context, innerContext);\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _applyAnimationRefDelays(animationsRefsOptions, context, innerContext) {\n for (const animationRefOptions of animationsRefsOptions) {\n const animationDelay = animationRefOptions?.delay;\n if (animationDelay) {\n const animationDelayValue = typeof animationDelay === 'number' ?\n animationDelay :\n resolveTimingValue(interpolateParams(animationDelay, animationRefOptions?.params ?? {}, context.errors));\n innerContext.delayNextStep(animationDelayValue);\n }\n }\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* AnimationMetadataType.Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* AnimationMetadataType.Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.hasCurrentStyleProperties()) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* AnimationMetadataType.Style */ ||\n (startTime == 0 && context.currentTimeline.hasCurrentStyleProperties()))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this._previousKeyframe = new Map();\n this._currentKeyframe = new Map();\n this._keyframes = new Map();\n this._styleSummary = new Map();\n this._localTimelineStyles = new Map();\n this._pendingStyles = new Map();\n this._backFill = new Map();\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.hasCurrentStyleProperties();\n default:\n return true;\n }\n }\n hasCurrentStyleProperties() {\n return this._currentKeyframe.size > 0;\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size === 1 && this._pendingStyles.size;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = new Map();\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles.set(prop, value);\n this._globalTimelineStyles.set(prop, value);\n this._styleSummary.set(prop, { time: this.currentTime, value });\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n for (let [prop, value] of this._globalTimelineStyles) {\n this._backFill.set(prop, value || AUTO_STYLE);\n this._currentKeyframe.set(prop, AUTO_STYLE);\n }\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe.set('easing', easing);\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n for (let [prop, value] of styles) {\n const val = interpolateParams(value, params, errors);\n this._pendingStyles.set(prop, val);\n if (!this._localTimelineStyles.has(prop)) {\n this._backFill.set(prop, this._globalTimelineStyles.get(prop) ?? AUTO_STYLE);\n }\n this._updateStyle(prop, val);\n }\n }\n applyStylesToKeyframe() {\n if (this._pendingStyles.size == 0)\n return;\n this._pendingStyles.forEach((val, prop) => {\n this._currentKeyframe.set(prop, val);\n });\n this._pendingStyles.clear();\n this._localTimelineStyles.forEach((val, prop) => {\n if (!this._currentKeyframe.has(prop)) {\n this._currentKeyframe.set(prop, val);\n }\n });\n }\n snapshotCurrentStyles() {\n for (let [prop, val] of this._localTimelineStyles) {\n this._pendingStyles.set(prop, val);\n this._updateStyle(prop, val);\n }\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n timeline._styleSummary.forEach((details1, prop) => {\n const details0 = this._styleSummary.get(prop);\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, new Map(), this._backFill);\n finalKeyframe.forEach((value, prop) => {\n if (value === ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value === AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe.set('offset', time / this.duration);\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = new Map(kf0);\n kf0.set('offset', 0);\n kf1.set('offset', 1);\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0]);\n newFirstKeyframe.set('offset', 0);\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0]);\n oldFirstKeyframe.set('offset', roundOffset(startingGap));\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i]);\n const oldOffset = kf.get('offset');\n const timeAtKeyframe = delay + oldOffset * duration;\n kf.set('offset', roundOffset(timeAtKeyframe / totalTime));\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = new Map();\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || allStyles.keys();\n for (let prop of allProperties) {\n styles.set(prop, AUTO_STYLE);\n }\n }\n else {\n copyStyles(token, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst DIMENSIONAL_PROP_SET = new Set([\n 'width',\n 'height',\n 'minWidth',\n 'minHeight',\n 'maxWidth',\n 'maxHeight',\n 'left',\n 'top',\n 'bottom',\n 'right',\n 'fontSize',\n 'outlineWidth',\n 'outlineOffset',\n 'paddingTop',\n 'paddingLeft',\n 'paddingBottom',\n 'paddingRight',\n 'marginTop',\n 'marginLeft',\n 'marginBottom',\n 'marginRight',\n 'borderRadius',\n 'borderWidth',\n 'borderTopWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'textIndent',\n 'perspective'\n]);\nclass WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_SET.has(normalizedProperty) && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* AnimationTransitionInstructionType.TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n let styler = this._stateStyles.get('*');\n if (stateName !== undefined) {\n styler = this._stateStyles.get(stateName?.toString()) || styler;\n }\n return styler ? styler.buildStyles(params, errors) : new Map();\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = {\n params: applyParamDefaults(nextAnimationParams, transitionAnimationParams),\n delay: this.ast.options?.delay,\n };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetDefaultValue(preStyleMap, elm, new Set());\n tl.preStyleProps.forEach(prop => preProps.add(prop));\n const postProps = getOrSetDefaultValue(postStyleMap, elm, new Set());\n tl.postStyleProps.forEach(prop => postProps.add(prop));\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n checkNonAnimatableInTimelines(timelines, this._triggerName, driver);\n }\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\n/**\n * Checks inside a set of timelines if they try to animate a css property which is not considered\n * animatable, in that case it prints a warning on the console.\n * Besides that the function doesn't have any other effect.\n *\n * Note: this check is done here after the timelines are built instead of doing on a lower level so\n * that we can make sure that the warning appears only once per instruction (we can aggregate here\n * all the issues instead of finding them separately).\n *\n * @param timelines The built timelines for the current instruction.\n * @param triggerName The name of the trigger for the current instruction.\n * @param driver Animation driver used to perform the check.\n *\n */\nfunction checkNonAnimatableInTimelines(timelines, triggerName, driver) {\n if (!driver.validateAnimatableStyleProperty) {\n return;\n }\n const invalidNonAnimatableProps = new Set();\n timelines.forEach(({ keyframes }) => {\n const nonAnimatablePropsInitialValues = new Map();\n keyframes.forEach(keyframe => {\n for (const [prop, value] of keyframe.entries()) {\n if (!driver.validateAnimatableStyleProperty(prop)) {\n if (nonAnimatablePropsInitialValues.has(prop) && !invalidNonAnimatableProps.has(prop)) {\n const propInitialValue = nonAnimatablePropsInitialValues.get(prop);\n if (propInitialValue !== value) {\n invalidNonAnimatableProps.add(prop);\n }\n }\n else {\n nonAnimatablePropsInitialValues.set(prop, value);\n }\n }\n }\n });\n });\n if (invalidNonAnimatableProps.size > 0) {\n console.warn(`Warning: The animation trigger \"${triggerName}\" is attempting to animate the following` +\n ' not animatable properties: ' + Array.from(invalidNonAnimatableProps).join(', ') + '\\n' +\n '(to check the list of all animatable properties visit https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties)');\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nfunction applyParamDefaults(userParams, defaults) {\n const result = copyObj(defaults);\n for (const key in userParams) {\n if (userParams.hasOwnProperty(key) && userParams[key] != null) {\n result[key] = userParams[key];\n }\n }\n return result;\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = new Map();\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value !== null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n value.forEach((val, prop) => {\n if (val) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles.set(normalizedProp, val);\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = new Map();\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states.set(ast.name, new AnimationStateStyles(ast.style, defaultParams, _normalizer));\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* AnimationMetadataType.Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* AnimationMetadataType.Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(stateMap, key1, key2) {\n if (stateMap.has(key1)) {\n if (!stateMap.has(key2)) {\n stateMap.set(key2, stateMap.get(key1));\n }\n }\n else if (stateMap.has(key2)) {\n stateMap.set(key1, stateMap.get(key2));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = new Map();\n this._playersById = new Map();\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations.set(id, ast);\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes$1(this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations.get(id);\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, new Map(), new Map(), options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetDefaultValue(autoStylesMap, inst.element, new Map());\n inst.postStyleProps.forEach(prop => styles.set(prop, null));\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n styles.forEach((_, prop) => {\n styles.set(prop, this._driver.computeStyle(element, prop, AUTO_STYLE));\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, new Map(), styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById.set(id, player);\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n this._playersById.delete(id);\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById.get(id);\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n get params() {\n return this.options.params;\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = new Map();\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.has(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetDefaultValue(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetDefaultValue(this._engine.statesByElement, element, new Map());\n if (!triggersWithStates.has(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates.set(name, DEFAULT_STATE_VALUE);\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers.has(name)) {\n triggersWithStates.delete(name);\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers.has(name)) {\n // throw\n return false;\n }\n else {\n this._triggers.set(name, ast);\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers.get(name);\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = new Map());\n }\n let fromState = triggersWithStates.get(triggerName);\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates.set(triggerName, toState);\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetDefaultValue(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n this._triggers.delete(name);\n this._engine.statesByElement.forEach(stateMap => stateMap.delete(name));\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n triggerStates.forEach((state, triggerName) => {\n previousTriggersValues.set(triggerName, state.value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers.has(triggerName)) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers.get(triggerName);\n const transition = trigger.fallbackTransition;\n const fromState = elementStates.get(triggerName) || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n elementContainsData(element) {\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find(entry => entry.element === element) ? true : false) || containsData;\n return containsData;\n }\n}\nclass TransitionAnimationEngine {\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n // Find the closest ancestor with an existing namespace so we can then insert `ns` after it,\n // establishing a top-down ordering of namespaces in `this._namespaceList`.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n const ns = this._fetchNamespace(namespaceId);\n this.afterFlush(() => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n });\n this.afterFlushAnimationsDone(() => ns.destroy(context));\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n for (let stateValue of elementStates.values()) {\n if (stateValue.namespaceId) {\n const ns = this._fetchNamespace(stateValue.namespaceId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, isHostElement, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n if (isHostElement) {\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if (element.classList?.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates.has(entry.triggerName)) {\n const state = triggersWithStates.get(entry.triggerName);\n state.value = previousValue;\n triggersWithStates.set(entry.triggerName, state);\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetDefaultValue(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n if (stringMap.size) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n stringMap.forEach((_, prop) => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetDefaultValue(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, new Map([...Array.from(post?.entries() ?? []), ...Array.from(pre?.entries() ?? [])]));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n elementContainsData(namespaceId, element) {\n let containsData = false;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetDefaultValue(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes$1(this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetDefaultValue(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetDefaultValue(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = new Map();\n this.destroyed = false;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n this._queuedCallbacks.forEach((callbacks, phase) => {\n callbacks.forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks.clear();\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetDefaultValue(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = new Map();\n props.forEach(prop => {\n const value = driver.computeStyle(element, prop, defaultStyle);\n styles.set(prop, value);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n element.classList?.add(className);\n}\nfunction removeClass(element, className) {\n element.classList?.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return this._transitionEngine.players\n .concat(this._timelineEngine.players);\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\n }\n}\n\n/**\n * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles instanceof Map) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* SpecialCasedStylesState.Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = new Map());\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* SpecialCasedStylesState.Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* SpecialCasedStylesState.Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* SpecialCasedStylesState.Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* SpecialCasedStylesState.Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* SpecialCasedStylesState.Destroyed */;\n }\n }\n}\nSpecialCasedStyles.initialStylesByElement = ( /* @__PURE__ */new WeakMap());\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n styles.forEach((val, prop) => {\n if (isNonAnimatableStyle(prop)) {\n result = result || new Map();\n result.set(prop, val);\n }\n });\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n // the following original fns are persistent copies of the _onStartFns and _onDoneFns\n // and are used to reset the fns to their original values upon reset()\n // (since the _onStartFns and _onDoneFns get deleted after they are called)\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = new Map();\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n this.domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : new Map();\n this.domPlayer.addEventListener('finish', () => this._onFinish());\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n _convertKeyframesToObject(keyframes) {\n const kfs = [];\n keyframes.forEach(frame => {\n kfs.push(Object.fromEntries(frame));\n });\n return kfs;\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return element['animate'](this._convertKeyframesToObject(keyframes), options);\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n return this.domPlayer.currentTime / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = new Map();\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n finalKeyframe.forEach((val, prop) => {\n if (prop !== 'offset') {\n styles.set(prop, this._finished ? val : computeStyle(this.element, prop));\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName === 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n return validateStyleProperty(prop);\n }\n return true;\n }\n validateAnimatableStyleProperty(prop) {\n // Perform actual validation in dev mode only, in prod mode this check is a noop.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const cssProp = camelCaseToDashCase(prop);\n return validateWebAnimatableStyleProperty(cssProp);\n }\n return true;\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = new Map();\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n player.currentSnapshot.forEach((val, prop) => previousStyles.set(prop, val));\n });\n }\n let _keyframes = normalizeKeyframes(keyframes).map(styles => copyStyles(styles));\n _keyframes = balancePreviousStylesIntoKeyframes(element, _keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, _keyframes);\n return new WebAnimationsPlayer(element, _keyframes, playerOptions, specialStyles);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, normalizeKeyframes as ɵnormalizeKeyframes, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v14.2.6\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ViewEncapsulation, Injectable, Inject, RendererFactory2, NgZone, ANIMATION_MODULE_TYPE, NgModule } from '@angular/core';\nexport { ANIMATION_MODULE_TYPE } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\nBrowserAnimationBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserAnimationBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserAnimationBuilder });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return this._renderer.engine.players[+this.id]?.getPosition() ?? 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n this.promise = Promise.resolve(0);\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate?.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n // always use promise to schedule microtask instead of use Zone\n this.promise.then(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n Promise.resolve(null).then(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\nAnimationRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: AnimationRendererFactory });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: AnimationRendererFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode(n) : null;\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.delegate.destroy();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine) {\n super(namespaceId, delegate, engine);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.slice(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.slice(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.slice(dotIndex + 1);\n return [trigger, phase];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass InjectableAnimationEngine extends ɵAnimationEngine {\n // The `ApplicationRef` is injected here explicitly to force the dependency ordering.\n // Since the `ApplicationRef` should be created earlier before the `AnimationEngine`, they\n // both have `ngOnDestroy` hooks and `flush()` must be called after all views are destroyed.\n constructor(doc, driver, normalizer, appRef) {\n super(doc.body, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n}\nInjectableAnimationEngine.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });\nInjectableAnimationEngine.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: InjectableAnimationEngine });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }, { type: i0.ApplicationRef }]; } });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see `BrowserAnimationsModuleConfig`\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n}\nBrowserAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBrowserAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });\nBrowserAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to enable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to enable animations in an application\n * bootstrapped using the `bootstrapApplication` function. In this scenario there\n * is no need to import the `BrowserAnimationsModule` NgModule at all, just add\n * providers returned by this function to the `providers` list as show below.\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n * @developerPreview\n */\nfunction provideAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideAnimations` call results in app code.\n return [...BROWSER_ANIMATIONS_PROVIDERS];\n}\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n}\nNoopAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNoopAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });\nNoopAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * Returns the set of [dependency-injection providers](guide/glossary#provider)\n * to disable animations in an application. See [animations guide](guide/animations)\n * to learn more about animations in Angular.\n *\n * @usageNotes\n *\n * The function is useful when you want to bootstrap an application using\n * the `bootstrapApplication` function, but you need to disable animations\n * (for example, when running tests).\n *\n * ```typescript\n * bootstrapApplication(RootComponent, {\n * providers: [\n * provideNoopAnimations()\n * ]\n * });\n * ```\n *\n * @publicApi\n * @developerPreview\n */\nfunction provideNoopAnimations() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideNoopAnimations` call results in app code.\n return [...BROWSER_NOOP_ANIMATIONS_PROVIDERS];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserAnimationsModule, NoopAnimationsModule, provideAnimations, provideNoopAnimations, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","var prefix = \"fab\";\nvar faMonero = {\n prefix: 'fab',\n iconName: 'monero',\n icon: [496, 512, [], \"f3d0\", \"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\"]\n};\nvar faHooli = {\n prefix: 'fab',\n iconName: 'hooli',\n icon: [640, 512, [], \"f427\", \"M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z\"]\n};\nvar faYelp = {\n prefix: 'fab',\n iconName: 'yelp',\n icon: [384, 512, [], \"f1e9\", \"M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z\"]\n};\nvar faCcVisa = {\n prefix: 'fab',\n iconName: 'cc-visa',\n icon: [576, 512, [], \"f1f0\", \"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\"]\n};\nvar faLastfm = {\n prefix: 'fab',\n iconName: 'lastfm',\n icon: [512, 512, [], \"f202\", \"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\"]\n};\nvar faShopware = {\n prefix: 'fab',\n iconName: 'shopware',\n icon: [512, 512, [], \"f5b5\", \"M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z\"]\n};\nvar faCreativeCommonsNc = {\n prefix: 'fab',\n iconName: 'creative-commons-nc',\n icon: [496, 512, [], \"f4e8\", \"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\"]\n};\nvar faAws = {\n prefix: 'fab',\n iconName: 'aws',\n icon: [640, 512, [], \"f375\", \"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\"]\n};\nvar faRedhat = {\n prefix: 'fab',\n iconName: 'redhat',\n icon: [512, 512, [], \"f7bc\", \"M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24\"]\n};\nvar faYoast = {\n prefix: 'fab',\n iconName: 'yoast',\n icon: [448, 512, [], \"f2b1\", \"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\"]\n};\nvar faCloudflare = {\n prefix: 'fab',\n iconName: 'cloudflare',\n icon: [640, 512, [], \"e07d\", \"M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z\"]\n};\nvar faUps = {\n prefix: 'fab',\n iconName: 'ups',\n icon: [384, 512, [], \"f7e0\", \"M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z\"]\n};\nvar faWpexplorer = {\n prefix: 'fab',\n iconName: 'wpexplorer',\n icon: [512, 512, [], \"f2de\", \"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\"]\n};\nvar faDyalog = {\n prefix: 'fab',\n iconName: 'dyalog',\n icon: [416, 512, [], \"f399\", \"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\"]\n};\nvar faBity = {\n prefix: 'fab',\n iconName: 'bity',\n icon: [496, 512, [], \"f37a\", \"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\"]\n};\nvar faStackpath = {\n prefix: 'fab',\n iconName: 'stackpath',\n icon: [448, 512, [], \"f842\", \"M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z\"]\n};\nvar faBuysellads = {\n prefix: 'fab',\n iconName: 'buysellads',\n icon: [448, 512, [], \"f20d\", \"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\"]\n};\nvar faFirstOrder = {\n prefix: 'fab',\n iconName: 'first-order',\n icon: [448, 512, [], \"f2b0\", \"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\"]\n};\nvar faModx = {\n prefix: 'fab',\n iconName: 'modx',\n icon: [448, 512, [], \"f285\", \"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\"]\n};\nvar faGuilded = {\n prefix: 'fab',\n iconName: 'guilded',\n icon: [448, 512, [], \"e07e\", \"M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z\"]\n};\nvar faVnv = {\n prefix: 'fab',\n iconName: 'vnv',\n icon: [640, 512, [], \"f40b\", \"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\"]\n};\nvar faSquareJs = {\n prefix: 'fab',\n iconName: 'square-js',\n icon: [448, 512, [\"js-square\"], \"f3b9\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsSquare = faSquareJs;\nvar faMicrosoft = {\n prefix: 'fab',\n iconName: 'microsoft',\n icon: [448, 512, [], \"f3ca\", \"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\"]\n};\nvar faQq = {\n prefix: 'fab',\n iconName: 'qq',\n icon: [448, 512, [], \"f1d6\", \"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\"]\n};\nvar faOrcid = {\n prefix: 'fab',\n iconName: 'orcid',\n icon: [512, 512, [], \"f8d2\", \"M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z\"]\n};\nvar faJava = {\n prefix: 'fab',\n iconName: 'java',\n icon: [384, 512, [], \"f4e4\", \"M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z\"]\n};\nvar faInvision = {\n prefix: 'fab',\n iconName: 'invision',\n icon: [448, 512, [], \"f7b0\", \"M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z\"]\n};\nvar faCreativeCommonsPdAlt = {\n prefix: 'fab',\n iconName: 'creative-commons-pd-alt',\n icon: [496, 512, [], \"f4ed\", \"M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z\"]\n};\nvar faCentercode = {\n prefix: 'fab',\n iconName: 'centercode',\n icon: [512, 512, [], \"f380\", \"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\"]\n};\nvar faGlideG = {\n prefix: 'fab',\n iconName: 'glide-g',\n icon: [448, 512, [], \"f2a6\", \"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\"]\n};\nvar faDrupal = {\n prefix: 'fab',\n iconName: 'drupal',\n icon: [448, 512, [], \"f1a9\", \"M303.973,108.136C268.2,72.459,234.187,38.35,224.047,0c-9.957,38.35-44.25,72.459-80.019,108.136C90.467,161.7,29.716,222.356,29.716,313.436c-2.337,107.3,82.752,196.18,190.053,198.517S415.948,429.2,418.285,321.9q.091-4.231,0-8.464C418.285,222.356,357.534,161.7,303.973,108.136Zm-174.326,223a130.282,130.282,0,0,0-15.211,24.153,4.978,4.978,0,0,1-3.319,2.766h-1.659c-4.333,0-9.219-8.481-9.219-8.481h0c-1.29-2.028-2.489-4.149-3.687-6.361l-.83-1.752c-11.247-25.72-1.475-62.318-1.475-62.318h0a160.585,160.585,0,0,1,23.231-49.873A290.8,290.8,0,0,1,138.5,201.613l9.219,9.219,43.512,44.434a4.979,4.979,0,0,1,0,6.638L145.78,312.33h0Zm96.612,127.311a67.2,67.2,0,0,1-49.781-111.915c14.2-16.871,31.528-33.464,50.334-55.313,22.309,23.785,36.875,40.1,51.164,57.986a28.413,28.413,0,0,1,2.95,4.425,65.905,65.905,0,0,1,11.984,37.981,66.651,66.651,0,0,1-66.466,66.836ZM352.371,351.6h0a7.743,7.743,0,0,1-6.176,5.347H344.9a11.249,11.249,0,0,1-6.269-5.07h0a348.21,348.21,0,0,0-39.456-48.952L281.387,284.49,222.3,223.185a497.888,497.888,0,0,1-35.4-36.322,12.033,12.033,0,0,0-.922-1.382,35.4,35.4,0,0,1-4.7-9.219V174.51a31.346,31.346,0,0,1,9.218-27.656c11.432-11.431,22.955-22.954,33.833-34.939,11.984,13.275,24.8,26,37.428,38.627h0a530.991,530.991,0,0,1,69.6,79.1,147.494,147.494,0,0,1,27.011,83.8A134.109,134.109,0,0,1,352.371,351.6Z\"]\n};\nvar faHireAHelper = {\n prefix: 'fab',\n iconName: 'hire-a-helper',\n icon: [512, 512, [], \"f3b0\", \"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\"]\n};\nvar faCreativeCommonsBy = {\n prefix: 'fab',\n iconName: 'creative-commons-by',\n icon: [496, 512, [], \"f4e7\", \"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\"]\n};\nvar faUnity = {\n prefix: 'fab',\n iconName: 'unity',\n icon: [448, 512, [], \"e049\", \"M243.583 91.6027L323.695 138.384C326.575 140.026 326.68 144.583 323.695 146.225L228.503 201.854C225.623 203.55 222.22 203.444 219.549 201.854L124.357 146.225C121.425 144.636 121.373 139.973 124.357 138.384L204.417 91.6027V0L0 119.417V358.252L78.3843 312.477V218.914C78.3319 215.576 82.2066 213.192 85.0865 214.993L180.279 270.622C183.159 272.318 184.782 275.338 184.782 278.464V389.669C184.834 393.007 180.959 395.391 178.079 393.589L97.9673 346.808L19.583 392.583L224 512L428.417 392.583L350.033 346.808L269.921 393.589C267.093 395.338 263.114 393.06 263.218 389.669V278.464C263.218 275.126 265.051 272.159 267.721 270.622L362.914 214.993C365.741 213.245 369.72 215.47 369.616 218.914V312.477L448 358.252V119.417L243.583 0V91.6027Z\"]\n};\nvar faWhmcs = {\n prefix: 'fab',\n iconName: 'whmcs',\n icon: [448, 512, [], \"f40d\", \"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\"]\n};\nvar faRocketchat = {\n prefix: 'fab',\n iconName: 'rocketchat',\n icon: [576, 512, [], \"f3e8\", \"M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z\"]\n};\nvar faVk = {\n prefix: 'fab',\n iconName: 'vk',\n icon: [448, 512, [], \"f189\", \"M31.4907 63.4907C0 94.9813 0 145.671 0 247.04V264.96C0 366.329 0 417.019 31.4907 448.509C62.9813 480 113.671 480 215.04 480H232.96C334.329 480 385.019 480 416.509 448.509C448 417.019 448 366.329 448 264.96V247.04C448 145.671 448 94.9813 416.509 63.4907C385.019 32 334.329 32 232.96 32H215.04C113.671 32 62.9813 32 31.4907 63.4907ZM75.6 168.267H126.747C128.427 253.76 166.133 289.973 196 297.44V168.267H244.16V242C273.653 238.827 304.64 205.227 315.093 168.267H363.253C359.313 187.435 351.46 205.583 340.186 221.579C328.913 237.574 314.461 251.071 297.733 261.227C316.41 270.499 332.907 283.63 346.132 299.751C359.357 315.873 369.01 334.618 374.453 354.747H321.44C316.555 337.262 306.614 321.61 292.865 309.754C279.117 297.899 262.173 290.368 244.16 288.107V354.747H238.373C136.267 354.747 78.0267 284.747 75.6 168.267Z\"]\n};\nvar faUntappd = {\n prefix: 'fab',\n iconName: 'untappd',\n icon: [640, 512, [], \"f405\", \"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\"]\n};\nvar faMailchimp = {\n prefix: 'fab',\n iconName: 'mailchimp',\n icon: [448, 512, [], \"f59e\", \"M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z\"]\n};\nvar faCss3Alt = {\n prefix: 'fab',\n iconName: 'css3-alt',\n icon: [384, 512, [], \"f38b\", \"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\"]\n};\nvar faSquareReddit = {\n prefix: 'fab',\n iconName: 'square-reddit',\n icon: [448, 512, [\"reddit-square\"], \"f1a2\", \"M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z\"]\n};\nvar faRedditSquare = faSquareReddit;\nvar faVimeoV = {\n prefix: 'fab',\n iconName: 'vimeo-v',\n icon: [448, 512, [], \"f27d\", \"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\"]\n};\nvar faContao = {\n prefix: 'fab',\n iconName: 'contao',\n icon: [512, 512, [], \"f26d\", \"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\"]\n};\nvar faSquareFontAwesome = {\n prefix: 'fab',\n iconName: 'square-font-awesome',\n icon: [448, 512, [], \"e5ad\", \"M384.5,32.5h-320c-35.3,0-64,28.7-64,64v320c0,35.3,28.7,64,64,64h320c35.3,0,64-28.7,64-64v-320 C448.5,61.2,419.8,32.5,384.5,32.5z M336.5,312.5c-31.6,11.2-41.2,16-59.8,16c-31.4,0-43.2-16-74.6-16c-10.2,0-18.2,1.6-25.6,4v-32 c7.4-2.2,15.4-4,25.6-4c31.2,0,43.2,16,74.6,16c10.2,0,17.8-1.4,27.8-4.6v-96c-10,3.2-17.6,4.6-27.8,4.6c-31.4,0-43.2-16-74.6-16 c-25.4,0-37.4,10.4-57.6,14.4v153.6c0,8.8-7.2,16-16,16c-8.8,0-16-7.2-16-16v-192c0-8.8,7.2-16,16-16c8.8,0,16,7.2,16,16v6.4 c20.2-4,32.2-14.4,57.6-14.4c31.2,0,43.2,16,74.6,16c18.6,0,28.2-4.8,59.8-16V312.5z\"]\n};\nvar faDeskpro = {\n prefix: 'fab',\n iconName: 'deskpro',\n icon: [480, 512, [], \"f38f\", \"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\"]\n};\nvar faSistrix = {\n prefix: 'fab',\n iconName: 'sistrix',\n icon: [448, 512, [], \"f3ee\", \"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\"]\n};\nvar faSquareInstagram = {\n prefix: 'fab',\n iconName: 'square-instagram',\n icon: [448, 512, [\"instagram-square\"], \"e055\", \"M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z\"]\n};\nvar faInstagramSquare = faSquareInstagram;\nvar faBattleNet = {\n prefix: 'fab',\n iconName: 'battle-net',\n icon: [512, 512, [], \"f835\", \"M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8\"]\n};\nvar faTheRedYeti = {\n prefix: 'fab',\n iconName: 'the-red-yeti',\n icon: [512, 512, [], \"f69d\", \"M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z\"]\n};\nvar faSquareHackerNews = {\n prefix: 'fab',\n iconName: 'square-hacker-news',\n icon: [448, 512, [\"hacker-news-square\"], \"f3af\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerNewsSquare = faSquareHackerNews;\nvar faEdge = {\n prefix: 'fab',\n iconName: 'edge',\n icon: [512, 512, [], \"f282\", \"M120.1 37.44C161.1 12.23 207.7-.7753 255 .0016C423 .0016 512 123.8 512 219.5C511.9 252.2 499 283.4 476.1 306.7C453.2 329.9 422.1 343.2 389.4 343.7C314.2 343.7 297.9 320.6 297.9 311.7C297.9 307.9 299.1 305.5 302.7 302.3L303.7 301.1L304.1 299.5C314.6 288 320 273.3 320 257.9C320 179.2 237.8 115.2 136 115.2C98.46 114.9 61.46 124.1 28.48 142.1C55.48 84.58 111.2 44.5 119.8 38.28C120.6 37.73 120.1 37.44 120.1 37.44V37.44zM135.7 355.5C134.3 385.5 140.3 415.5 152.1 442.7C165.7 469.1 184.8 493.7 208.6 512C149.1 500.5 97.11 468.1 59.2 422.7C21.12 376.3 0 318.4 0 257.9C0 206.7 62.4 163.5 136 163.5C172.6 162.9 208.4 174.4 237.8 196.2L234.2 197.4C182.7 215 135.7 288.1 135.7 355.5V355.5zM469.8 400L469.1 400.1C457.3 418.9 443.2 435.2 426.9 449.6C396.1 477.6 358.8 495.1 318.1 499.5C299.5 499.8 281.3 496.3 264.3 488.1C238.7 477.8 217.2 458.1 202.7 435.1C188.3 411.2 181.6 383.4 183.7 355.5C183.1 335.4 189.1 315.2 198.7 297.3C212.6 330.4 236.2 358.6 266.3 378.1C296.4 397.6 331.8 407.6 367.7 406.7C398.7 407 429.8 400 457.9 386.2L459.8 385.3C463.7 383 467.5 381.4 471.4 385.3C475.9 390.2 473.2 394.5 470.2 399.3C470 399.5 469.9 399.8 469.8 400V400z\"]\n};\nvar faNapster = {\n prefix: 'fab',\n iconName: 'napster',\n icon: [496, 512, [], \"f3d2\", \"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\"]\n};\nvar faSquareSnapchat = {\n prefix: 'fab',\n iconName: 'square-snapchat',\n icon: [448, 512, [\"snapchat-square\"], \"f2ad\", \"M384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32Zm-3.907,319.309-.083.1a32.364,32.364,0,0,1-8.717,6.823,90.26,90.26,0,0,1-20.586,8.2,12.694,12.694,0,0,0-3.852,1.76c-2.158,1.909-2.1,4.64-4.4,8.55a23.137,23.137,0,0,1-6.84,7.471c-6.707,4.632-14.244,4.923-22.23,5.23-7.214.274-15.39.581-24.729,3.669-3.761,1.245-7.753,3.694-12.377,6.533-11.265,6.9-26.68,16.353-52.3,16.353s-40.925-9.4-52.106-16.279c-4.657-2.888-8.675-5.362-12.543-6.64-9.339-3.08-17.516-3.4-24.729-3.67-7.986-.307-15.523-.6-22.231-5.229a23.085,23.085,0,0,1-6.01-6.11c-3.2-4.632-2.855-7.8-5.254-9.895a13.428,13.428,0,0,0-4.1-1.834,89.986,89.986,0,0,1-20.313-8.127,32.905,32.905,0,0,1-8.3-6.284c-6.583-6.757-8.276-14.776-5.686-21.824,3.436-9.338,11.571-12.111,19.4-16.262,14.776-8.027,26.348-18.055,34.433-29.884a68.236,68.236,0,0,0,5.985-10.567c.789-2.158.772-3.329.241-4.416a7.386,7.386,0,0,0-2.208-2.217c-2.532-1.676-5.113-3.353-6.882-4.5-3.27-2.141-5.868-3.818-7.529-4.98-6.267-4.383-10.65-9.04-13.4-14.245a28.4,28.4,0,0,1-1.369-23.584c4.134-10.924,14.469-17.706,26.978-17.706a37.141,37.141,0,0,1,7.845.83c.689.15,1.37.307,2.042.482-.108-7.43.058-15.357.722-23.119,2.358-27.261,11.912-41.589,21.874-52.994a86.836,86.836,0,0,1,22.28-17.931C188.254,100.383,205.312,96,224,96s35.828,4.383,50.944,13.016a87.169,87.169,0,0,1,22.239,17.9c9.961,11.406,19.516,25.709,21.874,52.995a231.194,231.194,0,0,1,.713,23.118c.673-.174,1.362-.332,2.051-.481a37.131,37.131,0,0,1,7.844-.83c12.5,0,22.82,6.782,26.971,17.706a28.37,28.37,0,0,1-1.4,23.559c-2.74,5.2-7.123,9.861-13.39,14.244-1.668,1.187-4.258,2.864-7.529,4.981-1.835,1.187-4.541,2.947-7.164,4.682a6.856,6.856,0,0,0-1.951,2.034c-.506,1.046-.539,2.191.166,4.208a69.015,69.015,0,0,0,6.085,10.792c8.268,12.1,20.188,22.313,35.454,30.407,1.486.772,2.98,1.5,4.441,2.258.722.332,1.569.763,2.491,1.3,4.9,2.723,9.2,6.01,11.455,12.153C387.821,336.915,386.269,344.7,380.093,351.309Zm-16.719-18.461c-50.313-24.314-58.332-61.918-58.689-64.749-.431-3.379-.921-6.035,2.806-9.472,3.594-3.328,19.541-13.19,23.965-16.278,7.33-5.114,10.534-10.219,8.16-16.495-1.66-4.316-5.686-5.976-9.961-5.976a18.5,18.5,0,0,0-3.993.448c-8.035,1.743-15.838,5.769-20.354,6.857a7.1,7.1,0,0,1-1.66.224c-2.408,0-3.279-1.071-3.088-3.968.564-8.783,1.759-25.925.373-41.937-1.884-22.032-8.99-32.948-17.432-42.6-4.051-4.624-23.135-24.654-59.536-24.654S168.53,134.359,164.479,139c-8.434,9.654-15.531,20.57-17.432,42.6-1.386,16.013-.141,33.147.373,41.937.166,2.756-.68,3.968-3.088,3.968a7.1,7.1,0,0,1-1.66-.224c-4.507-1.087-12.31-5.113-20.346-6.856a18.494,18.494,0,0,0-3.993-.449c-4.25,0-8.3,1.636-9.961,5.977-2.374,6.276.847,11.381,8.168,16.494,4.425,3.088,20.371,12.958,23.966,16.279,3.719,3.437,3.237,6.093,2.805,9.471-.356,2.79-8.384,40.394-58.689,64.749-2.946,1.428-7.96,4.45.88,9.331,13.88,7.628,23.111,6.807,30.3,11.43,6.093,3.927,2.5,12.394,6.923,15.449,5.454,3.76,21.583-.266,42.335,6.6,17.433,5.744,28.116,22.015,58.963,22.015s41.788-16.3,58.938-21.973c20.795-6.865,36.89-2.839,42.336-6.6,4.433-3.055.822-11.522,6.923-15.448,7.181-4.624,16.411-3.8,30.3-11.472C371.36,337.355,366.346,334.333,363.374,332.848Z\"]\n};\nvar faSnapchatSquare = faSquareSnapchat;\nvar faGooglePlusG = {\n prefix: 'fab',\n iconName: 'google-plus-g',\n icon: [640, 512, [], \"f0d5\", \"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\"]\n};\nvar faArtstation = {\n prefix: 'fab',\n iconName: 'artstation',\n icon: [512, 512, [], \"f77a\", \"M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z\"]\n};\nvar faMarkdown = {\n prefix: 'fab',\n iconName: 'markdown',\n icon: [640, 512, [], \"f60f\", \"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z\"]\n};\nvar faSourcetree = {\n prefix: 'fab',\n iconName: 'sourcetree',\n icon: [448, 512, [], \"f7d3\", \"M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z\"]\n};\nvar faGooglePlus = {\n prefix: 'fab',\n iconName: 'google-plus',\n icon: [512, 512, [], \"f2b3\", \"M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z\"]\n};\nvar faDiaspora = {\n prefix: 'fab',\n iconName: 'diaspora',\n icon: [512, 512, [], \"f791\", \"M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z\"]\n};\nvar faFoursquare = {\n prefix: 'fab',\n iconName: 'foursquare',\n icon: [368, 512, [], \"f180\", \"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\"]\n};\nvar faStackOverflow = {\n prefix: 'fab',\n iconName: 'stack-overflow',\n icon: [384, 512, [], \"f16c\", \"M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"]\n};\nvar faGithubAlt = {\n prefix: 'fab',\n iconName: 'github-alt',\n icon: [480, 512, [], \"f113\", \"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\"]\n};\nvar faPhoenixSquadron = {\n prefix: 'fab',\n iconName: 'phoenix-squadron',\n icon: [512, 512, [], \"f511\", \"M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z\"]\n};\nvar faPagelines = {\n prefix: 'fab',\n iconName: 'pagelines',\n icon: [384, 512, [], \"f18c\", \"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\"]\n};\nvar faAlgolia = {\n prefix: 'fab',\n iconName: 'algolia',\n icon: [448, 512, [], \"f36c\", \"M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z\"]\n};\nvar faRedRiver = {\n prefix: 'fab',\n iconName: 'red-river',\n icon: [448, 512, [], \"f3e3\", \"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\"]\n};\nvar faCreativeCommonsSa = {\n prefix: 'fab',\n iconName: 'creative-commons-sa',\n icon: [496, 512, [], \"f4ef\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\"]\n};\nvar faSafari = {\n prefix: 'fab',\n iconName: 'safari',\n icon: [512, 512, [], \"f267\", \"M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z\"]\n};\nvar faGoogle = {\n prefix: 'fab',\n iconName: 'google',\n icon: [488, 512, [], \"f1a0\", \"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"]\n};\nvar faSquareFontAwesomeStroke = {\n prefix: 'fab',\n iconName: 'square-font-awesome-stroke',\n icon: [448, 512, [\"font-awesome-alt\"], \"f35c\", \"M201.6,152c-25.4,0-37.4,10.4-57.6,14.4V160c0-8.8-7.2-16-16-16s-16,7.2-16,16v192c0,0.8,0.1,1.6,0.2,2.4 c0.1,0.4,0.1,0.8,0.2,1.2c1.6,7.1,8,12.4,15.6,12.4s14-5.3,15.6-12.4c0.1-0.4,0.2-0.8,0.2-1.2c0.1-0.8,0.2-1.6,0.2-2.4V198.4 c4-0.8,7.7-1.8,11.2-3c14.3-4.7,26-11.4,46.4-11.4c31.4,0,43.2,16,74.6,16c8.9,0,15.9-1.1,24.2-3.5c1.2-0.3,2.4-0.7,3.6-1.1v96 c-10,3.2-17.6,4.6-27.8,4.6c-31.4,0-43.4-16-74.6-16c-10.2,0-18.2,1.8-25.6,4v32c7.4-2.4,15.4-4,25.6-4c31.4,0,43.2,16,74.6,16 c18.6,0,28.2-4.8,59.8-16V152c-31.6,11.2-41.2,16-59.8,16C244.8,168,232.8,152,201.6,152z M384,32H64C28.7,32,0,60.7,0,96v320 c0,35.3,28.7,64,64,64h320c35.3,0,64-28.7,64-64V96C448,60.7,419.3,32,384,32z M416,416c0,17.6-14.4,32-32,32H64 c-17.6,0-32-14.4-32-32V96c0-17.6,14.4-32,32-32h320c17.6,0,32,14.4,32,32V416z\"]\n};\nvar faFontAwesomeAlt = faSquareFontAwesomeStroke;\nvar faAtlassian = {\n prefix: 'fab',\n iconName: 'atlassian',\n icon: [512, 512, [], \"f77b\", \"M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z\"]\n};\nvar faLinkedinIn = {\n prefix: 'fab',\n iconName: 'linkedin-in',\n icon: [448, 512, [], \"f0e1\", \"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"]\n};\nvar faDigitalOcean = {\n prefix: 'fab',\n iconName: 'digital-ocean',\n icon: [512, 512, [], \"f391\", \"M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z\"]\n};\nvar faNimblr = {\n prefix: 'fab',\n iconName: 'nimblr',\n icon: [384, 512, [], \"f5a8\", \"M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z\"]\n};\nvar faChromecast = {\n prefix: 'fab',\n iconName: 'chromecast',\n icon: [512, 512, [], \"f838\", \"M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z\"]\n};\nvar faEvernote = {\n prefix: 'fab',\n iconName: 'evernote',\n icon: [384, 512, [], \"f839\", \"M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z\"]\n};\nvar faHackerNews = {\n prefix: 'fab',\n iconName: 'hacker-news',\n icon: [448, 512, [], \"f1d4\", \"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faCreativeCommonsSampling = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling',\n icon: [496, 512, [], \"f4f0\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\"]\n};\nvar faAdversal = {\n prefix: 'fab',\n iconName: 'adversal',\n icon: [512, 512, [], \"f36a\", \"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\"]\n};\nvar faCreativeCommons = {\n prefix: 'fab',\n iconName: 'creative-commons',\n icon: [496, 512, [], \"f25e\", \"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\"]\n};\nvar faWatchmanMonitoring = {\n prefix: 'fab',\n iconName: 'watchman-monitoring',\n icon: [512, 512, [], \"e087\", \"M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z\"]\n};\nvar faFonticons = {\n prefix: 'fab',\n iconName: 'fonticons',\n icon: [448, 512, [], \"f280\", \"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"]\n};\nvar faWeixin = {\n prefix: 'fab',\n iconName: 'weixin',\n icon: [576, 512, [], \"f1d7\", \"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\"]\n};\nvar faShirtsinbulk = {\n prefix: 'fab',\n iconName: 'shirtsinbulk',\n icon: [448, 512, [], \"f214\", \"M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z\"]\n};\nvar faCodepen = {\n prefix: 'fab',\n iconName: 'codepen',\n icon: [512, 512, [], \"f1cb\", \"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\"]\n};\nvar faGitAlt = {\n prefix: 'fab',\n iconName: 'git-alt',\n icon: [448, 512, [], \"f841\", \"M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z\"]\n};\nvar faLyft = {\n prefix: 'fab',\n iconName: 'lyft',\n icon: [512, 512, [], \"f3c3\", \"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\"]\n};\nvar faRev = {\n prefix: 'fab',\n iconName: 'rev',\n icon: [448, 512, [], \"f5b2\", \"M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z\"]\n};\nvar faWindows = {\n prefix: 'fab',\n iconName: 'windows',\n icon: [448, 512, [], \"f17a\", \"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\"]\n};\nvar faWizardsOfTheCoast = {\n prefix: 'fab',\n iconName: 'wizards-of-the-coast',\n icon: [640, 512, [], \"f730\", \"M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z\"]\n};\nvar faSquareViadeo = {\n prefix: 'fab',\n iconName: 'square-viadeo',\n icon: [448, 512, [\"viadeo-square\"], \"f2aa\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z\"]\n};\nvar faViadeoSquare = faSquareViadeo;\nvar faMeetup = {\n prefix: 'fab',\n iconName: 'meetup',\n icon: [512, 512, [], \"f2e0\", \"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\"]\n};\nvar faCentos = {\n prefix: 'fab',\n iconName: 'centos',\n icon: [448, 512, [], \"f789\", \"M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z\"]\n};\nvar faAdn = {\n prefix: 'fab',\n iconName: 'adn',\n icon: [496, 512, [], \"f170\", \"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\"]\n};\nvar faCloudsmith = {\n prefix: 'fab',\n iconName: 'cloudsmith',\n icon: [332, 512, [], \"f384\", \"M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z\"]\n};\nvar faPiedPiperAlt = {\n prefix: 'fab',\n iconName: 'pied-piper-alt',\n icon: [576, 512, [], \"f1a8\", \"M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z\"]\n};\nvar faSquareDribbble = {\n prefix: 'fab',\n iconName: 'square-dribbble',\n icon: [448, 512, [\"dribbble-square\"], \"f397\", \"M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z\"]\n};\nvar faDribbbleSquare = faSquareDribbble;\nvar faCodiepie = {\n prefix: 'fab',\n iconName: 'codiepie',\n icon: [472, 512, [], \"f284\", \"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\"]\n};\nvar faNode = {\n prefix: 'fab',\n iconName: 'node',\n icon: [640, 512, [], \"f419\", \"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\"]\n};\nvar faMix = {\n prefix: 'fab',\n iconName: 'mix',\n icon: [448, 512, [], \"f3cb\", \"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\"]\n};\nvar faSteam = {\n prefix: 'fab',\n iconName: 'steam',\n icon: [496, 512, [], \"f1b6\", \"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\"]\n};\nvar faCcApplePay = {\n prefix: 'fab',\n iconName: 'cc-apple-pay',\n icon: [576, 512, [], \"f416\", \"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\"]\n};\nvar faScribd = {\n prefix: 'fab',\n iconName: 'scribd',\n icon: [384, 512, [], \"f28a\", \"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\"]\n};\nvar faOpenid = {\n prefix: 'fab',\n iconName: 'openid',\n icon: [448, 512, [], \"f19b\", \"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\"]\n};\nvar faInstalod = {\n prefix: 'fab',\n iconName: 'instalod',\n icon: [512, 512, [], \"e081\", \"M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z\"]\n};\nvar faExpeditedssl = {\n prefix: 'fab',\n iconName: 'expeditedssl',\n icon: [496, 512, [], \"f23e\", \"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\"]\n};\nvar faSellcast = {\n prefix: 'fab',\n iconName: 'sellcast',\n icon: [448, 512, [], \"f2da\", \"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\"]\n};\nvar faSquareTwitter = {\n prefix: 'fab',\n iconName: 'square-twitter',\n icon: [448, 512, [\"twitter-square\"], \"f081\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z\"]\n};\nvar faTwitterSquare = faSquareTwitter;\nvar faRProject = {\n prefix: 'fab',\n iconName: 'r-project',\n icon: [581, 512, [], \"f4f7\", \"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\"]\n};\nvar faDelicious = {\n prefix: 'fab',\n iconName: 'delicious',\n icon: [448, 512, [], \"f1a5\", \"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z\"]\n};\nvar faFreebsd = {\n prefix: 'fab',\n iconName: 'freebsd',\n icon: [448, 512, [], \"f3a4\", \"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\"]\n};\nvar faVuejs = {\n prefix: 'fab',\n iconName: 'vuejs',\n icon: [448, 512, [], \"f41f\", \"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\"]\n};\nvar faAccusoft = {\n prefix: 'fab',\n iconName: 'accusoft',\n icon: [640, 512, [], \"f369\", \"M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z\"]\n};\nvar faIoxhost = {\n prefix: 'fab',\n iconName: 'ioxhost',\n icon: [640, 512, [], \"f208\", \"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\"]\n};\nvar faFonticonsFi = {\n prefix: 'fab',\n iconName: 'fonticons-fi',\n icon: [384, 512, [], \"f3a2\", \"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\"]\n};\nvar faAppStore = {\n prefix: 'fab',\n iconName: 'app-store',\n icon: [512, 512, [], \"f36f\", \"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\"]\n};\nvar faCcMastercard = {\n prefix: 'fab',\n iconName: 'cc-mastercard',\n icon: [576, 512, [], \"f1f1\", \"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\"]\n};\nvar faItunesNote = {\n prefix: 'fab',\n iconName: 'itunes-note',\n icon: [384, 512, [], \"f3b5\", \"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\"]\n};\nvar faGolang = {\n prefix: 'fab',\n iconName: 'golang',\n icon: [640, 512, [], \"e40f\", \"M400.1 194.8C389.2 197.6 380.2 199.1 371 202.4C363.7 204.3 356.3 206.3 347.8 208.5L347.2 208.6C343 209.8 342.6 209.9 338.7 205.4C334 200.1 330.6 196.7 324.1 193.5C304.4 183.9 285.4 186.7 267.7 198.2C246.5 211.9 235.6 232.2 235.9 257.4C236.2 282.4 253.3 302.9 277.1 306.3C299.1 309.1 316.9 301.7 330.9 285.8C333 283.2 334.9 280.5 337 277.5V277.5L337 277.5C337.8 276.5 338.5 275.4 339.3 274.2H279.2C272.7 274.2 271.1 270.2 273.3 264.9C277.3 255.2 284.8 239 289.2 230.9C290.1 229.1 292.3 225.1 296.1 225.1H397.2C401.7 211.7 409 198.2 418.8 185.4C441.5 155.5 468.1 139.9 506 133.4C537.8 127.8 567.7 130.9 594.9 149.3C619.5 166.1 634.7 188.9 638.8 218.8C644.1 260.9 631.9 295.1 602.1 324.4C582.4 345.3 557.2 358.4 528.2 364.3C522.6 365.3 517.1 365.8 511.7 366.3C508.8 366.5 506 366.8 503.2 367.1C474.9 366.5 449 358.4 427.2 339.7C411.9 326.4 401.3 310.1 396.1 291.2C392.4 298.5 388.1 305.6 382.1 312.3C360.5 341.9 331.2 360.3 294.2 365.2C263.6 369.3 235.3 363.4 210.3 344.7C187.3 327.2 174.2 304.2 170.8 275.5C166.7 241.5 176.7 210.1 197.2 184.2C219.4 155.2 248.7 136.8 284.5 130.3C313.8 124.1 341.8 128.4 367.1 145.6C383.6 156.5 395.4 171.4 403.2 189.5C405.1 192.3 403.8 193.9 400.1 194.8zM48.3 200.4C47.05 200.4 46.74 199.8 47.36 198.8L53.91 190.4C54.53 189.5 56.09 188.9 57.34 188.9H168.6C169.8 188.9 170.1 189.8 169.5 190.7L164.2 198.8C163.6 199.8 162 200.7 161.1 200.7L48.3 200.4zM1.246 229.1C0 229.1-.3116 228.4 .3116 227.5L6.855 219.1C7.479 218.2 9.037 217.5 10.28 217.5H152.4C153.6 217.5 154.2 218.5 153.9 219.4L151.4 226.9C151.1 228.1 149.9 228.8 148.6 228.8L1.246 229.1zM75.72 255.9C75.1 256.8 75.41 257.7 76.65 257.7L144.6 258C145.5 258 146.8 257.1 146.8 255.9L147.4 248.4C147.4 247.1 146.8 246.2 145.5 246.2H83.2C81.95 246.2 80.71 247.1 80.08 248.1L75.72 255.9zM577.2 237.9C577 235.3 576.9 233.1 576.5 230.9C570.9 200.1 542.5 182.6 512.9 189.5C483.9 196 465.2 214.4 458.4 243.7C452.8 268 464.6 292.6 487 302.6C504.2 310.1 521.3 309.2 537.8 300.7C562.4 287.1 575.8 268 577.4 241.2C577.3 240 577.3 238.9 577.2 237.9z\"]\n};\nvar faKickstarter = {\n prefix: 'fab',\n iconName: 'kickstarter',\n icon: [448, 512, [], \"f3bb\", \"M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z\"]\n};\nvar faGrav = {\n prefix: 'fab',\n iconName: 'grav',\n icon: [512, 512, [], \"f2d6\", \"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\"]\n};\nvar faWeibo = {\n prefix: 'fab',\n iconName: 'weibo',\n icon: [512, 512, [], \"f18a\", \"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\"]\n};\nvar faUncharted = {\n prefix: 'fab',\n iconName: 'uncharted',\n icon: [448, 512, [], \"e084\", \"M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z\"]\n};\nvar faFirstdraft = {\n prefix: 'fab',\n iconName: 'firstdraft',\n icon: [384, 512, [], \"f3a1\", \"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\"]\n};\nvar faSquareYoutube = {\n prefix: 'fab',\n iconName: 'square-youtube',\n icon: [448, 512, [61798, \"youtube-square\"], \"f431\", \"M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z\"]\n};\nvar faYoutubeSquare = faSquareYoutube;\nvar faWikipediaW = {\n prefix: 'fab',\n iconName: 'wikipedia-w',\n icon: [640, 512, [], \"f266\", \"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\"]\n};\nvar faWpressr = {\n prefix: 'fab',\n iconName: 'wpressr',\n icon: [496, 512, [\"rendact\"], \"f3e4\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z\"]\n};\nvar faRendact = faWpressr;\nvar faAngellist = {\n prefix: 'fab',\n iconName: 'angellist',\n icon: [448, 512, [], \"f209\", \"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\"]\n};\nvar faGalacticRepublic = {\n prefix: 'fab',\n iconName: 'galactic-republic',\n icon: [496, 512, [], \"f50c\", \"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\"]\n};\nvar faNfcDirectional = {\n prefix: 'fab',\n iconName: 'nfc-directional',\n icon: [512, 512, [], \"e530\", \"M211.8 488.6C213.4 491.1 213.9 494.2 213.2 497.1C212.6 500 210.8 502.6 208.3 504.2C205.7 505.8 202.7 506.3 199.7 505.7C138.3 491.8 84.1 455.8 47.53 404.5C10.97 353.2-5.395 290.3 1.57 227.7C8.536 165 38.34 107.2 85.29 65.21C132.2 23.2 193-.0131 256 0C257.5 0 258.1 .2931 260.3 .8627C261.7 1.432 262.1 2.267 264 3.319C265.1 4.371 265.9 5.619 266.5 6.993C267 8.367 267.3 9.839 267.3 11.32V112.3L291.8 86.39C292.8 85.31 294 84.44 295.4 83.84C296.7 83.23 298.2 82.9 299.7 82.86C301.2 82.81 302.6 83.06 304 83.59C305.4 84.12 306.7 84.92 307.8 85.94C308.8 86.96 309.7 88.18 310.3 89.54C310.9 90.89 311.3 92.35 311.3 93.84C311.3 95.32 311.1 96.8 310.6 98.18C310 99.57 309.2 100.8 308.2 101.9L264.2 148.5C263.1 149.6 261.9 150.5 260.5 151.1C259 151.7 257.5 152 255.1 152C254.5 152 252.9 151.7 251.5 151.1C250.1 150.5 248.8 149.6 247.8 148.5L203.7 101.9C201.7 99.74 200.6 96.83 200.7 93.84C200.7 90.84 202 87.1 204.2 85.94C206.4 83.88 209.3 82.77 212.3 82.86C215.3 82.94 218.1 84.21 220.2 86.39L244.7 112.4V22.89C188.3 25.64 134.9 48.73 94.23 87.87C53.58 127 28.49 179.6 23.61 235.8C18.73 292 34.38 348.1 67.68 393.7C100.1 439.2 149.7 471.2 204.7 483.6C207.6 484.3 210.2 486.1 211.8 488.6L211.8 488.6zM171.4 126.1C170.6 127.4 169.5 128.5 168.3 129.3C147.8 143.2 131.1 161.9 119.5 183.8C107.9 205.7 101.8 230.1 101.8 254.9C101.8 279.7 107.9 304.1 119.5 325.1C131.1 347.9 147.8 366.6 168.3 380.5C170.8 382.2 172.5 384.8 173 387.8C173.6 390.7 172.1 393.8 171.3 396.2C169.6 398.7 166.1 400.4 164 400.1C161.1 401.5 158 400.9 155.6 399.2C132 383.2 112.8 361.7 99.46 336.5C86.15 311.4 79.19 283.4 79.19 254.9C79.19 226.5 86.15 198.4 99.46 173.3C112.8 148.1 132 126.6 155.6 110.6C156.8 109.8 158.2 109.2 159.6 108.8C161.1 108.5 162.6 108.5 164.1 108.8C165.5 109 166.9 109.6 168.2 110.4C169.5 111.2 170.5 112.3 171.4 113.5C172.2 114.7 172.8 116.1 173.1 117.6C173.4 119.1 173.4 120.6 173.1 122C172.8 123.5 172.3 124.9 171.4 126.1H171.4zM340.9 383.5C341.7 382.3 342.8 381.2 343.1 380.4V380.3C364.4 366.3 381.1 347.6 392.7 325.7C404.2 303.9 410.2 279.5 410.2 254.8C410.2 230.1 404.2 205.7 392.7 183.8C381.1 161.1 364.4 143.3 343.1 129.3C342.8 128.5 341.7 127.4 340.9 126.2C340.1 124.9 339.5 123.5 339.3 122.1C338.1 120.6 339 119.1 339.3 117.7C339.6 116.2 340.2 114.8 341 113.6C341.9 112.4 342.1 111.3 344.2 110.5C345.4 109.7 346.8 109.2 348.3 108.9C349.8 108.6 351.2 108.6 352.7 108.9C354.2 109.2 355.5 109.8 356.8 110.7C380.2 126.7 399.5 148.2 412.7 173.3C426 198.4 432.1 226.4 432.1 254.8C432.1 283.3 426 311.3 412.7 336.4C399.5 361.5 380.2 383 356.8 399C355.5 399.9 354.2 400.5 352.7 400.8C351.2 401.1 349.8 401.1 348.3 400.8C346.8 400.5 345.4 399.1 344.2 399.2C342.1 398.4 341.9 397.3 341 396.1C340.2 394.9 339.6 393.5 339.3 392C339 390.6 338.1 389.1 339.3 387.6C339.5 386.2 340.1 384.8 340.9 383.5V383.5zM312.3 6.307C368.5 19.04 418.7 50.28 455 95.01C485.4 132.6 504.6 178 510.3 226C515.9 274 507.9 322.7 487.1 366.3C466.2 409.9 433.5 446.8 392.6 472.6C351.7 498.3 304.4 512 256 512C254.5 512 253.1 511.7 251.7 511.1C250.3 510.6 249.1 509.7 248 508.7C246.1 507.6 246.1 506.4 245.6 505C245 503.6 244.7 502.2 244.7 500.7V401.5L220.2 427.5C218.1 429.7 215.3 430.1 212.3 431.1C209.3 431.2 206.4 430 204.2 427.1C202 425.9 200.7 423.1 200.7 420.1C200.6 417.1 201.7 414.2 203.7 412L247.8 365.4C249.1 363.2 252.9 362 255.1 362C259.1 362 262 363.2 264.2 365.4L308.2 412C310.3 414.2 311.4 417.1 311.3 420.1C311.2 423.1 309.9 425.9 307.8 427.1C305.6 430 302.7 431.2 299.7 431.1C296.7 430.1 293.8 429.7 291.8 427.5L267.3 401.6V489.1C323.7 486.3 377.1 463.3 417.8 424.1C458.5 384.1 483.6 332.4 488.5 276.2C493.3 219.1 477.7 163.9 444.4 118.3C411.1 72.75 362.4 40.79 307.4 28.36C305.9 28.03 304.6 27.42 303.3 26.57C302.1 25.71 301.1 24.63 300.3 23.37C299.5 22.12 298.1 20.72 298.7 19.26C298.5 17.8 298.5 16.3 298.8 14.85C299.2 13.41 299.8 12.04 300.6 10.82C301.5 9.61 302.6 8.577 303.8 7.784C305.1 6.99 306.5 6.451 307.9 6.198C309.4 5.945 310.9 5.982 312.3 6.307L312.3 6.307zM353.1 256.1C353.1 287.5 335.6 317.2 303.8 339.6C301.7 341.1 299 341.9 296.4 341.6C293.7 341.4 291.2 340.3 289.4 338.4L219.3 268.6C217.1 266.5 215.1 263.6 215.9 260.6C215.9 257.6 217.1 254.7 219.2 252.6C221.4 250.5 224.2 249.3 227.2 249.3C230.2 249.3 233.1 250.5 235.2 252.6L298.3 315.4C319.1 298.3 330.5 277.5 330.5 256.1C330.5 232.2 316.4 209.1 290.8 191C288.3 189.3 286.7 186.7 286.2 183.7C285.7 180.8 286.3 177.7 288.1 175.3C289.8 172.8 292.4 171.2 295.4 170.7C298.3 170.2 301.4 170.8 303.8 172.6C335.6 195 353.1 224.7 353.1 256.1V256.1zM216.7 341.5C213.7 342 210.7 341.3 208.2 339.6C176.5 317.2 158.1 287.5 158.1 256.1C158.1 224.7 176.5 195 208.2 172.6C210.4 171 213.1 170.3 215.7 170.5C218.4 170.8 220.8 171.9 222.7 173.8L292.8 243.6C294.9 245.7 296.1 248.6 296.1 251.6C296.1 254.6 294.1 257.4 292.8 259.6C290.7 261.7 287.8 262.9 284.9 262.9C281.9 262.9 278.1 261.7 276.9 259.6L213.8 196.7C192.9 214 181.6 234.7 181.6 256.1C181.6 279.1 195.7 303.1 221.3 321.1C223.7 322.9 225.4 325.5 225.9 328.5C226.4 331.4 225.7 334.4 224 336.9C222.3 339.3 219.6 341 216.7 341.5L216.7 341.5z\"]\n};\nvar faSkype = {\n prefix: 'fab',\n iconName: 'skype',\n icon: [448, 512, [], \"f17e\", \"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\"]\n};\nvar faJoget = {\n prefix: 'fab',\n iconName: 'joget',\n icon: [496, 512, [], \"f3b7\", \"M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z\"]\n};\nvar faFedora = {\n prefix: 'fab',\n iconName: 'fedora',\n icon: [448, 512, [], \"f798\", \"M.0413 255.8C.1219 132.2 100.3 32 224 32C347.7 32 448 132.3 448 256C448 379.7 347.8 479.9 224.1 480H50.93C22.84 480 .0832 457.3 .0416 429.2H0V255.8H.0413zM342.6 192.7C342.6 153 307 124.2 269.4 124.2C234.5 124.2 203.6 150.5 199.3 184.1C199.1 187.9 198.9 189.1 198.9 192.6C198.8 213.7 198.9 235.4 198.1 257C199 283.1 199.1 309.1 198.1 333.6C198.1 360.7 178.7 379.1 153.4 379.1C128.1 379.1 107.6 358.9 107.6 333.6C108.1 305.9 130.2 288.3 156.1 287.5H156.3L182.6 287.3V250L156.3 250.2C109.2 249.8 71.72 286.7 70.36 333.6C70.36 379.2 107.9 416.5 153.4 416.5C196.4 416.5 232.1 382.9 236 340.9L236.2 287.4L268.8 287.1C294.1 287.3 293.8 249.3 268.6 249.8L236.2 250.1C236.2 243.7 236.3 237.3 236.3 230.9C236.4 218.2 236.4 205.5 236.2 192.7C236.3 176.2 252 161.5 269.4 161.5C286.9 161.5 305.3 170.2 305.3 192.7C305.3 195.9 305.2 197.8 305 199C303.1 209.5 310.2 219.4 320.7 220.9C331.3 222.4 340.9 214.8 341.9 204.3C342.5 200.1 342.6 196.4 342.6 192.7H342.6z\"]\n};\nvar faStripeS = {\n prefix: 'fab',\n iconName: 'stripe-s',\n icon: [384, 512, [], \"f42a\", \"M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z\"]\n};\nvar faMeta = {\n prefix: 'fab',\n iconName: 'meta',\n icon: [640, 512, [], \"e49b\", \"M640 317.9C640 409.2 600.6 466.4 529.7 466.4C467.1 466.4 433.9 431.8 372.8 329.8L341.4 277.2C333.1 264.7 326.9 253 320.2 242.2C300.1 276 273.1 325.2 273.1 325.2C206.1 441.8 168.5 466.4 116.2 466.4C43.42 466.4 0 409.1 0 320.5C0 177.5 79.78 42.4 183.9 42.4C234.1 42.4 277.7 67.08 328.7 131.9C365.8 81.8 406.8 42.4 459.3 42.4C558.4 42.4 640 168.1 640 317.9H640zM287.4 192.2C244.5 130.1 216.5 111.7 183 111.7C121.1 111.7 69.22 217.8 69.22 321.7C69.22 370.2 87.7 397.4 118.8 397.4C149 397.4 167.8 378.4 222 293.6C222 293.6 246.7 254.5 287.4 192.2V192.2zM531.2 397.4C563.4 397.4 578.1 369.9 578.1 322.5C578.1 198.3 523.8 97.08 454.9 97.08C421.7 97.08 393.8 123 360 175.1C369.4 188.9 379.1 204.1 389.3 220.5L426.8 282.9C485.5 377 500.3 397.4 531.2 397.4L531.2 397.4z\"]\n};\nvar faLaravel = {\n prefix: 'fab',\n iconName: 'laravel',\n icon: [512, 512, [], \"f3bd\", \"M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z\"]\n};\nvar faHotjar = {\n prefix: 'fab',\n iconName: 'hotjar',\n icon: [448, 512, [], \"f3b1\", \"M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z\"]\n};\nvar faBluetoothB = {\n prefix: 'fab',\n iconName: 'bluetooth-b',\n icon: [320, 512, [], \"f294\", \"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\"]\n};\nvar faStickerMule = {\n prefix: 'fab',\n iconName: 'sticker-mule',\n icon: [576, 512, [], \"f3f7\", \"M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z\"]\n};\nvar faCreativeCommonsZero = {\n prefix: 'fab',\n iconName: 'creative-commons-zero',\n icon: [496, 512, [], \"f4f3\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z\"]\n};\nvar faHips = {\n prefix: 'fab',\n iconName: 'hips',\n icon: [640, 512, [], \"f452\", \"M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z\"]\n};\nvar faBehance = {\n prefix: 'fab',\n iconName: 'behance',\n icon: [576, 512, [], \"f1b4\", \"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\"]\n};\nvar faReddit = {\n prefix: 'fab',\n iconName: 'reddit',\n icon: [512, 512, [], \"f1a1\", \"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z\"]\n};\nvar faDiscord = {\n prefix: 'fab',\n iconName: 'discord',\n icon: [640, 512, [], \"f392\", \"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z\"]\n};\nvar faChrome = {\n prefix: 'fab',\n iconName: 'chrome',\n icon: [512, 512, [], \"f268\", \"M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z\"]\n};\nvar faAppStoreIos = {\n prefix: 'fab',\n iconName: 'app-store-ios',\n icon: [448, 512, [], \"f370\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\"]\n};\nvar faCcDiscover = {\n prefix: 'fab',\n iconName: 'cc-discover',\n icon: [576, 512, [], \"f1f2\", \"M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z\"]\n};\nvar faWpbeginner = {\n prefix: 'fab',\n iconName: 'wpbeginner',\n icon: [512, 512, [], \"f297\", \"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\"]\n};\nvar faConfluence = {\n prefix: 'fab',\n iconName: 'confluence',\n icon: [512, 512, [], \"f78d\", \"M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z\"]\n};\nvar faMdb = {\n prefix: 'fab',\n iconName: 'mdb',\n icon: [576, 512, [], \"f8ca\", \"M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z\"]\n};\nvar faDochub = {\n prefix: 'fab',\n iconName: 'dochub',\n icon: [416, 512, [], \"f394\", \"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\"]\n};\nvar faAccessibleIcon = {\n prefix: 'fab',\n iconName: 'accessible-icon',\n icon: [448, 512, [62107], \"f368\", \"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\"]\n};\nvar faEbay = {\n prefix: 'fab',\n iconName: 'ebay',\n icon: [640, 512, [], \"f4f4\", \"M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z\"]\n};\nvar faAmazon = {\n prefix: 'fab',\n iconName: 'amazon',\n icon: [448, 512, [], \"f270\", \"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\"]\n};\nvar faUnsplash = {\n prefix: 'fab',\n iconName: 'unsplash',\n icon: [448, 512, [], \"e07c\", \"M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z\"]\n};\nvar faYarn = {\n prefix: 'fab',\n iconName: 'yarn',\n icon: [496, 512, [], \"f7e3\", \"M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z\"]\n};\nvar faSquareSteam = {\n prefix: 'fab',\n iconName: 'square-steam',\n icon: [448, 512, [\"steam-square\"], \"f1b7\", \"M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z\"]\n};\nvar faSteamSquare = faSquareSteam;\nvar fa500px = {\n prefix: 'fab',\n iconName: '500px',\n icon: [448, 512, [], \"f26e\", \"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\"]\n};\nvar faSquareVimeo = {\n prefix: 'fab',\n iconName: 'square-vimeo',\n icon: [448, 512, [\"vimeo-square\"], \"f194\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z\"]\n};\nvar faVimeoSquare = faSquareVimeo;\nvar faAsymmetrik = {\n prefix: 'fab',\n iconName: 'asymmetrik',\n icon: [576, 512, [], \"f372\", \"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\"]\n};\nvar faFontAwesome = {\n prefix: 'fab',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384C385 407 366 416 329 416C266 416 242 384 179 384C159 384 143 388 128 392V328C143 324 159 320 179 320C242 320 266 352 329 352C349 352 364 349 384 343V135C364 141 349 144 329 144C266 144 242 112 179 112C128 112 104 133 64 141V448C64 466 50 480 32 480S0 466 0 448V64C0 46 14 32 32 32S64 46 64 64V77C104 69 128 48 179 48C242 48 266 80 329 80C366 80 385 71 448 48Z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faGratipay = {\n prefix: 'fab',\n iconName: 'gratipay',\n icon: [496, 512, [], \"f184\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\"]\n};\nvar faApple = {\n prefix: 'fab',\n iconName: 'apple',\n icon: [384, 512, [], \"f179\", \"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"]\n};\nvar faHive = {\n prefix: 'fab',\n iconName: 'hive',\n icon: [512, 512, [], \"e07f\", \"M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z\"]\n};\nvar faGitkraken = {\n prefix: 'fab',\n iconName: 'gitkraken',\n icon: [592, 512, [], \"f3a6\", \"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\"]\n};\nvar faKeybase = {\n prefix: 'fab',\n iconName: 'keybase',\n icon: [448, 512, [], \"f4f5\", \"M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z\"]\n};\nvar faApplePay = {\n prefix: 'fab',\n iconName: 'apple-pay',\n icon: [640, 512, [], \"f415\", \"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\"]\n};\nvar faPadlet = {\n prefix: 'fab',\n iconName: 'padlet',\n icon: [640, 512, [], \"e4a0\", \"M297.9 0L298 .001C305.6 .1078 312.4 4.72 315.5 11.78L447.5 320.3L447.8 320.2L448 320.6L445.2 330.6L402.3 488.6C398.6 504.8 382.6 514.9 366.5 511.2L298.1 495.6L229.6 511.2C213.5 514.9 197.5 504.8 193.8 488.6L150.9 330.6L148.2 320.6L148.3 320.2L280.4 11.78C283.4 4.797 290.3 .1837 297.9 .0006L297.9 0zM160.1 322.1L291.1 361.2L298 483.7L305.9 362.2L436.5 322.9L436.7 322.8L305.7 347.9L297.1 27.72L291.9 347.9L160.1 322.1zM426 222.6L520.4 181.6H594.2L437.2 429.2L468.8 320.2L426 222.6zM597.5 181.4L638.9 257.6C642.9 265.1 635 273.5 627.3 269.8L579.7 247.1L597.5 181.4zM127.3 318.5L158.7 430L1.61 154.5C-4.292 144.1 7.128 132.5 17.55 138.3L169.4 222.5L127.3 318.5z\"]\n};\nvar faAmazonPay = {\n prefix: 'fab',\n iconName: 'amazon-pay',\n icon: [640, 512, [], \"f42c\", \"M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\"]\n};\nvar faSquareGithub = {\n prefix: 'fab',\n iconName: 'square-github',\n icon: [448, 512, [\"github-square\"], \"f092\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z\"]\n};\nvar faGithubSquare = faSquareGithub;\nvar faStumbleupon = {\n prefix: 'fab',\n iconName: 'stumbleupon',\n icon: [512, 512, [], \"f1a4\", \"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\"]\n};\nvar faFedex = {\n prefix: 'fab',\n iconName: 'fedex',\n icon: [640, 512, [], \"f797\", \"M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z\"]\n};\nvar faPhoenixFramework = {\n prefix: 'fab',\n iconName: 'phoenix-framework',\n icon: [640, 512, [], \"f3dc\", \"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\"]\n};\nvar faShopify = {\n prefix: 'fab',\n iconName: 'shopify',\n icon: [448, 512, [], \"e057\", \"M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z\"]\n};\nvar faNeos = {\n prefix: 'fab',\n iconName: 'neos',\n icon: [512, 512, [], \"f612\", \"M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z\"]\n};\nvar faHackerrank = {\n prefix: 'fab',\n iconName: 'hackerrank',\n icon: [512, 512, [], \"f5f7\", \"M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\"]\n};\nvar faResearchgate = {\n prefix: 'fab',\n iconName: 'researchgate',\n icon: [448, 512, [], \"f4f8\", \"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\"]\n};\nvar faSwift = {\n prefix: 'fab',\n iconName: 'swift',\n icon: [448, 512, [], \"f8e1\", \"M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z\"]\n};\nvar faAngular = {\n prefix: 'fab',\n iconName: 'angular',\n icon: [448, 512, [], \"f420\", \"M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z\"]\n};\nvar faSpeakap = {\n prefix: 'fab',\n iconName: 'speakap',\n icon: [448, 512, [], \"f3f3\", \"M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z\"]\n};\nvar faAngrycreative = {\n prefix: 'fab',\n iconName: 'angrycreative',\n icon: [640, 512, [], \"f36e\", \"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\"]\n};\nvar faYCombinator = {\n prefix: 'fab',\n iconName: 'y-combinator',\n icon: [448, 512, [], \"f23b\", \"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\"]\n};\nvar faEmpire = {\n prefix: 'fab',\n iconName: 'empire',\n icon: [496, 512, [], \"f1d1\", \"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\"]\n};\nvar faEnvira = {\n prefix: 'fab',\n iconName: 'envira',\n icon: [448, 512, [], \"f299\", \"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\"]\n};\nvar faSquareGitlab = {\n prefix: 'fab',\n iconName: 'square-gitlab',\n icon: [448, 512, [\"gitlab-square\"], \"e5ae\", \"M48 32H400C426.5 32 448 53.5 448 80V432C448 458.5 426.5 480 400 480H48C21.5 480 0 458.5 0 432V80C0 53.5 21.5 32 48 32zM382.1 224.9L337.5 108.5C336.6 106.2 334.9 104.2 332.9 102.9C331.3 101.9 329.5 101.3 327.7 101.1C325.9 100.9 324 101.2 322.3 101.8C320.6 102.5 319 103.5 317.8 104.9C316.6 106.3 315.7 107.9 315.2 109.7L285 201.9H162.1L132.9 109.7C132.4 107.9 131.4 106.3 130.2 104.9C128.1 103.6 127.4 102.5 125.7 101.9C123.1 101.2 122.1 100.1 120.3 101.1C118.5 101.3 116.7 101.9 115.1 102.9C113.1 104.2 111.5 106.2 110.6 108.5L65.94 224.9L65.47 226.1C59.05 242.9 58.26 261.3 63.22 278.6C68.18 295.9 78.62 311.1 92.97 321.9L93.14 322L93.52 322.3L161.4 373.2L215.6 414.1C217.1 415.1 220.9 416.9 223.9 416.9C226.9 416.9 229.9 415.1 232.3 414.1L286.4 373.2L354.8 322L355 321.9C369.4 311 379.8 295.8 384.8 278.6C389.7 261.3 388.1 242.9 382.5 226.1L382.1 224.9z\"]\n};\nvar faGitlabSquare = faSquareGitlab;\nvar faStudiovinari = {\n prefix: 'fab',\n iconName: 'studiovinari',\n icon: [512, 512, [], \"f3f8\", \"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\"]\n};\nvar faPiedPiper = {\n prefix: 'fab',\n iconName: 'pied-piper',\n icon: [480, 512, [], \"f2ae\", \"M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z\"]\n};\nvar faWordpress = {\n prefix: 'fab',\n iconName: 'wordpress',\n icon: [512, 512, [], \"f19a\", \"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\"]\n};\nvar faProductHunt = {\n prefix: 'fab',\n iconName: 'product-hunt',\n icon: [512, 512, [], \"f288\", \"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\"]\n};\nvar faFirefox = {\n prefix: 'fab',\n iconName: 'firefox',\n icon: [512, 512, [], \"f269\", \"M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z\"]\n};\nvar faLinode = {\n prefix: 'fab',\n iconName: 'linode',\n icon: [448, 512, [], \"f2b8\", \"M366.036,186.867l-59.5,36.871-.838,36.871-29.329-19.273-39.384,24.3c2.238,55.211,2.483,59.271,2.51,59.5l-97.2,65.359L127.214,285.748l108.1-62.01L195.09,197.761l-75.417,38.547L98.723,93.015,227.771,43.574,136.432,0,10.737,39.385,38.39,174.3l41.9,32.681L48.445,222.062,69.394,323.457,98.723,351.11,77.774,363.679l16.76,78.769L160.733,512c-10.8-74.842-11.658-78.641-11.725-78.773l77.925-55.3c16.759-12.57,15.083-10.894,15.083-10.894l.838,24.3,33.519,28.491-.838-77.093,46.927-33.519,26.815-18.435-2.514,36.033,25.139,17.6,6.7-74.579,58.657-43.575Z\"]\n};\nvar faGoodreads = {\n prefix: 'fab',\n iconName: 'goodreads',\n icon: [448, 512, [], \"f3a8\", \"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\"]\n};\nvar faSquareOdnoklassniki = {\n prefix: 'fab',\n iconName: 'square-odnoklassniki',\n icon: [448, 512, [\"odnoklassniki-square\"], \"f264\", \"M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z\"]\n};\nvar faOdnoklassnikiSquare = faSquareOdnoklassniki;\nvar faJsfiddle = {\n prefix: 'fab',\n iconName: 'jsfiddle',\n icon: [576, 512, [], \"f1cc\", \"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\"]\n};\nvar faSith = {\n prefix: 'fab',\n iconName: 'sith',\n icon: [448, 512, [], \"f512\", \"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\"]\n};\nvar faThemeisle = {\n prefix: 'fab',\n iconName: 'themeisle',\n icon: [512, 512, [], \"f2b2\", \"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\"]\n};\nvar faPage4 = {\n prefix: 'fab',\n iconName: 'page4',\n icon: [496, 512, [], \"f3d7\", \"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\"]\n};\nvar faHashnode = {\n prefix: 'fab',\n iconName: 'hashnode',\n icon: [512, 512, [], \"e499\", \"M35.19 171.1C-11.72 217.1-11.72 294 35.19 340.9L171.1 476.8C217.1 523.7 294 523.7 340.9 476.8L476.8 340.9C523.7 294 523.7 217.1 476.8 171.1L340.9 35.19C294-11.72 217.1-11.72 171.1 35.19L35.19 171.1zM315.5 315.5C282.6 348.3 229.4 348.3 196.6 315.5C163.7 282.6 163.7 229.4 196.6 196.6C229.4 163.7 282.6 163.7 315.5 196.6C348.3 229.4 348.3 282.6 315.5 315.5z\"]\n};\nvar faReact = {\n prefix: 'fab',\n iconName: 'react',\n icon: [512, 512, [], \"f41b\", \"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z\"]\n};\nvar faCcPaypal = {\n prefix: 'fab',\n iconName: 'cc-paypal',\n icon: [576, 512, [], \"f1f4\", \"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\"]\n};\nvar faSquarespace = {\n prefix: 'fab',\n iconName: 'squarespace',\n icon: [512, 512, [], \"f5be\", \"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\"]\n};\nvar faCcStripe = {\n prefix: 'fab',\n iconName: 'cc-stripe',\n icon: [576, 512, [], \"f1f5\", \"M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z\"]\n};\nvar faCreativeCommonsShare = {\n prefix: 'fab',\n iconName: 'creative-commons-share',\n icon: [496, 512, [], \"f4f2\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\"]\n};\nvar faBitcoin = {\n prefix: 'fab',\n iconName: 'bitcoin',\n icon: [512, 512, [], \"f379\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\"]\n};\nvar faKeycdn = {\n prefix: 'fab',\n iconName: 'keycdn',\n icon: [512, 512, [], \"f3ba\", \"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\"]\n};\nvar faOpera = {\n prefix: 'fab',\n iconName: 'opera',\n icon: [496, 512, [], \"f26a\", \"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\"]\n};\nvar faItchIo = {\n prefix: 'fab',\n iconName: 'itch-io',\n icon: [512, 512, [], \"f83a\", \"M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z\"]\n};\nvar faUmbraco = {\n prefix: 'fab',\n iconName: 'umbraco',\n icon: [510, 512, [], \"f8e8\", \"M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z\"]\n};\nvar faGalacticSenate = {\n prefix: 'fab',\n iconName: 'galactic-senate',\n icon: [512, 512, [], \"f50d\", \"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\"]\n};\nvar faUbuntu = {\n prefix: 'fab',\n iconName: 'ubuntu',\n icon: [496, 512, [], \"f7df\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z\"]\n};\nvar faDraft2digital = {\n prefix: 'fab',\n iconName: 'draft2digital',\n icon: [480, 512, [], \"f396\", \"M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z\"]\n};\nvar faStripe = {\n prefix: 'fab',\n iconName: 'stripe',\n icon: [640, 512, [], \"f429\", \"M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z\"]\n};\nvar faHouzz = {\n prefix: 'fab',\n iconName: 'houzz',\n icon: [448, 512, [], \"f27c\", \"M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z\"]\n};\nvar faGg = {\n prefix: 'fab',\n iconName: 'gg',\n icon: [512, 512, [], \"f260\", \"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\"]\n};\nvar faDhl = {\n prefix: 'fab',\n iconName: 'dhl',\n icon: [640, 512, [], \"f790\", \"M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z\"]\n};\nvar faSquarePinterest = {\n prefix: 'fab',\n iconName: 'square-pinterest',\n icon: [448, 512, [\"pinterest-square\"], \"f0d3\", \"M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\"]\n};\nvar faPinterestSquare = faSquarePinterest;\nvar faXing = {\n prefix: 'fab',\n iconName: 'xing',\n icon: [384, 512, [], \"f168\", \"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\"]\n};\nvar faBlackberry = {\n prefix: 'fab',\n iconName: 'blackberry',\n icon: [512, 512, [], \"f37b\", \"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\"]\n};\nvar faCreativeCommonsPd = {\n prefix: 'fab',\n iconName: 'creative-commons-pd',\n icon: [496, 512, [], \"f4ec\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\"]\n};\nvar faPlaystation = {\n prefix: 'fab',\n iconName: 'playstation',\n icon: [576, 512, [], \"f3df\", \"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\"]\n};\nvar faQuinscape = {\n prefix: 'fab',\n iconName: 'quinscape',\n icon: [512, 512, [], \"f459\", \"M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z\"]\n};\nvar faLess = {\n prefix: 'fab',\n iconName: 'less',\n icon: [640, 512, [], \"f41d\", \"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\"]\n};\nvar faBloggerB = {\n prefix: 'fab',\n iconName: 'blogger-b',\n icon: [448, 512, [], \"f37d\", \"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\"]\n};\nvar faOpencart = {\n prefix: 'fab',\n iconName: 'opencart',\n icon: [640, 512, [], \"f23d\", \"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\"]\n};\nvar faVine = {\n prefix: 'fab',\n iconName: 'vine',\n icon: [384, 512, [], \"f1ca\", \"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\"]\n};\nvar faPaypal = {\n prefix: 'fab',\n iconName: 'paypal',\n icon: [384, 512, [], \"f1ed\", \"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\"]\n};\nvar faGitlab = {\n prefix: 'fab',\n iconName: 'gitlab',\n icon: [512, 512, [], \"f296\", \"M503.5 204.6L502.8 202.8L433.1 21.02C431.7 17.45 429.2 14.43 425.9 12.38C423.5 10.83 420.8 9.865 417.9 9.57C415 9.275 412.2 9.653 409.5 10.68C406.8 11.7 404.4 13.34 402.4 15.46C400.5 17.58 399.1 20.13 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.13 111.5 17.59 109.6 15.47C107.6 13.35 105.2 11.72 102.5 10.7C99.86 9.675 96.98 9.295 94.12 9.587C91.26 9.878 88.51 10.83 86.08 12.38C82.84 14.43 80.33 17.45 78.92 21.02L9.267 202.8L8.543 204.6C-1.484 230.8-2.72 259.6 5.023 286.6C12.77 313.5 29.07 337.3 51.47 354.2L51.74 354.4L52.33 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z\"]\n};\nvar faTypo3 = {\n prefix: 'fab',\n iconName: 'typo3',\n icon: [448, 512, [], \"f42b\", \"M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z\"]\n};\nvar faRedditAlien = {\n prefix: 'fab',\n iconName: 'reddit-alien',\n icon: [512, 512, [], \"f281\", \"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"]\n};\nvar faYahoo = {\n prefix: 'fab',\n iconName: 'yahoo',\n icon: [512, 512, [], \"f19e\", \"M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z\"]\n};\nvar faDailymotion = {\n prefix: 'fab',\n iconName: 'dailymotion',\n icon: [448, 512, [], \"e052\", \"M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z\"]\n};\nvar faAffiliatetheme = {\n prefix: 'fab',\n iconName: 'affiliatetheme',\n icon: [512, 512, [], \"f36b\", \"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\"]\n};\nvar faPiedPiperPp = {\n prefix: 'fab',\n iconName: 'pied-piper-pp',\n icon: [448, 512, [], \"f1a7\", \"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\"]\n};\nvar faBootstrap = {\n prefix: 'fab',\n iconName: 'bootstrap',\n icon: [576, 512, [], \"f836\", \"M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z\"]\n};\nvar faOdnoklassniki = {\n prefix: 'fab',\n iconName: 'odnoklassniki',\n icon: [320, 512, [], \"f263\", \"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\"]\n};\nvar faNfcSymbol = {\n prefix: 'fab',\n iconName: 'nfc-symbol',\n icon: [576, 512, [], \"e531\", \"M392.9 32.43C400.6 31.1 408.6 32.89 414.1 37.41C498.2 96.14 544 173.7 544 255.1C544 338.2 498.2 415.9 414.1 474.6C409.3 478.6 402.4 480.5 395.5 479.9C388.5 479.3 382 476.3 377.1 471.4L193.7 288.7C188.1 283.2 185 275.7 184.1 267.8C184.1 260 188.1 252.5 193.6 246.9C199.2 241.4 206.7 238.2 214.5 238.2C222.4 238.2 229.9 241.3 235.4 246.8L400.5 411.2C455.1 366.5 484.8 312 484.8 255.1C484.8 193.5 447.9 132.9 380.9 85.76C374.5 81.24 370.1 74.35 368.8 66.62C367.4 58.89 369.2 50.94 373.8 44.53C378.3 38.12 385.2 33.77 392.9 32.43V32.43zM186.9 479.6C179.2 480.9 171.3 479.1 164.8 474.6C81.67 415.9 35.84 338.2 35.84 255.1C35.84 173.7 81.67 96.14 164.8 37.41C170.5 33.4 177.4 31.53 184.4 32.12C191.3 32.71 197.8 35.72 202.7 40.63L386.1 223.3C391.7 228.8 394.8 236.3 394.8 244.2C394.9 251.1 391.8 259.5 386.2 265.1C380.7 270.6 373.2 273.8 365.3 273.8C357.5 273.8 349.1 270.7 344.4 265.2L179.3 100.7C124.7 145.9 95.03 199.9 95.03 255.1C95.03 318.5 131.9 379.1 198.1 426.2C205.4 430.8 209.7 437.6 211.1 445.4C212.4 453.1 210.6 461.1 206.1 467.5C201.6 473.9 194.7 478.2 186.9 479.6V479.6z\"]\n};\nvar faEthereum = {\n prefix: 'fab',\n iconName: 'ethereum',\n icon: [320, 512, [], \"f42e\", \"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\"]\n};\nvar faSpeakerDeck = {\n prefix: 'fab',\n iconName: 'speaker-deck',\n icon: [512, 512, [], \"f83c\", \"M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z\"]\n};\nvar faCreativeCommonsNcEu = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-eu',\n icon: [496, 512, [], \"f4e9\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\"]\n};\nvar faPatreon = {\n prefix: 'fab',\n iconName: 'patreon',\n icon: [512, 512, [], \"f3d9\", \"M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z\"]\n};\nvar faAvianex = {\n prefix: 'fab',\n iconName: 'avianex',\n icon: [512, 512, [], \"f374\", \"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\"]\n};\nvar faEllo = {\n prefix: 'fab',\n iconName: 'ello',\n icon: [496, 512, [], \"f5f1\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\"]\n};\nvar faGofore = {\n prefix: 'fab',\n iconName: 'gofore',\n icon: [400, 512, [], \"f3a7\", \"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\"]\n};\nvar faBimobject = {\n prefix: 'fab',\n iconName: 'bimobject',\n icon: [448, 512, [], \"f378\", \"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\"]\n};\nvar faFacebookF = {\n prefix: 'fab',\n iconName: 'facebook-f',\n icon: [320, 512, [], \"f39e\", \"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"]\n};\nvar faSquareGooglePlus = {\n prefix: 'fab',\n iconName: 'square-google-plus',\n icon: [448, 512, [\"google-plus-square\"], \"f0d4\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z\"]\n};\nvar faGooglePlusSquare = faSquareGooglePlus;\nvar faMandalorian = {\n prefix: 'fab',\n iconName: 'mandalorian',\n icon: [448, 512, [], \"f50f\", \"M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z\"]\n};\nvar faFirstOrderAlt = {\n prefix: 'fab',\n iconName: 'first-order-alt',\n icon: [496, 512, [], \"f50a\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\"]\n};\nvar faOsi = {\n prefix: 'fab',\n iconName: 'osi',\n icon: [512, 512, [], \"f41a\", \"M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z\"]\n};\nvar faGoogleWallet = {\n prefix: 'fab',\n iconName: 'google-wallet',\n icon: [448, 512, [], \"f1ee\", \"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\"]\n};\nvar faDAndDBeyond = {\n prefix: 'fab',\n iconName: 'd-and-d-beyond',\n icon: [640, 512, [], \"f6ca\", \"M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z\"]\n};\nvar faPeriscope = {\n prefix: 'fab',\n iconName: 'periscope',\n icon: [448, 512, [], \"f3da\", \"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\"]\n};\nvar faFulcrum = {\n prefix: 'fab',\n iconName: 'fulcrum',\n icon: [320, 512, [], \"f50b\", \"M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z\"]\n};\nvar faCloudscale = {\n prefix: 'fab',\n iconName: 'cloudscale',\n icon: [448, 512, [], \"f383\", \"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\"]\n};\nvar faForumbee = {\n prefix: 'fab',\n iconName: 'forumbee',\n icon: [448, 512, [], \"f211\", \"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\"]\n};\nvar faMizuni = {\n prefix: 'fab',\n iconName: 'mizuni',\n icon: [496, 512, [], \"f3cc\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\"]\n};\nvar faSchlix = {\n prefix: 'fab',\n iconName: 'schlix',\n icon: [448, 512, [], \"f3ea\", \"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\"]\n};\nvar faSquareXing = {\n prefix: 'fab',\n iconName: 'square-xing',\n icon: [448, 512, [\"xing-square\"], \"f169\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z\"]\n};\nvar faXingSquare = faSquareXing;\nvar faBandcamp = {\n prefix: 'fab',\n iconName: 'bandcamp',\n icon: [512, 512, [], \"f2d5\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z\"]\n};\nvar faWpforms = {\n prefix: 'fab',\n iconName: 'wpforms',\n icon: [448, 512, [], \"f298\", \"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\"]\n};\nvar faCloudversify = {\n prefix: 'fab',\n iconName: 'cloudversify',\n icon: [616, 512, [], \"f385\", \"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\"]\n};\nvar faUsps = {\n prefix: 'fab',\n iconName: 'usps',\n icon: [576, 512, [], \"f7e1\", \"M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z\"]\n};\nvar faMegaport = {\n prefix: 'fab',\n iconName: 'megaport',\n icon: [496, 512, [], \"f5a3\", \"M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z\"]\n};\nvar faMagento = {\n prefix: 'fab',\n iconName: 'magento',\n icon: [448, 512, [], \"f3c4\", \"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\"]\n};\nvar faSpotify = {\n prefix: 'fab',\n iconName: 'spotify',\n icon: [496, 512, [], \"f1bc\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"]\n};\nvar faOptinMonster = {\n prefix: 'fab',\n iconName: 'optin-monster',\n icon: [576, 512, [], \"f23c\", \"M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z\"]\n};\nvar faFly = {\n prefix: 'fab',\n iconName: 'fly',\n icon: [384, 512, [], \"f417\", \"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\"]\n};\nvar faAviato = {\n prefix: 'fab',\n iconName: 'aviato',\n icon: [640, 512, [], \"f421\", \"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\"]\n};\nvar faItunes = {\n prefix: 'fab',\n iconName: 'itunes',\n icon: [448, 512, [], \"f3b4\", \"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\"]\n};\nvar faCuttlefish = {\n prefix: 'fab',\n iconName: 'cuttlefish',\n icon: [440, 512, [], \"f38c\", \"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\"]\n};\nvar faBlogger = {\n prefix: 'fab',\n iconName: 'blogger',\n icon: [448, 512, [], \"f37c\", \"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\"]\n};\nvar faFlickr = {\n prefix: 'fab',\n iconName: 'flickr',\n icon: [448, 512, [], \"f16e\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\"]\n};\nvar faViber = {\n prefix: 'fab',\n iconName: 'viber',\n icon: [512, 512, [], \"f409\", \"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\"]\n};\nvar faSoundcloud = {\n prefix: 'fab',\n iconName: 'soundcloud',\n icon: [640, 512, [], \"f1be\", \"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\"]\n};\nvar faDigg = {\n prefix: 'fab',\n iconName: 'digg',\n icon: [512, 512, [], \"f1a6\", \"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\"]\n};\nvar faTencentWeibo = {\n prefix: 'fab',\n iconName: 'tencent-weibo',\n icon: [384, 512, [], \"f1d5\", \"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\"]\n};\nvar faSymfony = {\n prefix: 'fab',\n iconName: 'symfony',\n icon: [512, 512, [], \"f83d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z\"]\n};\nvar faMaxcdn = {\n prefix: 'fab',\n iconName: 'maxcdn',\n icon: [512, 512, [], \"f136\", \"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\"]\n};\nvar faEtsy = {\n prefix: 'fab',\n iconName: 'etsy',\n icon: [384, 512, [], \"f2d7\", \"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\"]\n};\nvar faFacebookMessenger = {\n prefix: 'fab',\n iconName: 'facebook-messenger',\n icon: [512, 512, [], \"f39f\", \"M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z\"]\n};\nvar faAudible = {\n prefix: 'fab',\n iconName: 'audible',\n icon: [640, 512, [], \"f373\", \"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\"]\n};\nvar faThinkPeaks = {\n prefix: 'fab',\n iconName: 'think-peaks',\n icon: [576, 512, [], \"f731\", \"M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z\"]\n};\nvar faBilibili = {\n prefix: 'fab',\n iconName: 'bilibili',\n icon: [512, 512, [], \"e3d9\", \"M488.6 104.1C505.3 122.2 513 143.8 511.9 169.8V372.2C511.5 398.6 502.7 420.3 485.4 437.3C468.2 454.3 446.3 463.2 419.9 464H92.02C65.57 463.2 43.81 454.2 26.74 436.8C9.682 419.4 .7667 396.5 0 368.2V169.8C.7667 143.8 9.682 122.2 26.74 104.1C43.81 87.75 65.57 78.77 92.02 78H121.4L96.05 52.19C90.3 46.46 87.42 39.19 87.42 30.4C87.42 21.6 90.3 14.34 96.05 8.603C101.8 2.868 109.1 0 117.9 0C126.7 0 134 2.868 139.8 8.603L213.1 78H301.1L375.6 8.603C381.7 2.868 389.2 0 398 0C406.8 0 414.1 2.868 419.9 8.603C425.6 14.34 428.5 21.6 428.5 30.4C428.5 39.19 425.6 46.46 419.9 52.19L394.6 78L423.9 78C450.3 78.77 471.9 87.75 488.6 104.1H488.6zM449.8 173.8C449.4 164.2 446.1 156.4 439.1 150.3C433.9 144.2 425.1 140.9 416.4 140.5H96.05C86.46 140.9 78.6 144.2 72.47 150.3C66.33 156.4 63.07 164.2 62.69 173.8V368.2C62.69 377.4 65.95 385.2 72.47 391.7C78.99 398.2 86.85 401.5 96.05 401.5H416.4C425.6 401.5 433.4 398.2 439.7 391.7C446 385.2 449.4 377.4 449.8 368.2L449.8 173.8zM185.5 216.5C191.8 222.8 195.2 230.6 195.6 239.7V273C195.2 282.2 191.9 289.9 185.8 296.2C179.6 302.5 171.8 305.7 162.2 305.7C152.6 305.7 144.7 302.5 138.6 296.2C132.5 289.9 129.2 282.2 128.8 273V239.7C129.2 230.6 132.6 222.8 138.9 216.5C145.2 210.2 152.1 206.9 162.2 206.5C171.4 206.9 179.2 210.2 185.5 216.5H185.5zM377 216.5C383.3 222.8 386.7 230.6 387.1 239.7V273C386.7 282.2 383.4 289.9 377.3 296.2C371.2 302.5 363.3 305.7 353.7 305.7C344.1 305.7 336.3 302.5 330.1 296.2C323.1 289.9 320.7 282.2 320.4 273V239.7C320.7 230.6 324.1 222.8 330.4 216.5C336.7 210.2 344.5 206.9 353.7 206.5C362.9 206.9 370.7 210.2 377 216.5H377z\"]\n};\nvar faErlang = {\n prefix: 'fab',\n iconName: 'erlang',\n icon: [640, 512, [], \"f39d\", \"M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z\"]\n};\nvar faCottonBureau = {\n prefix: 'fab',\n iconName: 'cotton-bureau',\n icon: [512, 512, [], \"f89e\", \"M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z\"]\n};\nvar faDashcube = {\n prefix: 'fab',\n iconName: 'dashcube',\n icon: [448, 512, [], \"f210\", \"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\"]\n};\nvar fa42Group = {\n prefix: 'fab',\n iconName: '42-group',\n icon: [640, 512, [\"innosoft\"], \"e080\", \"M320 96V416C341.011 416 361.818 411.861 381.23 403.821C400.641 395.78 418.28 383.995 433.138 369.138C447.995 354.28 459.78 336.641 467.821 317.23C475.861 297.818 480 277.011 480 256C480 234.989 475.861 214.182 467.821 194.771C459.78 175.359 447.995 157.72 433.138 142.863C418.28 128.005 400.641 116.22 381.23 108.179C361.818 100.139 341.011 96 320 96ZM0 256L160.002 416L320.003 256L160.002 96L0 256ZM480 256C480 277.011 484.138 297.818 492.179 317.23C500.219 336.643 512.005 354.28 526.862 369.138C541.72 383.995 559.357 395.781 578.77 403.821C598.182 411.862 618.989 416 640 416V96C597.565 96 556.869 112.858 526.862 142.863C496.857 172.869 480 213.565 480 256Z\"]\n};\nvar faInnosoft = fa42Group;\nvar faStackExchange = {\n prefix: 'fab',\n iconName: 'stack-exchange',\n icon: [448, 512, [], \"f18d\", \"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\"]\n};\nvar faElementor = {\n prefix: 'fab',\n iconName: 'elementor',\n icon: [512, 512, [], \"f430\", \"M.361 256C.361 397 114 511 255 511C397 511 511 397 511 256C511 116 397 2.05 255 2.05C114 2.05 .361 116 .361 256zM192 150V363H149V150H192zM234 150H362V193H234V150zM362 235V278H234V235H362zM234 320H362V363H234V320z\"]\n};\nvar faSquarePiedPiper = {\n prefix: 'fab',\n iconName: 'square-pied-piper',\n icon: [448, 512, [\"pied-piper-square\"], \"e01e\", \"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\"]\n};\nvar faPiedPiperSquare = faSquarePiedPiper;\nvar faCreativeCommonsNd = {\n prefix: 'fab',\n iconName: 'creative-commons-nd',\n icon: [496, 512, [], \"f4eb\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\"]\n};\nvar faPalfed = {\n prefix: 'fab',\n iconName: 'palfed',\n icon: [576, 512, [], \"f3d8\", \"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\"]\n};\nvar faSuperpowers = {\n prefix: 'fab',\n iconName: 'superpowers',\n icon: [448, 512, [], \"f2dd\", \"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\"]\n};\nvar faResolving = {\n prefix: 'fab',\n iconName: 'resolving',\n icon: [496, 512, [], \"f3e7\", \"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\"]\n};\nvar faXbox = {\n prefix: 'fab',\n iconName: 'xbox',\n icon: [512, 512, [], \"f412\", \"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\"]\n};\nvar faSearchengin = {\n prefix: 'fab',\n iconName: 'searchengin',\n icon: [460, 512, [], \"f3eb\", \"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\"]\n};\nvar faTiktok = {\n prefix: 'fab',\n iconName: 'tiktok',\n icon: [448, 512, [], \"e07b\", \"M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z\"]\n};\nvar faSquareFacebook = {\n prefix: 'fab',\n iconName: 'square-facebook',\n icon: [448, 512, [\"facebook-square\"], \"f082\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z\"]\n};\nvar faFacebookSquare = faSquareFacebook;\nvar faRenren = {\n prefix: 'fab',\n iconName: 'renren',\n icon: [512, 512, [], \"f18b\", \"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\"]\n};\nvar faLinux = {\n prefix: 'fab',\n iconName: 'linux',\n icon: [448, 512, [], \"f17c\", \"M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\"]\n};\nvar faGlide = {\n prefix: 'fab',\n iconName: 'glide',\n icon: [448, 512, [], \"f2a5\", \"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\"]\n};\nvar faLinkedin = {\n prefix: 'fab',\n iconName: 'linkedin',\n icon: [448, 512, [], \"f08c\", \"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"]\n};\nvar faHubspot = {\n prefix: 'fab',\n iconName: 'hubspot',\n icon: [512, 512, [], \"f3b2\", \"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\"]\n};\nvar faDeploydog = {\n prefix: 'fab',\n iconName: 'deploydog',\n icon: [512, 512, [], \"f38e\", \"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\"]\n};\nvar faTwitch = {\n prefix: 'fab',\n iconName: 'twitch',\n icon: [512, 512, [], \"f1e8\", \"M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z\"]\n};\nvar faRavelry = {\n prefix: 'fab',\n iconName: 'ravelry',\n icon: [512, 512, [], \"f2d9\", \"M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z\"]\n};\nvar faMixer = {\n prefix: 'fab',\n iconName: 'mixer',\n icon: [512, 512, [], \"e056\", \"M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z\"]\n};\nvar faSquareLastfm = {\n prefix: 'fab',\n iconName: 'square-lastfm',\n icon: [448, 512, [\"lastfm-square\"], \"f203\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z\"]\n};\nvar faLastfmSquare = faSquareLastfm;\nvar faVimeo = {\n prefix: 'fab',\n iconName: 'vimeo',\n icon: [448, 512, [], \"f40a\", \"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\"]\n};\nvar faMendeley = {\n prefix: 'fab',\n iconName: 'mendeley',\n icon: [640, 512, [], \"f7b3\", \"M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z\"]\n};\nvar faUniregistry = {\n prefix: 'fab',\n iconName: 'uniregistry',\n icon: [384, 512, [], \"f404\", \"M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z\"]\n};\nvar faFigma = {\n prefix: 'fab',\n iconName: 'figma',\n icon: [384, 512, [], \"f799\", \"M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z\"]\n};\nvar faCreativeCommonsRemix = {\n prefix: 'fab',\n iconName: 'creative-commons-remix',\n icon: [496, 512, [], \"f4ee\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\"]\n};\nvar faCcAmazonPay = {\n prefix: 'fab',\n iconName: 'cc-amazon-pay',\n icon: [576, 512, [], \"f42d\", \"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\"]\n};\nvar faDropbox = {\n prefix: 'fab',\n iconName: 'dropbox',\n icon: [528, 512, [], \"f16b\", \"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\"]\n};\nvar faInstagram = {\n prefix: 'fab',\n iconName: 'instagram',\n icon: [448, 512, [], \"f16d\", \"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"]\n};\nvar faCmplid = {\n prefix: 'fab',\n iconName: 'cmplid',\n icon: [640, 512, [], \"e360\", \"M226.119,388.165a3.816,3.816,0,0,0-2.294-3.5,3.946,3.946,0,0,0-1.629-.385L72.6,384.3a19.243,19.243,0,0,1-17.924-26.025L81.585,255.692a35.72,35.72,0,0,1,32.373-26H262.525a7.07,7.07,0,0,0,6.392-5.194l10.769-41.131a3.849,3.849,0,0,0-2.237-4.937,3.755,3.755,0,0,0-1.377-.261c-.063,0-.126,0-.189.005H127.38a106.8,106.8,0,0,0-96.99,77.1L3.483,358.824A57.469,57.469,0,0,0,57.314,436q1.43,0,2.86-.072H208.742a7.131,7.131,0,0,0,6.391-5.193L225.839,389.6A3.82,3.82,0,0,0,226.119,388.165ZM306.658,81.2a3.861,3.861,0,0,0,.251-1.367A3.813,3.813,0,0,0,303.079,76c-.064,0-.128,0-.192,0h-41A7.034,7.034,0,0,0,255.5,81.2l-21.347,80.915h51.131ZM180.364,368.249H231.5L263.452,245.69H212.321ZM511.853,79.723a3.809,3.809,0,0,0-3.8-3.661c-.058,0-.137,0-.23.007h-41a7.1,7.1,0,0,0-6.584,5.129L368.91,430.634a3.54,3.54,0,0,0-.262,1.335,3.873,3.873,0,0,0,3.864,3.863c.056,0,.112,0,.169,0h41a7.068,7.068,0,0,0,6.392-5.193L511.533,81.2A3.624,3.624,0,0,0,511.853,79.723ZM324.649,384.47h-41a7.2,7.2,0,0,0-6.392,5.194L266.52,430.8a3.662,3.662,0,0,0-.268,1.374A3.783,3.783,0,0,0,270.023,436c.06,0,.166,0,.3-.012h40.905a7.036,7.036,0,0,0,6.391-5.193l10.769-41.131a3.75,3.75,0,0,0-3.445-5.208c-.108,0-.217,0-.326.014Zm311.324-308.4h-41a7.066,7.066,0,0,0-6.392,5.129l-91.46,349.436a4.073,4.073,0,0,0-.229,1.347,3.872,3.872,0,0,0,3.863,3.851c.056,0,.112,0,.169,0h40.968a7.1,7.1,0,0,0,6.392-5.193L639.68,81.2a3.624,3.624,0,0,0,.32-1.475,3.841,3.841,0,0,0-3.821-3.564c-.068,0-.137,0-.206.006ZM371.562,225.236l10.8-41.1a4.369,4.369,0,0,0,.227-1.388,3.869,3.869,0,0,0-3.861-3.842c-.057,0-.113,0-.169,0h-41.1a7.292,7.292,0,0,0-6.391,5.226l-10.834,41.1a4.417,4.417,0,0,0-.26,1.493c0,.069,0,.138,0,.206a3.776,3.776,0,0,0,3.757,3.507c.076,0,.18,0,.3-.012h41.129A7.034,7.034,0,0,0,371.562,225.236Z\"]\n};\nvar faFacebook = {\n prefix: 'fab',\n iconName: 'facebook',\n icon: [512, 512, [62000], \"f09a\", \"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"]\n};\nvar faGripfire = {\n prefix: 'fab',\n iconName: 'gripfire',\n icon: [384, 512, [], \"f3ac\", \"M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z\"]\n};\nvar faJediOrder = {\n prefix: 'fab',\n iconName: 'jedi-order',\n icon: [448, 512, [], \"f50e\", \"M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z\"]\n};\nvar faUikit = {\n prefix: 'fab',\n iconName: 'uikit',\n icon: [448, 512, [], \"f403\", \"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\"]\n};\nvar faFortAwesomeAlt = {\n prefix: 'fab',\n iconName: 'fort-awesome-alt',\n icon: [512, 512, [], \"f3a3\", \"M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z\"]\n};\nvar faPhabricator = {\n prefix: 'fab',\n iconName: 'phabricator',\n icon: [496, 512, [], \"f3db\", \"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\"]\n};\nvar faUssunnah = {\n prefix: 'fab',\n iconName: 'ussunnah',\n icon: [512, 512, [], \"f407\", \"M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z\"]\n};\nvar faEarlybirds = {\n prefix: 'fab',\n iconName: 'earlybirds',\n icon: [480, 512, [], \"f39a\", \"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\"]\n};\nvar faTradeFederation = {\n prefix: 'fab',\n iconName: 'trade-federation',\n icon: [496, 512, [], \"f513\", \"M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z\"]\n};\nvar faAutoprefixer = {\n prefix: 'fab',\n iconName: 'autoprefixer',\n icon: [640, 512, [], \"f41c\", \"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\"]\n};\nvar faWhatsapp = {\n prefix: 'fab',\n iconName: 'whatsapp',\n icon: [448, 512, [], \"f232\", \"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"]\n};\nvar faSlideshare = {\n prefix: 'fab',\n iconName: 'slideshare',\n icon: [512, 512, [], \"f1e7\", \"M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z\"]\n};\nvar faGooglePlay = {\n prefix: 'fab',\n iconName: 'google-play',\n icon: [512, 512, [], \"f3ab\", \"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\"]\n};\nvar faViadeo = {\n prefix: 'fab',\n iconName: 'viadeo',\n icon: [448, 512, [], \"f2a9\", \"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\"]\n};\nvar faLine = {\n prefix: 'fab',\n iconName: 'line',\n icon: [448, 512, [], \"f3c0\", \"M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z\"]\n};\nvar faGoogleDrive = {\n prefix: 'fab',\n iconName: 'google-drive',\n icon: [512, 512, [], \"f3aa\", \"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\"]\n};\nvar faServicestack = {\n prefix: 'fab',\n iconName: 'servicestack',\n icon: [496, 512, [], \"f3ec\", \"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\"]\n};\nvar faSimplybuilt = {\n prefix: 'fab',\n iconName: 'simplybuilt',\n icon: [512, 512, [], \"f215\", \"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\"]\n};\nvar faBitbucket = {\n prefix: 'fab',\n iconName: 'bitbucket',\n icon: [512, 512, [61810], \"f171\", \"M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z\"]\n};\nvar faImdb = {\n prefix: 'fab',\n iconName: 'imdb',\n icon: [448, 512, [], \"f2d8\", \"M89.5 323.6H53.93V186.2H89.5V323.6zM156.1 250.5L165.2 186.2H211.5V323.6H180.5V230.9L167.1 323.6H145.8L132.8 232.9L132.7 323.6H101.5V186.2H147.6C148.1 194.5 150.4 204.3 151.9 215.6L156.1 250.5zM223.7 323.6V186.2H250.3C267.3 186.2 277.3 187.1 283.3 188.6C289.4 190.3 294 192.8 297.2 196.5C300.3 199.8 302.3 203.1 303 208.5C303.9 212.9 304.4 221.6 304.4 234.7V282.9C304.4 295.2 303.7 303.4 302.5 307.6C301.4 311.7 299.4 315 296.5 317.3C293.7 319.7 290.1 321.4 285.8 322.3C281.6 323.1 275.2 323.6 266.7 323.6H223.7zM259.2 209.7V299.1C264.3 299.1 267.5 298.1 268.6 296.8C269.7 294.8 270.4 289.2 270.4 280.1V226.8C270.4 220.6 270.3 216.6 269.7 214.8C269.4 213 268.5 211.8 267.1 210.1C265.7 210.1 263 209.7 259.2 209.7V209.7zM316.5 323.6V186.2H350.6V230.1C353.5 227.7 356.7 225.2 360.1 223.5C363.7 222 368.9 221.1 372.9 221.1C377.7 221.1 381.8 221.9 385.2 223.3C388.6 224.8 391.2 226.8 393.2 229.5C394.9 232.1 395.9 234.8 396.3 237.3C396.7 239.9 396.1 245.3 396.1 253.5V292.1C396.1 300.3 396.3 306.4 395.3 310.5C394.2 314.5 391.5 318.1 387.5 320.1C383.4 324 378.6 325.4 372.9 325.4C368.9 325.4 363.7 324.5 360.2 322.9C356.7 321.1 353.5 318.4 350.6 314.9L348.5 323.6L316.5 323.6zM361.6 302.9C362.3 301.1 362.6 296.9 362.6 290.4V255C362.6 249.4 362.3 245.5 361.5 243.8C360.8 241.9 357.8 241.1 355.7 241.1C353.7 241.1 352.3 241.9 351.6 243.4C351 244.9 350.6 248.8 350.6 255V291.4C350.6 297.5 351 301.4 351.8 303C352.4 304.7 353.9 305.5 355.9 305.5C358.1 305.5 360.1 304.7 361.6 302.9L361.6 302.9zM418.4 32.04C434.1 33.27 447.1 47.28 447.1 63.92V448.1C447.1 464.5 435.2 478.5 418.9 479.1C418.6 479.1 418.4 480 418.1 480H29.88C29.6 480 29.32 479.1 29.04 479.9C13.31 478.5 1.093 466.1 0 449.7L.0186 61.78C1.081 45.88 13.82 33.09 30.26 31.1H417.7C417.9 31.1 418.2 32.01 418.4 32.04L418.4 32.04zM30.27 41.26C19 42.01 10.02 51.01 9.257 62.4V449.7C9.63 455.1 11.91 460.2 15.7 464C19.48 467.9 24.51 470.3 29.89 470.7H418.1C429.6 469.7 438.7 459.1 438.7 448.1V63.91C438.7 58.17 436.6 52.65 432.7 48.45C428.8 44.24 423.4 41.67 417.7 41.26L30.27 41.26z\"]\n};\nvar faDeezer = {\n prefix: 'fab',\n iconName: 'deezer',\n icon: [576, 512, [], \"e077\", \"M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z\"]\n};\nvar faRaspberryPi = {\n prefix: 'fab',\n iconName: 'raspberry-pi',\n icon: [407, 512, [], \"f7bb\", \"M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z\"]\n};\nvar faJira = {\n prefix: 'fab',\n iconName: 'jira',\n icon: [496, 512, [], \"f7b1\", \"M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z\"]\n};\nvar faDocker = {\n prefix: 'fab',\n iconName: 'docker',\n icon: [640, 512, [], \"f395\", \"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\"]\n};\nvar faScreenpal = {\n prefix: 'fab',\n iconName: 'screenpal',\n icon: [512, 512, [], \"e570\", \"M233.5 22.49C233.5 10.07 243.6 0 256 0C268.4 0 278.5 10.07 278.5 22.49C278.5 34.91 268.4 44.98 256 44.98C243.6 44.98 233.5 34.91 233.5 22.49zM313.4 259C313.4 290.7 287.7 316.4 256 316.4C224.3 316.4 198.6 290.7 198.6 259C198.6 227.3 224.3 201.6 256 201.6C287.7 201.6 313.4 227.3 313.4 259zM337.2 350C359.5 330.1 373.7 302.7 377.1 273H496.6C493.1 334.4 466.2 392.2 421.4 434.4C376.7 476.6 317.5 500.2 256 500.2C194.5 500.2 135.3 476.6 90.56 434.4C45.83 392.2 18.94 334.4 15.39 273H135.1C138.5 302.7 152.7 330.1 175 350C197.3 369.9 226.2 380.9 256.1 380.9C285.1 380.9 314.8 369.9 337.2 350zM73.14 140.3C73.54 152.7 63.81 163.1 51.39 163.5C38.97 163.9 28.59 154.2 28.18 141.8C27.78 129.3 37.52 118.9 49.94 118.5C62.35 118.1 72.74 127.9 73.14 140.3zM438.9 141C438.9 128.6 448.9 118.5 461.4 118.5C473.8 118.5 483.8 128.6 483.8 141C483.8 153.5 473.8 163.5 461.4 163.5C448.9 163.5 438.9 153.5 438.9 141zM317.9 95.27C300.6 109.1 278.7 118.1 256 118.1C233.3 118.1 211.4 109.1 194.1 95.27C176.8 80.55 165.3 60.18 161.7 37.78C176.8 31.37 192.5 26.52 208.6 23.31C208.6 35.88 213.6 47.93 222.5 56.82C231.4 65.7 243.4 70.7 256 70.7C268.6 70.7 280.6 65.7 289.5 56.82C298.4 47.93 303.4 35.88 303.4 23.31C319.5 26.52 335.2 31.37 350.3 37.78C346.7 60.18 335.2 80.55 317.9 95.27H317.9zM82.78 231C61.42 238.6 38.06 238.4 16.86 230.4C18.82 214.1 22.46 198.1 27.71 182.5C33.1 185.6 39.05 187.6 45.22 188.5C51.39 189.3 57.67 188.9 63.68 187.3C69.69 185.6 75.33 182.9 80.27 179.1C85.21 175.3 89.36 170.6 92.47 165.2C95.58 159.8 97.61 153.8 98.42 147.7C99.23 141.5 98.83 135.2 97.22 129.2C95.61 123.2 92.83 117.6 89.04 112.6C85.25 107.7 80.53 103.5 75.14 100.4C85.96 88.11 98.01 76.94 111.1 67.07C128.7 81.42 140.6 101.6 144.7 123.9C148.8 146.2 144.8 169.3 133.5 188.9C122.1 208.5 104.1 223.4 82.78 231V231zM429.2 231.1C407.9 223.5 389.9 208.5 378.5 188.9C367.2 169.3 363.3 146.2 367.4 123.9C371.5 101.7 383.4 81.54 400.9 67.19C414 77.04 426.1 88.21 436.9 100.5C426.2 106.9 418.5 117.2 415.4 129.3C412.2 141.3 413.1 154.1 420.2 164.9C426.4 175.7 436.6 183.6 448.6 186.9C460.6 190.2 473.5 188.6 484.3 182.6C489.6 198.1 493.2 214.2 495.2 230.4C473.1 238.5 450.6 238.7 429.2 231.1L429.2 231.1z\"]\n};\nvar faBluetooth = {\n prefix: 'fab',\n iconName: 'bluetooth',\n icon: [448, 512, [], \"f293\", \"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\"]\n};\nvar faGitter = {\n prefix: 'fab',\n iconName: 'gitter',\n icon: [384, 512, [], \"f426\", \"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\"]\n};\nvar faDAndD = {\n prefix: 'fab',\n iconName: 'd-and-d',\n icon: [576, 512, [], \"f38d\", \"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\"]\n};\nvar faMicroblog = {\n prefix: 'fab',\n iconName: 'microblog',\n icon: [448, 512, [], \"e01a\", \"M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z\"]\n};\nvar faCcDinersClub = {\n prefix: 'fab',\n iconName: 'cc-diners-club',\n icon: [576, 512, [], \"f24c\", \"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\"]\n};\nvar faGgCircle = {\n prefix: 'fab',\n iconName: 'gg-circle',\n icon: [512, 512, [], \"f261\", \"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\"]\n};\nvar faPiedPiperHat = {\n prefix: 'fab',\n iconName: 'pied-piper-hat',\n icon: [640, 512, [], \"f4e5\", \"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\"]\n};\nvar faKickstarterK = {\n prefix: 'fab',\n iconName: 'kickstarter-k',\n icon: [384, 512, [], \"f3bc\", \"M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z\"]\n};\nvar faYandex = {\n prefix: 'fab',\n iconName: 'yandex',\n icon: [256, 512, [], \"f413\", \"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\"]\n};\nvar faReadme = {\n prefix: 'fab',\n iconName: 'readme',\n icon: [576, 512, [], \"f4d5\", \"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\"]\n};\nvar faHtml5 = {\n prefix: 'fab',\n iconName: 'html5',\n icon: [384, 512, [], \"f13b\", \"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\"]\n};\nvar faSellsy = {\n prefix: 'fab',\n iconName: 'sellsy',\n icon: [640, 512, [], \"f213\", \"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\"]\n};\nvar faSass = {\n prefix: 'fab',\n iconName: 'sass',\n icon: [640, 512, [], \"f41e\", \"M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z\"]\n};\nvar faWirsindhandwerk = {\n prefix: 'fab',\n iconName: 'wirsindhandwerk',\n icon: [512, 512, [\"wsh\"], \"e2d0\", \"M50.77161,479.81213h83.36071V367.84741l-83.36071,47.009Zm329.04675,0h82.35022V414.85645l-82.35022-47.009Zm.00568-448V251.568L256.1759,179.1861,134.50378,251.568V31.81213H50.77161V392.60565L256.1759,270.31909,462.16858,392.60565V31.81213Z\"]\n};\nvar faWsh = faWirsindhandwerk;\nvar faBuromobelexperte = {\n prefix: 'fab',\n iconName: 'buromobelexperte',\n icon: [448, 512, [], \"f37f\", \"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\"]\n};\nvar faSalesforce = {\n prefix: 'fab',\n iconName: 'salesforce',\n icon: [640, 512, [], \"f83b\", \"M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z\"]\n};\nvar faOctopusDeploy = {\n prefix: 'fab',\n iconName: 'octopus-deploy',\n icon: [512, 512, [], \"e082\", \"M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z\"]\n};\nvar faMedapps = {\n prefix: 'fab',\n iconName: 'medapps',\n icon: [320, 512, [], \"f3c6\", \"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\"]\n};\nvar faNs8 = {\n prefix: 'fab',\n iconName: 'ns8',\n icon: [640, 512, [], \"f3d5\", \"M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z\"]\n};\nvar faPinterestP = {\n prefix: 'fab',\n iconName: 'pinterest-p',\n icon: [384, 512, [], \"f231\", \"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\"]\n};\nvar faApper = {\n prefix: 'fab',\n iconName: 'apper',\n icon: [640, 512, [], \"f371\", \"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\"]\n};\nvar faFortAwesome = {\n prefix: 'fab',\n iconName: 'fort-awesome',\n icon: [512, 512, [], \"f286\", \"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\"]\n};\nvar faWaze = {\n prefix: 'fab',\n iconName: 'waze',\n icon: [512, 512, [], \"f83f\", \"M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z\"]\n};\nvar faCcJcb = {\n prefix: 'fab',\n iconName: 'cc-jcb',\n icon: [576, 512, [], \"f24b\", \"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\"]\n};\nvar faSnapchat = {\n prefix: 'fab',\n iconName: 'snapchat',\n icon: [512, 512, [62124, \"snapchat-ghost\"], \"f2ab\", \"M496.926,366.6c-3.373-9.176-9.8-14.086-17.112-18.153-1.376-.806-2.641-1.451-3.72-1.947-2.182-1.128-4.414-2.22-6.634-3.373-22.8-12.09-40.609-27.341-52.959-45.42a102.889,102.889,0,0,1-9.089-16.12c-1.054-3.013-1-4.724-.248-6.287a10.221,10.221,0,0,1,2.914-3.038c3.918-2.591,7.96-5.22,10.7-6.993,4.885-3.162,8.754-5.667,11.246-7.44,9.362-6.547,15.909-13.5,20-21.278a42.371,42.371,0,0,0,2.1-35.191c-6.2-16.318-21.613-26.449-40.287-26.449a55.543,55.543,0,0,0-11.718,1.24c-1.029.224-2.059.459-3.063.72.174-11.16-.074-22.94-1.066-34.534-3.522-40.758-17.794-62.123-32.674-79.16A130.167,130.167,0,0,0,332.1,36.443C309.515,23.547,283.91,17,256,17S202.6,23.547,180,36.443a129.735,129.735,0,0,0-33.281,26.783c-14.88,17.038-29.152,38.44-32.673,79.161-.992,11.594-1.24,23.435-1.079,34.533-1-.26-2.021-.5-3.051-.719a55.461,55.461,0,0,0-11.717-1.24c-18.687,0-34.125,10.131-40.3,26.449a42.423,42.423,0,0,0,2.046,35.228c4.105,7.774,10.652,14.731,20.014,21.278,2.48,1.736,6.361,4.24,11.246,7.44,2.641,1.711,6.5,4.216,10.28,6.72a11.054,11.054,0,0,1,3.3,3.311c.794,1.624.818,3.373-.36,6.6a102.02,102.02,0,0,1-8.94,15.785c-12.077,17.669-29.363,32.648-51.434,44.639C32.355,348.608,20.2,352.75,15.069,366.7c-3.868,10.528-1.339,22.506,8.494,32.6a49.137,49.137,0,0,0,12.4,9.387,134.337,134.337,0,0,0,30.342,12.139,20.024,20.024,0,0,1,6.126,2.741c3.583,3.137,3.075,7.861,7.849,14.78a34.468,34.468,0,0,0,8.977,9.127c10.019,6.919,21.278,7.353,33.207,7.811,10.776.41,22.989.881,36.939,5.481,5.778,1.91,11.78,5.605,18.736,9.92C194.842,480.951,217.707,495,255.973,495s61.292-14.123,78.118-24.428c6.907-4.24,12.872-7.9,18.489-9.758,13.949-4.613,26.163-5.072,36.939-5.481,11.928-.459,23.187-.893,33.206-7.812a34.584,34.584,0,0,0,10.218-11.16c3.434-5.84,3.348-9.919,6.572-12.771a18.971,18.971,0,0,1,5.753-2.629A134.893,134.893,0,0,0,476.02,408.71a48.344,48.344,0,0,0,13.019-10.193l.124-.149C498.389,388.5,500.708,376.867,496.926,366.6Zm-34.013,18.277c-20.745,11.458-34.533,10.23-45.259,17.137-9.114,5.865-3.72,18.513-10.342,23.076-8.134,5.617-32.177-.4-63.239,9.858-25.618,8.469-41.961,32.822-88.038,32.822s-62.036-24.3-88.076-32.884c-31-10.255-55.092-4.241-63.239-9.858-6.609-4.563-1.24-17.211-10.341-23.076-10.739-6.907-24.527-5.679-45.26-17.075-13.206-7.291-5.716-11.8-1.314-13.937,75.143-36.381,87.133-92.552,87.666-96.719.645-5.046,1.364-9.014-4.191-14.148-5.369-4.96-29.189-19.7-35.8-24.316-10.937-7.638-15.748-15.264-12.2-24.638,2.48-6.485,8.531-8.928,14.879-8.928a27.643,27.643,0,0,1,5.965.67c12,2.6,23.659,8.617,30.392,10.242a10.749,10.749,0,0,0,2.48.335c3.6,0,4.86-1.811,4.612-5.927-.768-13.132-2.628-38.725-.558-62.644,2.84-32.909,13.442-49.215,26.04-63.636,6.051-6.932,34.484-36.976,88.857-36.976s82.88,29.92,88.931,36.827c12.611,14.421,23.225,30.727,26.04,63.636,2.071,23.919.285,49.525-.558,62.644-.285,4.327,1.017,5.927,4.613,5.927a10.648,10.648,0,0,0,2.48-.335c6.745-1.624,18.4-7.638,30.4-10.242a27.641,27.641,0,0,1,5.964-.67c6.386,0,12.4,2.48,14.88,8.928,3.546,9.374-1.24,17-12.189,24.639-6.609,4.612-30.429,19.343-35.8,24.315-5.568,5.134-4.836,9.1-4.191,14.149.533,4.228,12.511,60.4,87.666,96.718C468.629,373.011,476.119,377.524,462.913,384.877Z\"]\n};\nvar faSnapchatGhost = faSnapchat;\nvar faFantasyFlightGames = {\n prefix: 'fab',\n iconName: 'fantasy-flight-games',\n icon: [512, 512, [], \"f6dc\", \"M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z\"]\n};\nvar faRust = {\n prefix: 'fab',\n iconName: 'rust',\n icon: [512, 512, [], \"e07a\", \"M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z\"]\n};\nvar faWix = {\n prefix: 'fab',\n iconName: 'wix',\n icon: [640, 512, [], \"f5cf\", \"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\"]\n};\nvar faSquareBehance = {\n prefix: 'fab',\n iconName: 'square-behance',\n icon: [448, 512, [\"behance-square\"], \"f1b5\", \"M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z\"]\n};\nvar faBehanceSquare = faSquareBehance;\nvar faSupple = {\n prefix: 'fab',\n iconName: 'supple',\n icon: [640, 512, [], \"f3f9\", \"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\"]\n};\nvar faRebel = {\n prefix: 'fab',\n iconName: 'rebel',\n icon: [512, 512, [], \"f1d0\", \"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\"]\n};\nvar faCss3 = {\n prefix: 'fab',\n iconName: 'css3',\n icon: [512, 512, [], \"f13c\", \"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\"]\n};\nvar faStaylinked = {\n prefix: 'fab',\n iconName: 'staylinked',\n icon: [440, 512, [], \"f3f5\", \"M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z\"]\n};\nvar faKaggle = {\n prefix: 'fab',\n iconName: 'kaggle',\n icon: [320, 512, [], \"f5fa\", \"M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z\"]\n};\nvar faSpaceAwesome = {\n prefix: 'fab',\n iconName: 'space-awesome',\n icon: [512, 512, [], \"e5ac\", \"M96 256H128V512H0V352H32V320H64V288H96V256zM512 352V512H384V256H416V288H448V320H480V352H512zM320 64H352V448H320V416H192V448H160V64H192V32H224V0H288V32H320V64zM288 128H224V192H288V128z\"]\n};\nvar faDeviantart = {\n prefix: 'fab',\n iconName: 'deviantart',\n icon: [320, 512, [], \"f1bd\", \"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\"]\n};\nvar faCpanel = {\n prefix: 'fab',\n iconName: 'cpanel',\n icon: [640, 512, [], \"f388\", \"M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z\"]\n};\nvar faGoodreadsG = {\n prefix: 'fab',\n iconName: 'goodreads-g',\n icon: [384, 512, [], \"f3a9\", \"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\"]\n};\nvar faSquareGit = {\n prefix: 'fab',\n iconName: 'square-git',\n icon: [448, 512, [\"git-square\"], \"f1d2\", \"M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z\"]\n};\nvar faGitSquare = faSquareGit;\nvar faSquareTumblr = {\n prefix: 'fab',\n iconName: 'square-tumblr',\n icon: [448, 512, [\"tumblr-square\"], \"f174\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z\"]\n};\nvar faTumblrSquare = faSquareTumblr;\nvar faTrello = {\n prefix: 'fab',\n iconName: 'trello',\n icon: [448, 512, [], \"f181\", \"M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z\"]\n};\nvar faCreativeCommonsNcJp = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-jp',\n icon: [496, 512, [], \"f4ea\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\"]\n};\nvar faGetPocket = {\n prefix: 'fab',\n iconName: 'get-pocket',\n icon: [448, 512, [], \"f265\", \"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\"]\n};\nvar faPerbyte = {\n prefix: 'fab',\n iconName: 'perbyte',\n icon: [448, 512, [], \"e083\", \"M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z\"]\n};\nvar faGrunt = {\n prefix: 'fab',\n iconName: 'grunt',\n icon: [384, 512, [], \"f3ad\", \"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z\"]\n};\nvar faWeebly = {\n prefix: 'fab',\n iconName: 'weebly',\n icon: [512, 512, [], \"f5cc\", \"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\"]\n};\nvar faConnectdevelop = {\n prefix: 'fab',\n iconName: 'connectdevelop',\n icon: [576, 512, [], \"f20e\", \"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\"]\n};\nvar faLeanpub = {\n prefix: 'fab',\n iconName: 'leanpub',\n icon: [576, 512, [], \"f212\", \"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\"]\n};\nvar faBlackTie = {\n prefix: 'fab',\n iconName: 'black-tie',\n icon: [448, 512, [], \"f27e\", \"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\"]\n};\nvar faThemeco = {\n prefix: 'fab',\n iconName: 'themeco',\n icon: [448, 512, [], \"f5c6\", \"M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z\"]\n};\nvar faPython = {\n prefix: 'fab',\n iconName: 'python',\n icon: [448, 512, [], \"f3e2\", \"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z\"]\n};\nvar faAndroid = {\n prefix: 'fab',\n iconName: 'android',\n icon: [576, 512, [], \"f17b\", \"M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55\"]\n};\nvar faBots = {\n prefix: 'fab',\n iconName: 'bots',\n icon: [640, 512, [], \"e340\", \"M86.344,197.834a51.767,51.767,0,0,0-41.57,20.058V156.018a8.19,8.19,0,0,0-8.19-8.19H8.19A8.19,8.19,0,0,0,0,156.018V333.551a8.189,8.189,0,0,0,8.19,8.189H36.584a8.189,8.189,0,0,0,8.19-8.189v-8.088c11.628,13.373,25.874,19.769,41.573,19.769,34.6,0,61.922-26.164,61.922-73.843C148.266,225.452,121.229,197.834,86.344,197.834ZM71.516,305.691c-9.593,0-21.221-4.942-26.745-12.5V250.164c5.528-7.558,17.152-12.791,26.745-12.791,17.734,0,31.107,13.082,31.107,34.013C102.623,292.609,89.25,305.691,71.516,305.691Zm156.372-59.032a17.4,17.4,0,1,0,17.4,17.4A17.4,17.4,0,0,0,227.888,246.659ZM273.956,156.7V112.039a13.308,13.308,0,1,0-10.237,0V156.7a107.49,107.49,0,1,0,10.237,0Zm85.993,107.367c0,30.531-40.792,55.281-91.112,55.281s-91.111-24.75-91.111-55.281,40.792-55.281,91.111-55.281S359.949,233.532,359.949,264.062Zm-50.163,17.4a17.4,17.4,0,1,0-17.4-17.4h0A17.4,17.4,0,0,0,309.786,281.466ZM580.7,250.455c-14.828-2.617-22.387-3.78-22.387-9.885,0-5.523,7.268-9.884,17.735-9.884a65.56,65.56,0,0,1,34.484,10.1,8.171,8.171,0,0,0,11.288-2.468c.07-.11.138-.221.2-.333l8.611-14.886a8.2,8.2,0,0,0-2.867-11.123,99.863,99.863,0,0,0-52.014-14.138c-38.956,0-60.179,21.514-60.179,46.225,0,36.342,33.725,41.864,57.563,45.642,13.373,2.326,24.13,4.361,24.13,11.048,0,6.4-5.523,10.757-18.9,10.757-13.552,0-30.994-6.222-42.623-13.579a8.206,8.206,0,0,0-11.335,2.491c-.035.054-.069.108-.1.164l-10.2,16.891a8.222,8.222,0,0,0,2.491,11.066c15.224,10.3,37.663,16.692,59.441,16.692,40.409,0,63.957-19.769,63.957-46.515C640,260.63,604.537,254.816,580.7,250.455Zm-95.928,60.787a8.211,8.211,0,0,0-9.521-5.938,23.168,23.168,0,0,1-4.155.387c-7.849,0-12.5-6.106-12.5-14.245V240.28h20.349a8.143,8.143,0,0,0,8.141-8.143V209.466a8.143,8.143,0,0,0-8.141-8.143H458.594V171.091a8.143,8.143,0,0,0-8.143-8.143H422.257a8.143,8.143,0,0,0-8.143,8.143h0v30.232H399a8.143,8.143,0,0,0-8.143,8.143h0v22.671A8.143,8.143,0,0,0,399,240.28h15.115v63.667c0,27.037,15.408,41.282,43.9,41.282,12.183,0,21.383-2.2,27.6-5.446a8.161,8.161,0,0,0,4.145-9.278Z\"]\n};\nvar faFreeCodeCamp = {\n prefix: 'fab',\n iconName: 'free-code-camp',\n icon: [576, 512, [], \"f2c5\", \"M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z\"]\n};\nvar faHornbill = {\n prefix: 'fab',\n iconName: 'hornbill',\n icon: [512, 512, [], \"f592\", \"M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z\"]\n};\nvar faJs = {\n prefix: 'fab',\n iconName: 'js',\n icon: [448, 512, [], \"f3b8\", \"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faIdeal = {\n prefix: 'fab',\n iconName: 'ideal',\n icon: [576, 512, [], \"e013\", \"M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z\"]\n};\nvar faGit = {\n prefix: 'fab',\n iconName: 'git',\n icon: [512, 512, [], \"f1d3\", \"M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z\"]\n};\nvar faDev = {\n prefix: 'fab',\n iconName: 'dev',\n icon: [448, 512, [], \"f6cc\", \"M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z\"]\n};\nvar faSketch = {\n prefix: 'fab',\n iconName: 'sketch',\n icon: [512, 512, [], \"f7c6\", \"M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z\"]\n};\nvar faYandexInternational = {\n prefix: 'fab',\n iconName: 'yandex-international',\n icon: [320, 512, [], \"f414\", \"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\"]\n};\nvar faCcAmex = {\n prefix: 'fab',\n iconName: 'cc-amex',\n icon: [576, 512, [], \"f1f3\", \"M48 480C21.49 480 0 458.5 0 432V80C0 53.49 21.49 32 48 32H528C554.5 32 576 53.49 576 80V82.43H500.5L483.5 130L466.6 82.43H369.4V145.6L341.3 82.43H262.7L181 267.1H246.8V430.9H450.5L482.4 395.8L514.3 430.9H576V432C576 458.5 554.5 480 528 480H48zM482.6 364L440.4 410.3H390.5L458 338.6L390.5 266.1H441.9L483.4 312.8L525.4 266.1H576L508 338.2L576 410.3H524.6L482.6 364zM576 296.9V380.2L536.7 338.3L576 296.9zM307.6 377.1H390.6V410.3H268.6V267.1H390.6V300.2H307.6V322.6H388.5V354.9H307.6V377.2V377.1zM537.3 145.7L500.4 246.3H466L429.2 146V246.3H390.5V103H451.7L483.6 192.3L515.8 103H576V246.3H537.3V145.7zM334.5 217.6H268.6L256.7 246.3H213.7L276.1 103H327.3L390.6 246.3H346.5L334.5 217.6zM301.5 138.5L282 185.4H320.9L301.5 138.5z\"]\n};\nvar faUber = {\n prefix: 'fab',\n iconName: 'uber',\n icon: [448, 512, [], \"f402\", \"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\"]\n};\nvar faGithub = {\n prefix: 'fab',\n iconName: 'github',\n icon: [496, 512, [], \"f09b\", \"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"]\n};\nvar faPhp = {\n prefix: 'fab',\n iconName: 'php',\n icon: [640, 512, [], \"f457\", \"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\"]\n};\nvar faAlipay = {\n prefix: 'fab',\n iconName: 'alipay',\n icon: [448, 512, [], \"f642\", \"M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z\"]\n};\nvar faYoutube = {\n prefix: 'fab',\n iconName: 'youtube',\n icon: [576, 512, [61802], \"f167\", \"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"]\n};\nvar faSkyatlas = {\n prefix: 'fab',\n iconName: 'skyatlas',\n icon: [640, 512, [], \"f216\", \"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\"]\n};\nvar faFirefoxBrowser = {\n prefix: 'fab',\n iconName: 'firefox-browser',\n icon: [512, 512, [], \"e007\", \"M130.22 127.548C130.38 127.558 130.3 127.558 130.22 127.548V127.548ZM481.64 172.898C471.03 147.398 449.56 119.898 432.7 111.168C446.42 138.058 454.37 165.048 457.4 185.168C457.405 185.306 457.422 185.443 457.45 185.578C429.87 116.828 383.098 89.1089 344.9 28.7479C329.908 5.05792 333.976 3.51792 331.82 4.08792L331.7 4.15792C284.99 30.1109 256.365 82.5289 249.12 126.898C232.503 127.771 216.219 131.895 201.19 139.035C199.838 139.649 198.736 140.706 198.066 142.031C197.396 143.356 197.199 144.87 197.506 146.323C197.7 147.162 198.068 147.951 198.586 148.639C199.103 149.327 199.76 149.899 200.512 150.318C201.264 150.737 202.096 150.993 202.954 151.071C203.811 151.148 204.676 151.045 205.491 150.768L206.011 150.558C221.511 143.255 238.408 139.393 255.541 139.238C318.369 138.669 352.698 183.262 363.161 201.528C350.161 192.378 326.811 183.338 304.341 187.248C392.081 231.108 368.541 381.784 246.951 376.448C187.487 373.838 149.881 325.467 146.421 285.648C146.421 285.648 157.671 243.698 227.041 243.698C234.541 243.698 255.971 222.778 256.371 216.698C256.281 214.698 213.836 197.822 197.281 181.518C188.434 172.805 184.229 168.611 180.511 165.458C178.499 163.75 176.392 162.158 174.201 160.688C168.638 141.231 168.399 120.638 173.51 101.058C148.45 112.468 128.96 130.508 114.8 146.428H114.68C105.01 134.178 105.68 93.7779 106.25 85.3479C106.13 84.8179 99.022 89.0159 98.1 89.6579C89.5342 95.7103 81.5528 102.55 74.26 110.088C57.969 126.688 30.128 160.242 18.76 211.318C14.224 231.701 12 255.739 12 263.618C12 398.318 121.21 507.508 255.92 507.508C376.56 507.508 478.939 420.281 496.35 304.888C507.922 228.192 481.64 173.82 481.64 172.898Z\"]\n};\nvar faReplyd = {\n prefix: 'fab',\n iconName: 'replyd',\n icon: [448, 512, [], \"f3e6\", \"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\"]\n};\nvar faSuse = {\n prefix: 'fab',\n iconName: 'suse',\n icon: [640, 512, [], \"f7d6\", \"M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z\"]\n};\nvar faJenkins = {\n prefix: 'fab',\n iconName: 'jenkins',\n icon: [512, 512, [], \"f3b6\", \"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\"]\n};\nvar faTwitter = {\n prefix: 'fab',\n iconName: 'twitter',\n icon: [512, 512, [], \"f099\", \"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"]\n};\nvar faRockrms = {\n prefix: 'fab',\n iconName: 'rockrms',\n icon: [496, 512, [], \"f3e9\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\"]\n};\nvar faPinterest = {\n prefix: 'fab',\n iconName: 'pinterest',\n icon: [496, 512, [], \"f0d2\", \"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"]\n};\nvar faBuffer = {\n prefix: 'fab',\n iconName: 'buffer',\n icon: [448, 512, [], \"f837\", \"M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z\"]\n};\nvar faNpm = {\n prefix: 'fab',\n iconName: 'npm',\n icon: [576, 512, [], \"f3d4\", \"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\"]\n};\nvar faYammer = {\n prefix: 'fab',\n iconName: 'yammer',\n icon: [512, 512, [], \"f840\", \"M500.676,159.486a12.779,12.779,0,0,0-6.4-8.282,13.954,13.954,0,0,0-10.078-1.125L457.8,156.7l-.043-.2-22.3,5.785-1.243.333-.608-2.17A369.037,369.037,0,0,0,347.538,4.289a14.1,14.1,0,0,0-19.784-.463l-102.9,102.747H24.947A24.9,24.9,0,0,0,0,131.417V380.38a24.963,24.963,0,0,0,24.918,24.9H224.986L328.072,508a13.667,13.667,0,0,0,19.327,0c.126-.126.249-.255.37-.385a368.025,368.025,0,0,0,69.577-107.374,403.45,403.45,0,0,0,17.3-50.8v-.028l20.406,5.336.029-.073L483.345,362a20.253,20.253,0,0,0,2.619.5,13.359,13.359,0,0,0,4.139-.072,13.5,13.5,0,0,0,10.515-9.924,415.855,415.855,0,0,0,.058-193.013ZM337.125,24.65l.013.014h-.013Zm-110.2,165.161L174.311,281.1a11.338,11.338,0,0,0-1.489,5.655v46.189a22.04,22.04,0,0,1-22.041,22h-3.4A22.068,22.068,0,0,1,125.3,332.962V287.294a11.532,11.532,0,0,0-1.388-5.51l-51.6-92.2a21.988,21.988,0,0,1,19.264-32.726h3.268a22.059,22.059,0,0,1,19.611,11.916l36.357,70.281,37.515-70.512a22.066,22.066,0,0,1,38.556-.695,21.7,21.7,0,0,1,0,21.967ZM337.145,24.673a348.147,348.147,0,0,1,75.8,141.335l.564,1.952-114.134,29.6V131.417a25.006,25.006,0,0,0-24.947-24.9H255.067Zm60.5,367.305v-.043l-.014.014a347.19,347.19,0,0,1-60.177,95.227l-82.2-81.893h19.177a24.978,24.978,0,0,0,24.947-24.9v-66.2l114.6,29.862A385.191,385.191,0,0,1,397.648,391.978Zm84-52.45.015.014-50.618-13.131L299.379,292.1V219.572l119.746-30.99,4.468-1.157,39.54-10.253,18.511-4.816A393,393,0,0,1,481.644,339.528Z\"]\n};\nvar faBtc = {\n prefix: 'fab',\n iconName: 'btc',\n icon: [384, 512, [], \"f15a\", \"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\"]\n};\nvar faDribbble = {\n prefix: 'fab',\n iconName: 'dribbble',\n icon: [512, 512, [], \"f17d\", \"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\"]\n};\nvar faStumbleuponCircle = {\n prefix: 'fab',\n iconName: 'stumbleupon-circle',\n icon: [496, 512, [], \"f1a3\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\"]\n};\nvar faInternetExplorer = {\n prefix: 'fab',\n iconName: 'internet-explorer',\n icon: [512, 512, [], \"f26b\", \"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\"]\n};\nvar faTelegram = {\n prefix: 'fab',\n iconName: 'telegram',\n icon: [496, 512, [62462, \"telegram-plane\"], \"f2c6\", \"M248,8C111.033,8,0,119.033,0,256S111.033,504,248,504,496,392.967,496,256,384.967,8,248,8ZM362.952,176.66c-3.732,39.215-19.881,134.378-28.1,178.3-3.476,18.584-10.322,24.816-16.948,25.425-14.4,1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25,5.342-39.5,3.652-3.793,67.107-61.51,68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608,69.142-14.845,10.194-26.894,9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7,18.45-13.7,108.446-47.248,144.628-62.3c68.872-28.647,83.183-33.623,92.511-33.789,2.052-.034,6.639.474,9.61,2.885a10.452,10.452,0,0,1,3.53,6.716A43.765,43.765,0,0,1,362.952,176.66Z\"]\n};\nvar faTelegramPlane = faTelegram;\nvar faOldRepublic = {\n prefix: 'fab',\n iconName: 'old-republic',\n icon: [496, 512, [], \"f510\", \"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\"]\n};\nvar faSquareWhatsapp = {\n prefix: 'fab',\n iconName: 'square-whatsapp',\n icon: [448, 512, [\"whatsapp-square\"], \"f40c\", \"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\"]\n};\nvar faWhatsappSquare = faSquareWhatsapp;\nvar faNodeJs = {\n prefix: 'fab',\n iconName: 'node-js',\n icon: [448, 512, [], \"f3d3\", \"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\"]\n};\nvar faEdgeLegacy = {\n prefix: 'fab',\n iconName: 'edge-legacy',\n icon: [512, 512, [], \"e078\", \"M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z\"]\n};\nvar faSlack = {\n prefix: 'fab',\n iconName: 'slack',\n icon: [448, 512, [62447, \"slack-hash\"], \"f198\", \"M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z\"]\n};\nvar faSlackHash = faSlack;\nvar faMedrt = {\n prefix: 'fab',\n iconName: 'medrt',\n icon: [544, 512, [], \"f3c8\", \"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\"]\n};\nvar faUsb = {\n prefix: 'fab',\n iconName: 'usb',\n icon: [640, 512, [], \"f287\", \"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\"]\n};\nvar faTumblr = {\n prefix: 'fab',\n iconName: 'tumblr',\n icon: [320, 512, [], \"f173\", \"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\"]\n};\nvar faVaadin = {\n prefix: 'fab',\n iconName: 'vaadin',\n icon: [448, 512, [], \"f408\", \"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\"]\n};\nvar faQuora = {\n prefix: 'fab',\n iconName: 'quora',\n icon: [448, 512, [], \"f2c4\", \"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\"]\n};\nvar faReacteurope = {\n prefix: 'fab',\n iconName: 'reacteurope',\n icon: [576, 512, [], \"f75d\", \"M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z\"]\n};\nvar faMedium = {\n prefix: 'fab',\n iconName: 'medium',\n icon: [640, 512, [62407, \"medium-m\"], \"f23a\", \"M180.5,74.262C80.813,74.262,0,155.633,0,256S80.819,437.738,180.5,437.738,361,356.373,361,256,280.191,74.262,180.5,74.262Zm288.25,10.646c-49.845,0-90.245,76.619-90.245,171.095s40.406,171.1,90.251,171.1,90.251-76.619,90.251-171.1H559C559,161.5,518.6,84.908,468.752,84.908Zm139.506,17.821c-17.526,0-31.735,68.628-31.735,153.274s14.2,153.274,31.735,153.274S640,340.631,640,256C640,171.351,625.785,102.729,608.258,102.729Z\"]\n};\nvar faMediumM = faMedium;\nvar faAmilia = {\n prefix: 'fab',\n iconName: 'amilia',\n icon: [448, 512, [], \"f36d\", \"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z\"]\n};\nvar faMixcloud = {\n prefix: 'fab',\n iconName: 'mixcloud',\n icon: [640, 512, [], \"f289\", \"M212.98 346.566H179.789V195.114L185.973 173.47H175.262L137.127 346.566H76.1069L37.7323 173.47H27.276L33.1913 195.114V346.566H0V165H65.6506L102.248 338.096H110.747L147.329 165H212.98L212.98 346.566ZM544.459 283.589L458.434 345.655V307.534L531.329 255.776L458.434 204.017V165.896L544.459 228.231H553.721L640 165.896V204.017L566.866 255.776L640 307.549V345.655L553.721 283.589H544.459ZM430.157 272.311H248.113V239.255H430.157V272.311Z\"]\n};\nvar faFlipboard = {\n prefix: 'fab',\n iconName: 'flipboard',\n icon: [448, 512, [], \"f44d\", \"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\"]\n};\nvar faViacoin = {\n prefix: 'fab',\n iconName: 'viacoin',\n icon: [384, 512, [], \"f237\", \"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\"]\n};\nvar faCriticalRole = {\n prefix: 'fab',\n iconName: 'critical-role',\n icon: [448, 512, [], \"f6c9\", \"M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z\"]\n};\nvar faSitrox = {\n prefix: 'fab',\n iconName: 'sitrox',\n icon: [448, 512, [], \"e44a\", \"M212.439 0.00846128V0H448V128H64C64 57.6008 141.755 0.475338 212.439 0.00846128ZM237.256 192V192.007C307.135 192.475 384 249.6 384 320H210.809V319.995C140.915 319.563 64 262.424 64 192H237.256ZM235.565 511.993C306.251 511.521 384 454.399 384 384H0V512H235.565V511.993Z\"]\n};\nvar faDiscourse = {\n prefix: 'fab',\n iconName: 'discourse',\n icon: [448, 512, [], \"f393\", \"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\"]\n};\nvar faJoomla = {\n prefix: 'fab',\n iconName: 'joomla',\n icon: [448, 512, [], \"f1aa\", \"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\"]\n};\nvar faMastodon = {\n prefix: 'fab',\n iconName: 'mastodon',\n icon: [448, 512, [], \"f4f6\", \"M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z\"]\n};\nvar faAirbnb = {\n prefix: 'fab',\n iconName: 'airbnb',\n icon: [448, 512, [], \"f834\", \"M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z\"]\n};\nvar faWolfPackBattalion = {\n prefix: 'fab',\n iconName: 'wolf-pack-battalion',\n icon: [512, 512, [], \"f514\", \"M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z\"]\n};\nvar faBuyNLarge = {\n prefix: 'fab',\n iconName: 'buy-n-large',\n icon: [576, 512, [], \"f8a6\", \"M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z\"]\n};\nvar faGulp = {\n prefix: 'fab',\n iconName: 'gulp',\n icon: [256, 512, [], \"f3ae\", \"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\"]\n};\nvar faCreativeCommonsSamplingPlus = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling-plus',\n icon: [496, 512, [], \"f4f1\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\"]\n};\nvar faStrava = {\n prefix: 'fab',\n iconName: 'strava',\n icon: [384, 512, [], \"f428\", \"M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z\"]\n};\nvar faEmber = {\n prefix: 'fab',\n iconName: 'ember',\n icon: [640, 512, [], \"f423\", \"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\"]\n};\nvar faCanadianMapleLeaf = {\n prefix: 'fab',\n iconName: 'canadian-maple-leaf',\n icon: [512, 512, [], \"f785\", \"M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z\"]\n};\nvar faTeamspeak = {\n prefix: 'fab',\n iconName: 'teamspeak',\n icon: [512, 512, [], \"f4f9\", \"M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z\"]\n};\nvar faPushed = {\n prefix: 'fab',\n iconName: 'pushed',\n icon: [432, 512, [], \"f3e1\", \"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\"]\n};\nvar faWordpressSimple = {\n prefix: 'fab',\n iconName: 'wordpress-simple',\n icon: [512, 512, [], \"f411\", \"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\"]\n};\nvar faNutritionix = {\n prefix: 'fab',\n iconName: 'nutritionix',\n icon: [400, 512, [], \"f3d6\", \"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\"]\n};\nvar faWodu = {\n prefix: 'fab',\n iconName: 'wodu',\n icon: [640, 512, [], \"e088\", \"M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z\"]\n};\nvar faGooglePay = {\n prefix: 'fab',\n iconName: 'google-pay',\n icon: [640, 512, [], \"e079\", \"M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z\"]\n};\nvar faIntercom = {\n prefix: 'fab',\n iconName: 'intercom',\n icon: [448, 512, [], \"f7af\", \"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z\"]\n};\nvar faZhihu = {\n prefix: 'fab',\n iconName: 'zhihu',\n icon: [640, 512, [], \"f63f\", \"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\"]\n};\nvar faKorvue = {\n prefix: 'fab',\n iconName: 'korvue',\n icon: [446, 512, [], \"f42f\", \"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\"]\n};\nvar faPix = {\n prefix: 'fab',\n iconName: 'pix',\n icon: [512, 512, [], \"e43a\", \"M242.4 292.5C247.8 287.1 257.1 287.1 262.5 292.5L339.5 369.5C353.7 383.7 372.6 391.5 392.6 391.5H407.7L310.6 488.6C280.3 518.1 231.1 518.1 200.8 488.6L103.3 391.2H112.6C132.6 391.2 151.5 383.4 165.7 369.2L242.4 292.5zM262.5 218.9C256.1 224.4 247.9 224.5 242.4 218.9L165.7 142.2C151.5 127.1 132.6 120.2 112.6 120.2H103.3L200.7 22.76C231.1-7.586 280.3-7.586 310.6 22.76L407.8 119.9H392.6C372.6 119.9 353.7 127.7 339.5 141.9L262.5 218.9zM112.6 142.7C126.4 142.7 139.1 148.3 149.7 158.1L226.4 234.8C233.6 241.1 243 245.6 252.5 245.6C261.9 245.6 271.3 241.1 278.5 234.8L355.5 157.8C365.3 148.1 378.8 142.5 392.6 142.5H430.3L488.6 200.8C518.9 231.1 518.9 280.3 488.6 310.6L430.3 368.9H392.6C378.8 368.9 365.3 363.3 355.5 353.5L278.5 276.5C264.6 262.6 240.3 262.6 226.4 276.6L149.7 353.2C139.1 363 126.4 368.6 112.6 368.6H80.78L22.76 310.6C-7.586 280.3-7.586 231.1 22.76 200.8L80.78 142.7H112.6z\"]\n};\nvar faSteamSymbol = {\n prefix: 'fab',\n iconName: 'steam-symbol',\n icon: [448, 512, [], \"f3f6\", \"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\"]\n};\nvar icons = {\n faMonero: faMonero,\n faHooli: faHooli,\n faYelp: faYelp,\n faCcVisa: faCcVisa,\n faLastfm: faLastfm,\n faShopware: faShopware,\n faCreativeCommonsNc: faCreativeCommonsNc,\n faAws: faAws,\n faRedhat: faRedhat,\n faYoast: faYoast,\n faCloudflare: faCloudflare,\n faUps: faUps,\n faWpexplorer: faWpexplorer,\n faDyalog: faDyalog,\n faBity: faBity,\n faStackpath: faStackpath,\n faBuysellads: faBuysellads,\n faFirstOrder: faFirstOrder,\n faModx: faModx,\n faGuilded: faGuilded,\n faVnv: faVnv,\n faSquareJs: faSquareJs,\n faJsSquare: faJsSquare,\n faMicrosoft: faMicrosoft,\n faQq: faQq,\n faOrcid: faOrcid,\n faJava: faJava,\n faInvision: faInvision,\n faCreativeCommonsPdAlt: faCreativeCommonsPdAlt,\n faCentercode: faCentercode,\n faGlideG: faGlideG,\n faDrupal: faDrupal,\n faHireAHelper: faHireAHelper,\n faCreativeCommonsBy: faCreativeCommonsBy,\n faUnity: faUnity,\n faWhmcs: faWhmcs,\n faRocketchat: faRocketchat,\n faVk: faVk,\n faUntappd: faUntappd,\n faMailchimp: faMailchimp,\n faCss3Alt: faCss3Alt,\n faSquareReddit: faSquareReddit,\n faRedditSquare: faRedditSquare,\n faVimeoV: faVimeoV,\n faContao: faContao,\n faSquareFontAwesome: faSquareFontAwesome,\n faDeskpro: faDeskpro,\n faSistrix: faSistrix,\n faSquareInstagram: faSquareInstagram,\n faInstagramSquare: faInstagramSquare,\n faBattleNet: faBattleNet,\n faTheRedYeti: faTheRedYeti,\n faSquareHackerNews: faSquareHackerNews,\n faHackerNewsSquare: faHackerNewsSquare,\n faEdge: faEdge,\n faNapster: faNapster,\n faSquareSnapchat: faSquareSnapchat,\n faSnapchatSquare: faSnapchatSquare,\n faGooglePlusG: faGooglePlusG,\n faArtstation: faArtstation,\n faMarkdown: faMarkdown,\n faSourcetree: faSourcetree,\n faGooglePlus: faGooglePlus,\n faDiaspora: faDiaspora,\n faFoursquare: faFoursquare,\n faStackOverflow: faStackOverflow,\n faGithubAlt: faGithubAlt,\n faPhoenixSquadron: faPhoenixSquadron,\n faPagelines: faPagelines,\n faAlgolia: faAlgolia,\n faRedRiver: faRedRiver,\n faCreativeCommonsSa: faCreativeCommonsSa,\n faSafari: faSafari,\n faGoogle: faGoogle,\n faSquareFontAwesomeStroke: faSquareFontAwesomeStroke,\n faFontAwesomeAlt: faFontAwesomeAlt,\n faAtlassian: faAtlassian,\n faLinkedinIn: faLinkedinIn,\n faDigitalOcean: faDigitalOcean,\n faNimblr: faNimblr,\n faChromecast: faChromecast,\n faEvernote: faEvernote,\n faHackerNews: faHackerNews,\n faCreativeCommonsSampling: faCreativeCommonsSampling,\n faAdversal: faAdversal,\n faCreativeCommons: faCreativeCommons,\n faWatchmanMonitoring: faWatchmanMonitoring,\n faFonticons: faFonticons,\n faWeixin: faWeixin,\n faShirtsinbulk: faShirtsinbulk,\n faCodepen: faCodepen,\n faGitAlt: faGitAlt,\n faLyft: faLyft,\n faRev: faRev,\n faWindows: faWindows,\n faWizardsOfTheCoast: faWizardsOfTheCoast,\n faSquareViadeo: faSquareViadeo,\n faViadeoSquare: faViadeoSquare,\n faMeetup: faMeetup,\n faCentos: faCentos,\n faAdn: faAdn,\n faCloudsmith: faCloudsmith,\n faPiedPiperAlt: faPiedPiperAlt,\n faSquareDribbble: faSquareDribbble,\n faDribbbleSquare: faDribbbleSquare,\n faCodiepie: faCodiepie,\n faNode: faNode,\n faMix: faMix,\n faSteam: faSteam,\n faCcApplePay: faCcApplePay,\n faScribd: faScribd,\n faOpenid: faOpenid,\n faInstalod: faInstalod,\n faExpeditedssl: faExpeditedssl,\n faSellcast: faSellcast,\n faSquareTwitter: faSquareTwitter,\n faTwitterSquare: faTwitterSquare,\n faRProject: faRProject,\n faDelicious: faDelicious,\n faFreebsd: faFreebsd,\n faVuejs: faVuejs,\n faAccusoft: faAccusoft,\n faIoxhost: faIoxhost,\n faFonticonsFi: faFonticonsFi,\n faAppStore: faAppStore,\n faCcMastercard: faCcMastercard,\n faItunesNote: faItunesNote,\n faGolang: faGolang,\n faKickstarter: faKickstarter,\n faGrav: faGrav,\n faWeibo: faWeibo,\n faUncharted: faUncharted,\n faFirstdraft: faFirstdraft,\n faSquareYoutube: faSquareYoutube,\n faYoutubeSquare: faYoutubeSquare,\n faWikipediaW: faWikipediaW,\n faWpressr: faWpressr,\n faRendact: faRendact,\n faAngellist: faAngellist,\n faGalacticRepublic: faGalacticRepublic,\n faNfcDirectional: faNfcDirectional,\n faSkype: faSkype,\n faJoget: faJoget,\n faFedora: faFedora,\n faStripeS: faStripeS,\n faMeta: faMeta,\n faLaravel: faLaravel,\n faHotjar: faHotjar,\n faBluetoothB: faBluetoothB,\n faStickerMule: faStickerMule,\n faCreativeCommonsZero: faCreativeCommonsZero,\n faHips: faHips,\n faBehance: faBehance,\n faReddit: faReddit,\n faDiscord: faDiscord,\n faChrome: faChrome,\n faAppStoreIos: faAppStoreIos,\n faCcDiscover: faCcDiscover,\n faWpbeginner: faWpbeginner,\n faConfluence: faConfluence,\n faMdb: faMdb,\n faDochub: faDochub,\n faAccessibleIcon: faAccessibleIcon,\n faEbay: faEbay,\n faAmazon: faAmazon,\n faUnsplash: faUnsplash,\n faYarn: faYarn,\n faSquareSteam: faSquareSteam,\n faSteamSquare: faSteamSquare,\n fa500px: fa500px,\n faSquareVimeo: faSquareVimeo,\n faVimeoSquare: faVimeoSquare,\n faAsymmetrik: faAsymmetrik,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faGratipay: faGratipay,\n faApple: faApple,\n faHive: faHive,\n faGitkraken: faGitkraken,\n faKeybase: faKeybase,\n faApplePay: faApplePay,\n faPadlet: faPadlet,\n faAmazonPay: faAmazonPay,\n faSquareGithub: faSquareGithub,\n faGithubSquare: faGithubSquare,\n faStumbleupon: faStumbleupon,\n faFedex: faFedex,\n faPhoenixFramework: faPhoenixFramework,\n faShopify: faShopify,\n faNeos: faNeos,\n faHackerrank: faHackerrank,\n faResearchgate: faResearchgate,\n faSwift: faSwift,\n faAngular: faAngular,\n faSpeakap: faSpeakap,\n faAngrycreative: faAngrycreative,\n faYCombinator: faYCombinator,\n faEmpire: faEmpire,\n faEnvira: faEnvira,\n faSquareGitlab: faSquareGitlab,\n faGitlabSquare: faGitlabSquare,\n faStudiovinari: faStudiovinari,\n faPiedPiper: faPiedPiper,\n faWordpress: faWordpress,\n faProductHunt: faProductHunt,\n faFirefox: faFirefox,\n faLinode: faLinode,\n faGoodreads: faGoodreads,\n faSquareOdnoklassniki: faSquareOdnoklassniki,\n faOdnoklassnikiSquare: faOdnoklassnikiSquare,\n faJsfiddle: faJsfiddle,\n faSith: faSith,\n faThemeisle: faThemeisle,\n faPage4: faPage4,\n faHashnode: faHashnode,\n faReact: faReact,\n faCcPaypal: faCcPaypal,\n faSquarespace: faSquarespace,\n faCcStripe: faCcStripe,\n faCreativeCommonsShare: faCreativeCommonsShare,\n faBitcoin: faBitcoin,\n faKeycdn: faKeycdn,\n faOpera: faOpera,\n faItchIo: faItchIo,\n faUmbraco: faUmbraco,\n faGalacticSenate: faGalacticSenate,\n faUbuntu: faUbuntu,\n faDraft2digital: faDraft2digital,\n faStripe: faStripe,\n faHouzz: faHouzz,\n faGg: faGg,\n faDhl: faDhl,\n faSquarePinterest: faSquarePinterest,\n faPinterestSquare: faPinterestSquare,\n faXing: faXing,\n faBlackberry: faBlackberry,\n faCreativeCommonsPd: faCreativeCommonsPd,\n faPlaystation: faPlaystation,\n faQuinscape: faQuinscape,\n faLess: faLess,\n faBloggerB: faBloggerB,\n faOpencart: faOpencart,\n faVine: faVine,\n faPaypal: faPaypal,\n faGitlab: faGitlab,\n faTypo3: faTypo3,\n faRedditAlien: faRedditAlien,\n faYahoo: faYahoo,\n faDailymotion: faDailymotion,\n faAffiliatetheme: faAffiliatetheme,\n faPiedPiperPp: faPiedPiperPp,\n faBootstrap: faBootstrap,\n faOdnoklassniki: faOdnoklassniki,\n faNfcSymbol: faNfcSymbol,\n faEthereum: faEthereum,\n faSpeakerDeck: faSpeakerDeck,\n faCreativeCommonsNcEu: faCreativeCommonsNcEu,\n faPatreon: faPatreon,\n faAvianex: faAvianex,\n faEllo: faEllo,\n faGofore: faGofore,\n faBimobject: faBimobject,\n faFacebookF: faFacebookF,\n faSquareGooglePlus: faSquareGooglePlus,\n faGooglePlusSquare: faGooglePlusSquare,\n faMandalorian: faMandalorian,\n faFirstOrderAlt: faFirstOrderAlt,\n faOsi: faOsi,\n faGoogleWallet: faGoogleWallet,\n faDAndDBeyond: faDAndDBeyond,\n faPeriscope: faPeriscope,\n faFulcrum: faFulcrum,\n faCloudscale: faCloudscale,\n faForumbee: faForumbee,\n faMizuni: faMizuni,\n faSchlix: faSchlix,\n faSquareXing: faSquareXing,\n faXingSquare: faXingSquare,\n faBandcamp: faBandcamp,\n faWpforms: faWpforms,\n faCloudversify: faCloudversify,\n faUsps: faUsps,\n faMegaport: faMegaport,\n faMagento: faMagento,\n faSpotify: faSpotify,\n faOptinMonster: faOptinMonster,\n faFly: faFly,\n faAviato: faAviato,\n faItunes: faItunes,\n faCuttlefish: faCuttlefish,\n faBlogger: faBlogger,\n faFlickr: faFlickr,\n faViber: faViber,\n faSoundcloud: faSoundcloud,\n faDigg: faDigg,\n faTencentWeibo: faTencentWeibo,\n faSymfony: faSymfony,\n faMaxcdn: faMaxcdn,\n faEtsy: faEtsy,\n faFacebookMessenger: faFacebookMessenger,\n faAudible: faAudible,\n faThinkPeaks: faThinkPeaks,\n faBilibili: faBilibili,\n faErlang: faErlang,\n faCottonBureau: faCottonBureau,\n faDashcube: faDashcube,\n fa42Group: fa42Group,\n faInnosoft: faInnosoft,\n faStackExchange: faStackExchange,\n faElementor: faElementor,\n faSquarePiedPiper: faSquarePiedPiper,\n faPiedPiperSquare: faPiedPiperSquare,\n faCreativeCommonsNd: faCreativeCommonsNd,\n faPalfed: faPalfed,\n faSuperpowers: faSuperpowers,\n faResolving: faResolving,\n faXbox: faXbox,\n faSearchengin: faSearchengin,\n faTiktok: faTiktok,\n faSquareFacebook: faSquareFacebook,\n faFacebookSquare: faFacebookSquare,\n faRenren: faRenren,\n faLinux: faLinux,\n faGlide: faGlide,\n faLinkedin: faLinkedin,\n faHubspot: faHubspot,\n faDeploydog: faDeploydog,\n faTwitch: faTwitch,\n faRavelry: faRavelry,\n faMixer: faMixer,\n faSquareLastfm: faSquareLastfm,\n faLastfmSquare: faLastfmSquare,\n faVimeo: faVimeo,\n faMendeley: faMendeley,\n faUniregistry: faUniregistry,\n faFigma: faFigma,\n faCreativeCommonsRemix: faCreativeCommonsRemix,\n faCcAmazonPay: faCcAmazonPay,\n faDropbox: faDropbox,\n faInstagram: faInstagram,\n faCmplid: faCmplid,\n faFacebook: faFacebook,\n faGripfire: faGripfire,\n faJediOrder: faJediOrder,\n faUikit: faUikit,\n faFortAwesomeAlt: faFortAwesomeAlt,\n faPhabricator: faPhabricator,\n faUssunnah: faUssunnah,\n faEarlybirds: faEarlybirds,\n faTradeFederation: faTradeFederation,\n faAutoprefixer: faAutoprefixer,\n faWhatsapp: faWhatsapp,\n faSlideshare: faSlideshare,\n faGooglePlay: faGooglePlay,\n faViadeo: faViadeo,\n faLine: faLine,\n faGoogleDrive: faGoogleDrive,\n faServicestack: faServicestack,\n faSimplybuilt: faSimplybuilt,\n faBitbucket: faBitbucket,\n faImdb: faImdb,\n faDeezer: faDeezer,\n faRaspberryPi: faRaspberryPi,\n faJira: faJira,\n faDocker: faDocker,\n faScreenpal: faScreenpal,\n faBluetooth: faBluetooth,\n faGitter: faGitter,\n faDAndD: faDAndD,\n faMicroblog: faMicroblog,\n faCcDinersClub: faCcDinersClub,\n faGgCircle: faGgCircle,\n faPiedPiperHat: faPiedPiperHat,\n faKickstarterK: faKickstarterK,\n faYandex: faYandex,\n faReadme: faReadme,\n faHtml5: faHtml5,\n faSellsy: faSellsy,\n faSass: faSass,\n faWirsindhandwerk: faWirsindhandwerk,\n faWsh: faWsh,\n faBuromobelexperte: faBuromobelexperte,\n faSalesforce: faSalesforce,\n faOctopusDeploy: faOctopusDeploy,\n faMedapps: faMedapps,\n faNs8: faNs8,\n faPinterestP: faPinterestP,\n faApper: faApper,\n faFortAwesome: faFortAwesome,\n faWaze: faWaze,\n faCcJcb: faCcJcb,\n faSnapchat: faSnapchat,\n faSnapchatGhost: faSnapchatGhost,\n faFantasyFlightGames: faFantasyFlightGames,\n faRust: faRust,\n faWix: faWix,\n faSquareBehance: faSquareBehance,\n faBehanceSquare: faBehanceSquare,\n faSupple: faSupple,\n faRebel: faRebel,\n faCss3: faCss3,\n faStaylinked: faStaylinked,\n faKaggle: faKaggle,\n faSpaceAwesome: faSpaceAwesome,\n faDeviantart: faDeviantart,\n faCpanel: faCpanel,\n faGoodreadsG: faGoodreadsG,\n faSquareGit: faSquareGit,\n faGitSquare: faGitSquare,\n faSquareTumblr: faSquareTumblr,\n faTumblrSquare: faTumblrSquare,\n faTrello: faTrello,\n faCreativeCommonsNcJp: faCreativeCommonsNcJp,\n faGetPocket: faGetPocket,\n faPerbyte: faPerbyte,\n faGrunt: faGrunt,\n faWeebly: faWeebly,\n faConnectdevelop: faConnectdevelop,\n faLeanpub: faLeanpub,\n faBlackTie: faBlackTie,\n faThemeco: faThemeco,\n faPython: faPython,\n faAndroid: faAndroid,\n faBots: faBots,\n faFreeCodeCamp: faFreeCodeCamp,\n faHornbill: faHornbill,\n faJs: faJs,\n faIdeal: faIdeal,\n faGit: faGit,\n faDev: faDev,\n faSketch: faSketch,\n faYandexInternational: faYandexInternational,\n faCcAmex: faCcAmex,\n faUber: faUber,\n faGithub: faGithub,\n faPhp: faPhp,\n faAlipay: faAlipay,\n faYoutube: faYoutube,\n faSkyatlas: faSkyatlas,\n faFirefoxBrowser: faFirefoxBrowser,\n faReplyd: faReplyd,\n faSuse: faSuse,\n faJenkins: faJenkins,\n faTwitter: faTwitter,\n faRockrms: faRockrms,\n faPinterest: faPinterest,\n faBuffer: faBuffer,\n faNpm: faNpm,\n faYammer: faYammer,\n faBtc: faBtc,\n faDribbble: faDribbble,\n faStumbleuponCircle: faStumbleuponCircle,\n faInternetExplorer: faInternetExplorer,\n faTelegram: faTelegram,\n faTelegramPlane: faTelegramPlane,\n faOldRepublic: faOldRepublic,\n faSquareWhatsapp: faSquareWhatsapp,\n faWhatsappSquare: faWhatsappSquare,\n faNodeJs: faNodeJs,\n faEdgeLegacy: faEdgeLegacy,\n faSlack: faSlack,\n faSlackHash: faSlackHash,\n faMedrt: faMedrt,\n faUsb: faUsb,\n faTumblr: faTumblr,\n faVaadin: faVaadin,\n faQuora: faQuora,\n faReacteurope: faReacteurope,\n faMedium: faMedium,\n faMediumM: faMediumM,\n faAmilia: faAmilia,\n faMixcloud: faMixcloud,\n faFlipboard: faFlipboard,\n faViacoin: faViacoin,\n faCriticalRole: faCriticalRole,\n faSitrox: faSitrox,\n faDiscourse: faDiscourse,\n faJoomla: faJoomla,\n faMastodon: faMastodon,\n faAirbnb: faAirbnb,\n faWolfPackBattalion: faWolfPackBattalion,\n faBuyNLarge: faBuyNLarge,\n faGulp: faGulp,\n faCreativeCommonsSamplingPlus: faCreativeCommonsSamplingPlus,\n faStrava: faStrava,\n faEmber: faEmber,\n faCanadianMapleLeaf: faCanadianMapleLeaf,\n faTeamspeak: faTeamspeak,\n faPushed: faPushed,\n faWordpressSimple: faWordpressSimple,\n faNutritionix: faNutritionix,\n faWodu: faWodu,\n faGooglePay: faGooglePay,\n faIntercom: faIntercom,\n faZhihu: faZhihu,\n faKorvue: faKorvue,\n faPix: faPix,\n faSteamSymbol: faSteamSymbol\n};\n\nexport { icons as fab, prefix, faMonero, faHooli, faYelp, faCcVisa, faLastfm, faShopware, faCreativeCommonsNc, faAws, faRedhat, faYoast, faCloudflare, faUps, faWpexplorer, faDyalog, faBity, faStackpath, faBuysellads, faFirstOrder, faModx, faGuilded, faVnv, faSquareJs, faJsSquare, faMicrosoft, faQq, faOrcid, faJava, faInvision, faCreativeCommonsPdAlt, faCentercode, faGlideG, faDrupal, faHireAHelper, faCreativeCommonsBy, faUnity, faWhmcs, faRocketchat, faVk, faUntappd, faMailchimp, faCss3Alt, faSquareReddit, faRedditSquare, faVimeoV, faContao, faSquareFontAwesome, faDeskpro, faSistrix, faSquareInstagram, faInstagramSquare, faBattleNet, faTheRedYeti, faSquareHackerNews, faHackerNewsSquare, faEdge, faNapster, faSquareSnapchat, faSnapchatSquare, faGooglePlusG, faArtstation, faMarkdown, faSourcetree, faGooglePlus, faDiaspora, faFoursquare, faStackOverflow, faGithubAlt, faPhoenixSquadron, faPagelines, faAlgolia, faRedRiver, faCreativeCommonsSa, faSafari, faGoogle, faSquareFontAwesomeStroke, faFontAwesomeAlt, faAtlassian, faLinkedinIn, faDigitalOcean, faNimblr, faChromecast, faEvernote, faHackerNews, faCreativeCommonsSampling, faAdversal, faCreativeCommons, faWatchmanMonitoring, faFonticons, faWeixin, faShirtsinbulk, faCodepen, faGitAlt, faLyft, faRev, faWindows, faWizardsOfTheCoast, faSquareViadeo, faViadeoSquare, faMeetup, faCentos, faAdn, faCloudsmith, faPiedPiperAlt, faSquareDribbble, faDribbbleSquare, faCodiepie, faNode, faMix, faSteam, faCcApplePay, faScribd, faOpenid, faInstalod, faExpeditedssl, faSellcast, faSquareTwitter, faTwitterSquare, faRProject, faDelicious, faFreebsd, faVuejs, faAccusoft, faIoxhost, faFonticonsFi, faAppStore, faCcMastercard, faItunesNote, faGolang, faKickstarter, faGrav, faWeibo, faUncharted, faFirstdraft, faSquareYoutube, faYoutubeSquare, faWikipediaW, faWpressr, faRendact, faAngellist, faGalacticRepublic, faNfcDirectional, faSkype, faJoget, faFedora, faStripeS, faMeta, faLaravel, faHotjar, faBluetoothB, faStickerMule, faCreativeCommonsZero, faHips, faBehance, faReddit, faDiscord, faChrome, faAppStoreIos, faCcDiscover, faWpbeginner, faConfluence, faMdb, faDochub, faAccessibleIcon, faEbay, faAmazon, faUnsplash, faYarn, faSquareSteam, faSteamSquare, fa500px, faSquareVimeo, faVimeoSquare, faAsymmetrik, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faGratipay, faApple, faHive, faGitkraken, faKeybase, faApplePay, faPadlet, faAmazonPay, faSquareGithub, faGithubSquare, faStumbleupon, faFedex, faPhoenixFramework, faShopify, faNeos, faHackerrank, faResearchgate, faSwift, faAngular, faSpeakap, faAngrycreative, faYCombinator, faEmpire, faEnvira, faSquareGitlab, faGitlabSquare, faStudiovinari, faPiedPiper, faWordpress, faProductHunt, faFirefox, faLinode, faGoodreads, faSquareOdnoklassniki, faOdnoklassnikiSquare, faJsfiddle, faSith, faThemeisle, faPage4, faHashnode, faReact, faCcPaypal, faSquarespace, faCcStripe, faCreativeCommonsShare, faBitcoin, faKeycdn, faOpera, faItchIo, faUmbraco, faGalacticSenate, faUbuntu, faDraft2digital, faStripe, faHouzz, faGg, faDhl, faSquarePinterest, faPinterestSquare, faXing, faBlackberry, faCreativeCommonsPd, faPlaystation, faQuinscape, faLess, faBloggerB, faOpencart, faVine, faPaypal, faGitlab, faTypo3, faRedditAlien, faYahoo, faDailymotion, faAffiliatetheme, faPiedPiperPp, faBootstrap, faOdnoklassniki, faNfcSymbol, faEthereum, faSpeakerDeck, faCreativeCommonsNcEu, faPatreon, faAvianex, faEllo, faGofore, faBimobject, faFacebookF, faSquareGooglePlus, faGooglePlusSquare, faMandalorian, faFirstOrderAlt, faOsi, faGoogleWallet, faDAndDBeyond, faPeriscope, faFulcrum, faCloudscale, faForumbee, faMizuni, faSchlix, faSquareXing, faXingSquare, faBandcamp, faWpforms, faCloudversify, faUsps, faMegaport, faMagento, faSpotify, faOptinMonster, faFly, faAviato, faItunes, faCuttlefish, faBlogger, faFlickr, faViber, faSoundcloud, faDigg, faTencentWeibo, faSymfony, faMaxcdn, faEtsy, faFacebookMessenger, faAudible, faThinkPeaks, faBilibili, faErlang, faCottonBureau, faDashcube, fa42Group, faInnosoft, faStackExchange, faElementor, faSquarePiedPiper, faPiedPiperSquare, faCreativeCommonsNd, faPalfed, faSuperpowers, faResolving, faXbox, faSearchengin, faTiktok, faSquareFacebook, faFacebookSquare, faRenren, faLinux, faGlide, faLinkedin, faHubspot, faDeploydog, faTwitch, faRavelry, faMixer, faSquareLastfm, faLastfmSquare, faVimeo, faMendeley, faUniregistry, faFigma, faCreativeCommonsRemix, faCcAmazonPay, faDropbox, faInstagram, faCmplid, faFacebook, faGripfire, faJediOrder, faUikit, faFortAwesomeAlt, faPhabricator, faUssunnah, faEarlybirds, faTradeFederation, faAutoprefixer, faWhatsapp, faSlideshare, faGooglePlay, faViadeo, faLine, faGoogleDrive, faServicestack, faSimplybuilt, faBitbucket, faImdb, faDeezer, faRaspberryPi, faJira, faDocker, faScreenpal, faBluetooth, faGitter, faDAndD, faMicroblog, faCcDinersClub, faGgCircle, faPiedPiperHat, faKickstarterK, faYandex, faReadme, faHtml5, faSellsy, faSass, faWirsindhandwerk, faWsh, faBuromobelexperte, faSalesforce, faOctopusDeploy, faMedapps, faNs8, faPinterestP, faApper, faFortAwesome, faWaze, faCcJcb, faSnapchat, faSnapchatGhost, faFantasyFlightGames, faRust, faWix, faSquareBehance, faBehanceSquare, faSupple, faRebel, faCss3, faStaylinked, faKaggle, faSpaceAwesome, faDeviantart, faCpanel, faGoodreadsG, faSquareGit, faGitSquare, faSquareTumblr, faTumblrSquare, faTrello, faCreativeCommonsNcJp, faGetPocket, faPerbyte, faGrunt, faWeebly, faConnectdevelop, faLeanpub, faBlackTie, faThemeco, faPython, faAndroid, faBots, faFreeCodeCamp, faHornbill, faJs, faIdeal, faGit, faDev, faSketch, faYandexInternational, faCcAmex, faUber, faGithub, faPhp, faAlipay, faYoutube, faSkyatlas, faFirefoxBrowser, faReplyd, faSuse, faJenkins, faTwitter, faRockrms, faPinterest, faBuffer, faNpm, faYammer, faBtc, faDribbble, faStumbleuponCircle, faInternetExplorer, faTelegram, faTelegramPlane, faOldRepublic, faSquareWhatsapp, faWhatsappSquare, faNodeJs, faEdgeLegacy, faSlack, faSlackHash, faMedrt, faUsb, faTumblr, faVaadin, faQuora, faReacteurope, faMedium, faMediumM, faAmilia, faMixcloud, faFlipboard, faViacoin, faCriticalRole, faSitrox, faDiscourse, faJoomla, faMastodon, faAirbnb, faWolfPackBattalion, faBuyNLarge, faGulp, faCreativeCommonsSamplingPlus, faStrava, faEmber, faCanadianMapleLeaf, faTeamspeak, faPushed, faWordpressSimple, faNutritionix, faWodu, faGooglePay, faIntercom, faZhihu, faKorvue, faPix, faSteamSymbol };\n","var prefix = \"fas\";\nvar fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"]\n};\nvar fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nvar fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [448, 512, [], \"33\", \"M64 64c0-17.7 14.3-32 32-32H336c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L226.3 208H248c75.1 0 136 60.9 136 136s-60.9 136-136 136H169.4c-42.4 0-81.2-24-100.2-61.9l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H248c39.8 0 72-32.2 72-72s-32.2-72-72-72H144c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L253.7 96H96C78.3 96 64 81.7 64 64z\"]\n};\nvar fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"]\n};\nvar fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nvar fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM64 320c0-53 43-96 96-96s96 43 96 96s-43 96-96 96s-96-43-96-96z\"]\n};\nvar fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192c0 53 43 96 96 96s96-43 96-96s-43-96-96-96s-96 43-96 96zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nvar faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM384 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"]\n};\nvar faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M32 32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H160 32zm470.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faCommentAlt = faMessage;\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M144 80c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M473 7c-9.4-9.4-24.6-9.4-33.9 0l-87 87L313 55c-6.9-6.9-17.2-8.9-26.2-5.2S272 62.3 272 72V216c0 13.3 10.7 24 24 24H440c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-39-39 87-87c9.4-9.4 9.4-24.6 0-33.9L473 7zM216 272H72c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39L7 439c-9.4 9.4-9.4 24.6 0 33.9l32 32c9.4 9.4 24.6 9.4 33.9 0l87-87 39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V296c0-13.3-10.7-24-24-24z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"]\n};\nvar faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 160c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM492.7 300.7c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [640, 512, [], \"e4c2\", \"M64 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32C46.3 32 32 46.3 32 64s14.3 32 32 32zM41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 237.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L448 237.3 448 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nvar faSortDesc = faSortDown;\nvar faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480v32h32 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"]\n};\nvar faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96C43 32 0 75 0 128V384c0 53 43 96 96 96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32h64zM504.5 273.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32H320v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [9883], \"f5d2\", \"M258.9 412.3c-16.7 33.8-31 35.7-34.9 35.7s-18.1-1.9-34.9-35.7c11.4-3.9 23.1-8.4 34.9-13.5c11.8 5.1 23.4 9.7 34.9 13.5zM252.8 312c-9.7 5.8-19.3 11.2-28.8 16c-9.4-4.8-19-10.2-28.8-16c-12.1-7.3-23.6-14.8-34.2-22.4c-.7-10.8-1-22-1-33.6s.4-22.7 1-33.6c10.6-7.6 22.1-15.1 34.2-22.4c9.7-5.8 19.3-11.2 28.8-16c9.4 4.8 19 10.2 28.8 16c12.1 7.3 23.6 14.8 34.2 22.4c.7 10.8 1 22 1 33.6s-.4 22.7-1 33.6c-10.6 7.6-22.1 15.1-34.2 22.4zm184.8 72c20.7-37.1 9.4-82.8-23.6-128c33-45.2 44.3-90.9 23.6-128c-20.2-36.3-62.5-49.3-115.2-43.2C300.4 32.7 266.8 0 224 0s-76.4 32.7-98.4 84.8c-52.7-6.1-95 6.8-115.2 43.2C-10.3 165.1 1 210.8 34 256C1 301.2-10.3 346.9 10.4 384c20.2 36.3 62.5 49.3 115.2 43.2c22 52.1 55.7 84.8 98.4 84.8s76.4-32.7 98.4-84.8c52.7 6.1 95-6.8 115.2-43.2zm-67.8-79.2c18.9 30.2 14.2 44 11.9 48.1c-1.6 2.9-8.4 13-40.2 11.7c2.8-13.1 5-26.9 6.7-41.2c7.6-6.1 14.8-12.3 21.6-18.6zm11.9-145.7c2.3 4.2 7 17.9-11.9 48.1c-6.8-6.3-14-12.5-21.6-18.6c-1.7-14.3-3.9-28-6.7-41.2c31.8-1.4 38.6 8.7 40.2 11.7zM224 64c3.9 0 18.1 1.9 34.9 35.7c-11.4 3.9-23.1 8.4-34.9 13.5c-11.8-5.1-23.4-9.7-34.9-13.5C205.9 65.9 220.1 64 224 64zM106.5 147.5c-2.8 13.1-5 26.9-6.7 41.2c-7.6 6.1-14.8 12.3-21.6 18.6C59.4 177 64 163.3 66.3 159.1c1.6-2.9 8.4-13 40.2-11.7zM66.3 352.9c-2.3-4.2-7-17.9 11.9-48.1c6.8 6.3 14 12.5 21.6 18.6c1.7 14.2 3.9 28 6.7 41.2c-31.8 1.4-38.6-8.7-40.2-11.7zM224 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM416 32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [576, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M532.3 7.3C539.7 13.3 544 22.4 544 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L384 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM106.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L245.3 304H272c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48h26.7zM224 408c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM510.7 278.3L472.3 368H528c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L423.7 400H368c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L51.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c69.3 0 130.6 33.8 168.5 86c7.8 10.7 22.8 13.1 33.5 5.3s13.1-22.8 5.3-33.5C416.8 41.7 341.3 0 256 0C114.6 0 0 114.6 0 256v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8c0-18.1-1.9-35.8-5.5-52.9zM222.1 128.2c10.8-2.9 22.1-4.4 33.9-4.4c73 0 132.2 59.2 132.2 132.2c0 31.1-1.9 62.4-3.9 86c-1 11.8-2 21.6-2.7 28.4c-.4 3.4-.7 6.1-.9 7.9l-.2 2-.1 .5 0 .1 0 0 0 0c-1.6 13.2 7.7 25.1 20.8 26.8s25.1-7.7 26.8-20.8l-23.8-3c23.8 3 23.8 3 23.8 3l0 0 0 0 0 0 0-.2 .1-.6 .3-2.2c.2-1.9 .5-4.8 .9-8.3c.8-7.2 1.8-17.4 2.8-29.6c2-24.4 4.1-57.1 4.1-90c0-99.5-80.7-180.2-180.2-180.2c-15.9 0-31.4 2.1-46.2 6c-12.8 3.4-20.5 16.5-17.1 29.3s16.5 20.5 29.3 17.1zm-74.5 52.1c7.6-10.9 5-25.8-5.9-33.4s-25.8-5-33.4 5.9C87.9 182 75.8 217.6 75.8 256c0 30.1-3.8 58.6-7.6 79.7c-1.9 10.5-3.8 19.1-5.2 24.9c-.7 2.9-1.3 5.2-1.7 6.7c-.2 .7-.3 1.3-.4 1.6l-.1 .4 0 .1 0 0c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5L83.8 376c23.1 6.6 23.1 6.6 23.1 6.6l0 0 0 0 0-.1 0-.2 .2-.6c.1-.5 .3-1.2 .6-2.1c.5-1.8 1.2-4.4 1.9-7.7c1.6-6.6 3.7-16.1 5.8-27.6c4.2-22.9 8.4-54.4 8.4-88.3c0-28.2 8.8-54.3 23.8-75.7zM256 200c30.9 0 56 25.1 56 56c0 47.1-2.7 86.3-5.5 113.6c-1.4 13.7-2.7 24.3-3.7 31.6c-.5 3.6-.9 6.3-1.2 8.1c-.1 .9-.2 1.6-.3 2l-.1 .5 0 .1 0 0 0 0 0 0c-2.3 13.1 6.5 25.5 19.5 27.8s25.5-6.4 27.8-19.5L324.8 416c23.6 4.1 23.6 4.1 23.6 4.1l0 0 0 0 0-.1 0-.2 .1-.7c.1-.6 .2-1.4 .4-2.4c.3-2.1 .8-5.1 1.3-9c1.1-7.8 2.5-19.1 4-33.4c2.9-28.7 5.7-69.5 5.7-118.4c0-57.4-46.6-104-104-104s-104 46.6-104 104c0 46.7-3.9 83.4-7.7 108.4c-1.9 12.5-3.8 21.9-5.2 28.2c-.7 3.1-1.3 5.5-1.6 6.9c-.2 .7-.3 1.3-.4 1.6l-.1 .3c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5L160 408c23.1 6.6 23.1 6.6 23.1 6.6l0 0 0 0 0-.1 .1-.2 .2-.7c.1-.5 .3-1.3 .6-2.3c.5-2 1.2-4.8 2-8.4c1.6-7.2 3.7-17.8 5.8-31.3c3-19.2 5.9-44.6 7.3-75.3c.6-12.6 .9-26 .9-40.3c0-30.9 25.1-56 56-56zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 45.4-2.6 83.4-6.3 114.5L202 478.3l0 0c-5.3 12.1 .1 26.2 12.2 31.6c12.1 5.4 26.3-.1 31.7-12.2L224 488c21.9 9.7 21.9 9.7 21.9 9.7l0 0 0 0 0-.1 .1-.3 .4-.9c.3-.8 .7-1.8 1.2-3.1c1-2.7 2.4-6.5 4-11.5c3.3-10.1 7.5-24.9 11.7-44.7C271.8 397.3 280 337.6 280 256zM225.7 370.5s0 0 0 0L256 232 225.7 370.5zm0 0c-2.7 22.5-5.9 41.3-9.2 56.6c-3.8 18.2-7.6 31.3-10.3 39.8c-1.4 4.2-2.5 7.3-3.2 9.2c-.4 .9-.6 1.6-.8 2l-.1 .4 23.6-107.9z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm64-64c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h48c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32H160C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64v88c0 22.1-17.9 40-40 40s-40-17.9-40-40V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v56c0 39.8 32.2 72 72 72z\"]\n};\nvar faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-48 0c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"]\n};\nvar faStepForward = faForwardStep;\nvar faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [127937], \"f11e\", \"M32 0C46.3 0 58.4 9.4 62.5 22.3l.1 0-.1 .1 .1 .3 0-.4C89.8 11.5 128.1 0 168 0c38.8 0 74.6 9.1 105.7 17C306 25.2 332.9 32 360 32c26.8 0 52.9-6.8 73-14.1c9.9-3.6 17.9-7.2 23.4-9.8c2.7-1.3 4.8-2.4 6.2-3.1c.7-.4 1.1-.6 1.4-.8l.2-.1c9.9-5.6 22.1-5.6 31.9 .2S512 20.6 512 32V320c0 12.1-6.8 23.2-17.7 28.6L480 320c14.3 28.6 14.3 28.6 14.3 28.6l0 0 0 0-.1 0-.2 .1-.7 .4c-.6 .3-1.5 .7-2.5 1.2c-2.2 1-5.2 2.4-9 4c-7.7 3.3-18.5 7.6-31.5 11.9C424.5 374.9 388.8 384 352 384c-37 0-65.2-9.4-89-17.3l-1-.3c-24-8-43.7-14.4-70-14.4c-27.9 0-64.7 7.2-96.2 15c-12.1 3-23 6-31.8 8.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 72 32C0 14.3 14.3 0 32 0zM64 158.4c17.5-4.9 40.4-10.7 64-15.2V68.8c-15 3.3-29.3 8.1-42 13c-8.5 3.4-16 6.7-22 9.6v67zm0 80v70.8c5.1-1.4 10.6-2.8 16.2-4.2c14.3-3.6 30.8-7.3 47.8-10.4V223.1c21.9-4.2 44.4-7.1 64-7.1c5.6 0 10.9 .2 16 .7v71.9c29.5 2.2 53 10 73.3 16.8l.9 .3c2 .7 3.9 1.3 5.8 1.9v-69-1.4c19 5.9 39.1 10.8 64 10.8c5.3 0 10.7-.2 16-.6v71.9c22-2 43.9-7.6 61.9-13.6c6.8-2.3 12.9-4.6 18.1-6.6V229.2c-20.9 7.5-49.9 15.8-80 18.1v-80c30.1-2.3 59.1-10.6 80-18.1V80.5c-21.6 7.3-49.5 14.3-80 15.4v71.5c-5.3 .4-10.7 .6-16 .6c-24.9 0-45-4.9-64-10.8V86.5c-9.3-2.1-18.3-4.4-27-6.7l-3.1-.8c-17.4-4.4-33.8-8.5-49.9-11.3v69c-5.1-.4-10.4-.7-16-.7c-19.6 0-42.1 3-64 7.1v80c-23.6 4.5-46.5 10.3-64 15.2zM208 136.7v80c24.4 2.1 44.3 8.7 64.2 15.3l0 0c5.2 1.7 10.5 3.5 15.8 5.2v-80c-5.3-1.7-10.6-3.4-15.8-5.2l0 0c-19.9-6.6-39.8-13.2-64.2-15.3z\"]\n};\nvar faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faFootballBall = faFootball;\nvar faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4l-139 92.7L37.6 126C15.6 130.9 0 150.3 0 172.8V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V172.8c0-22.5-15.6-42-37.6-46.9L476.8 98.1 337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"]\n};\nvar faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64z\"]\n};\nvar faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 240c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zM144 336c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm392-40c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nvar faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zM144 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"]\n};\nvar faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nvar faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"]\n};\nvar faMale = faPerson;\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 224H96c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H80c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8H96c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H80c-22.1 0-40-17.9-40-40V264c0-22.1 17.9-40 40-40zm72 46.4c0-25.6 20.8-46.4 46.4-46.4H216c8.8 0 16 7.2 16 16s-7.2 16-16 16H198.4c-7.9 0-14.4 6.4-14.4 14.4c0 5.2 2.8 9.9 7.2 12.5l25.4 14.5c14.4 8.3 23.4 23.6 23.4 40.3c0 25.6-20.8 46.4-46.4 46.4H168c-8.8 0-16-7.2-16-16s7.2-16 16-16h25.6c7.9 0 14.4-6.4 14.4-14.4c0-5.2-2.8-9.9-7.2-12.5l-25.4-14.5C160.9 302.4 152 287 152 270.4zM280 240v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V240c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"]\n};\nvar faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 400c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM384 376c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm0 32c70.7 0 128-57.3 128-128s-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128zm0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM403 336.5c5.1-11.8-6.9-22.4-19.2-18.7C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [512, 512, [], \"f55c\", \"M192 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H334.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H192V208.5zM320 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L398.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C406 314.1 416 347.9 416 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H108.1c-17.3 0-34.2-7.1-43.8-21.5C43.9 460.1 32 423.4 32 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h16H304h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"]\n};\nvar faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [576, 512, [\"mail-bulk\"], \"f674\", \"M96 0C78.3 0 64 14.3 64 32V224h96V192c0-35.3 28.7-64 64-64H448V32c0-17.7-14.3-32-32-32H96zM224 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H544c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H224zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM32 256c-17.7 0-32 14.3-32 32v13L155.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L320 301V288c0-17.7-14.3-32-32-32H32zm288 84.8L184 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L0 340.8V480c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V340.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nvar faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M421.7 220.3l-11.3 11.3-22.6 22.6-205 205c-6.6 6.6-14.8 11.5-23.8 14.1L30.8 511c-8.4 2.5-17.5 .2-23.7-6.1S-1.5 489.7 1 481.2L38.7 353.1c2.6-9 7.5-17.2 14.1-23.8l205-205 22.6-22.6 11.3-11.3 33.9 33.9 62.1 62.1 33.9 33.9zM96 353.9l-9.3 9.3c-.9 .9-1.6 2.1-2 3.4l-25.3 86 86-25.3c1.3-.4 2.5-1.1 3.4-2l9.3-9.3H112c-8.8 0-16-7.2-16-16V353.9zM453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-14.5 14.5-22.6 22.6-11.3 11.3-33.9-33.9-62.1-62.1L314.3 67.7l11.3-11.3 22.6-22.6 14.5-14.5c25-25 65.5-25 90.5 0z\"]\n};\nvar faPencilAlt = faPencil;\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V256H416c-17.7 0-32-14.3-32-32V128H320 272zM160 88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm256 40v96h96l-96-96z\"]\n};\nvar faFileClipboard = faPaste;\nvar faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80c0-13.3-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24s24-10.7 24-24zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm328 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M101.5 64C114.6 26.7 150.2 0 192 0s77.4 26.7 90.5 64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h37.5zM224 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM160 368c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM96 392c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm64-120c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM96 296c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-24c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm88 32c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 396 61.3 324.1 142.7 307.6l68.5 91.4c6.4 8.5 19.2 8.5 25.6 0l68.5-91.4C386.7 324.1 448 396 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"]\n};\nvar faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"]\n};\nvar faTorah = faScrollTorah;\nvar faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [640, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M633.3 12.4c10.8 14 8.3 34.1-5.6 44.9l-144 112-72 56L403 232l28.3 36.3c3.7 4.8 4.4 11.2 1.8 16.7s-8.1 9-14.1 9.1l-48 .9L292.3 194.2l12.5-46.3c1.6-5.9 6.3-10.3 12.3-11.5s12 1.1 15.8 5.8l30.8 39.4 8.7-6.8 72-56 144-112c13.9-10.9 34.1-8.3 44.9 5.6zM269.1 476.3c-55.5 43.4-215 34.2-252.3 31.4c-5.1-.4-9.7-2.9-12.8-7s-4.5-9.1-3.6-14.1c.5-3.2 1.3-7.2 2.2-12.1c3-16.5 10.8-31.6 21.9-44.1l73.5-82.5c3.1-3.5 3.2-8.6 .4-12.3s-7.9-4.7-12-2.6L47.3 353.5c-6.3 3.3-13.4-2.7-11-9.4c14.3-39.9 32.7-76.9 55.5-94.7c57.7-45.1 175.3-35.5 175.3-35.5l78.8 100.9s-19.1 116.4-76.8 161.5zM496 512c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArchive = faBoxArchive;\nvar faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM352 320c0 17.7 14.3 32 32 32h16v64H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-17.7-14.3-32-32-32H384c-17.7 0-32 14.3-32 32zm93.7-171.1c-4.2 2-8.8 3.1-13.7 3.1c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32c0 12.8-7.5 23.8-18.3 28.9zm-40.7 54.9l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM320 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM512 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM480 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM384 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.3-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 64H64V384H384V64z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nvar faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88c39.8 0 72-32.2 72-72s-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72zm264-72c0-39.8-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72s72-32.2 72-72zm-240 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm192 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [640, 512, [], \"e57f\", \"M520.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L521.5 72 118.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72C34.9 82.7 32 89.2 32 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L118.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM339.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6s14.9 11.1 24.2 11.1H320V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nvar faLegal = faGavel;\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M192 64c0 35.3-28.7 64-64 64s-64-28.7-64-64S92.7 0 128 0s64 28.7 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM576 64c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l24 0H376c0 13.3 10.7 24 24 24s24-10.7 24-24H400l24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 320c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nvar faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM160 112c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM112 448c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCut = faScissors;\nvar faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 224c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm32-64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"]\n};\nvar faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 320c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80z\"]\n};\nvar faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2C205.1 38.5 189.5 32 173.3 32z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nvar faMailReply = faReply;\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [576, 512, [9770], \"f699\", \"M32 256C32 114.6 146.6 0 288 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C352.6 505.7 321 512 288 512C146.6 512 32 397.4 32 256zM407.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L293 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM453.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 56.7 24.2 76.9C640 437.9 568.7 512 480 512c-89.7 0-160-74.2-160-161.9c0-26.4 12.7-58.6 32.4-90.6c20-32.4 48.1-66.1 81.4-95.8c5.6-5 14.2-5 19.8 0zM530 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 304c-10.1 0-19.6-4.7-25.6-12.8L192 256 47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M184 88c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zM568 88c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm8 157.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 160c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l40 40-71 71C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7l71-71 40 40c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V176c0-8.8-7.2-16-16-16H160z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nvar faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48S32 21.5 32 48s21.5 48 48 48zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm32 224c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4l-139 92.7L37.6 126C15.6 130.9 0 150.3 0 172.8V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V172.8c0-22.5-15.6-42-37.6-46.9L476.8 98.1 337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nvar faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [576, 512, [\"sign-out\"], \"f08b\", \"M534.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L434.7 224 224 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-53 0-96 43-96 96l0 256c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [576, 512, [], \"f740\", \"M128 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C96.7 126.1 96 119.1 96 112C96 50.1 146.1 0 208 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H128zm-14.5 33.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM345.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nvar faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faHeadphonesAlt = faHeadphonesSimple;\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.8 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V304c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.4-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V112c0-11.1-9-20.1-20.1-20.1zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M293.5 3.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C480 280 408.7 352 320 352c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM370 273c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15zM32 288c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32s-14.3 32-32 32v64H544V320c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32V288zM320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm160-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM192 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [127988, 61725], \"f024\", \"M64 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32C0 14.3 14.3 0 32 0S64 14.3 64 32zm40.8 302.8c-3 .9-6 1.7-8.8 2.6V13.5C121.5 6.4 153 0 184 0c36.5 0 68.3 9.1 95.6 16.9l1.3 .4C309.4 25.4 333.3 32 360 32c26.8 0 52.9-6.8 73-14.1c9.9-3.6 17.9-7.2 23.4-9.8c2.7-1.3 4.8-2.4 6.2-3.1c.7-.4 1.1-.6 1.4-.8l.2-.1c9.9-5.6 22.1-5.6 31.9 .2S512 20.6 512 32V288c0 12.1-6.8 23.2-17.7 28.6L480 288c14.3 28.6 14.3 28.6 14.3 28.6l0 0 0 0-.1 0-.2 .1-.7 .4c-.6 .3-1.5 .7-2.5 1.2c-2.2 1-5.2 2.4-9 4c-7.7 3.3-18.5 7.6-31.5 11.9C424.5 342.9 388.8 352 352 352c-37 0-65.2-9.4-89-17.3l-1-.3c-24-8-43.7-14.4-70-14.4c-27.5 0-60.1 7-87.2 14.8z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M137.9 3c-4.5-3.2-10.3-3.9-15.4-1.8s-8.8 6.7-9.7 12.2L98.7 98.7 13.4 112.8c-5.5 .9-10.1 4.6-12.2 9.7S-.2 133.4 3 137.9l50.3 70.3L3 278.5c-3.2 4.5-3.9 10.3-1.8 15.4s6.7 8.8 12.2 9.7l85.3 14.1L112.8 403c.9 5.5 4.6 10.1 9.7 12.2s10.9 1.4 15.4-1.8l55.2-39.5c-19.9-21.9-32.3-50.8-33.1-82.6c-17.6-10.2-32.2-26.1-40.6-46.3c-20.3-49 3-105.1 52-125.4c29.4-12.2 61.4-8.7 86.7 6.7c13.1-21.8 32.5-39.4 55.8-50.3L303.6 13.4c-.9-5.5-4.6-10.1-9.7-12.2S282.9-.2 278.5 3L208.2 53.3 137.9 3zM291.4 415.9c-2.5 .6-5.1 .6-7.6-.1c1.4 0 2.8 .1 4.2 .1h3.5zm-46.3-260c-17.3-12.2-40.4-15.6-61.5-6.9c-32.7 13.5-48.2 51-34.6 83.6c3.6 8.7 8.9 16.1 15.3 22.2c10.6-39.7 39.9-71.8 77.8-86.4c.8-4.3 1.8-8.4 3-12.5zM277.4 420c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm74.5-116.1c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C433.3 114.6 402.8 96 368 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H559.9c44.2 0 80-35.8 80-80z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nvar faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 80c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm44.7 84.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M50.8 452.1L19.2 477.4c-2.1 1.7-4.7 2.6-7.4 2.6C5.3 480 0 474.7 0 468.2V192C0 86 86 0 192 0S384 86 384 192V468.2c0 6.5-5.3 11.8-11.8 11.8c-2.7 0-5.3-.9-7.4-2.6l-31.6-25.3c-3.3-2.7-7.5-4.1-11.8-4.1c-5.9 0-11.5 2.8-15 7.5l-37.6 50.1c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4l-38.4-51.2c-3-4-7.8-6.4-12.8-6.4s-9.8 2.4-12.8 6.4l-38.4 51.2c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L77.6 455.5c-3.6-4.7-9.1-7.5-15-7.5c-4.3 0-8.4 1.5-11.7 4.1zM160 192c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"]\n};\nvar faListSquares = faList;\nvar faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H179.9l-9.1-48h317c14.3 0 26.9-9.5 30.8-23.3l54-192C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm336-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM252 160c0-11 9-20 20-20h44V96c0-11 9-20 20-20s20 9 20 20v44h44c11 0 20 9 20 20s-9 20-20 20H356v44c0 11-9 20-20 20s-20-9-20-20V180H272c-11 0-20-9-20-20z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 248c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm-24 56c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"]\n};\nvar faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-160c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-96c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 410 0 304C0 192 96 16 192 16s192 176 192 288c0 106-86 192-192 192zM156.5 138l0 0 0 0 0 0c5.5-6.9 4.4-17-2.5-22.5s-17-4.4-22.5 2.5L144 128c-12.5-10-12.5-10-12.5-10l0 0 0 0-.1 .1-.2 .2-.6 .8c-.5 .7-1.3 1.7-2.2 3c-1.9 2.6-4.5 6.3-7.7 11c-6.3 9.4-14.6 23-23 39.7C81.1 206.1 64 252.6 64 304c0 8.8 7.2 16 16 16s16-7.2 16-16c0-44.6 14.9-86.1 30.3-116.8c7.6-15.3 15.3-27.7 21-36.3c2.8-4.3 5.2-7.6 6.8-9.8c.8-1.1 1.4-1.9 1.8-2.4l.4-.6 .1-.1 0 0z\"]\n};\nvar faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm22.6-144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M371.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L600.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S549.7-4.4 531.1 9.6L294.4 187.2c-24 18-38.2 46.1-38.4 76.1L371.3 367.1zm-19.6 25.4l-116-104.4C175.9 290.3 128 339.6 128 400c0 3.9 .2 7.8 .6 11.6c1.8 17.5-10.2 36.4-27.8 36.4H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H240c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128c35.3 0 64-28.7 64-64S99.3 0 64 0S0 28.7 0 64s28.7 64 64 64z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nvar faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84.1 96c0-11.1-9-20.1-20.1-20.1s-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.8 4.1c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0 0 0c-2.2-.8-4.3-1.5-6.3-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V416c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.4-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V224z\"]\n};\nvar faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.8 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"]\n};\nvar faEdit = faPenToSquare;\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zm-2.9 207c-6.6 18.6-24.4 32-45.3 32s-38.7-13.4-45.3-32c-1.8-5-2.7-10.4-2.7-16c0-26.5 21.5-48 48-48s48 21.5 48 48c0 5.6-1 11-2.7 16zM160 432c-20.9 0-38.7-13.4-45.3-32c-1.8-5-2.7-10.4-2.7-16c0-26.5 21.5-48 48-48s48 21.5 48 48c0 5.6-1 11-2.7 16c-6.6 18.6-24.4 32-45.3 32z\"]\n};\nvar faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.2 14.9H112z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M168 32c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32h8c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32h-8c0 17.7-14.3 32-32 32H200c-17.7 0-32-14.3-32-32h-8c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32l8 0zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"]\n};\nvar faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 96c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm200-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"]\n};\nvar faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M304 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM248 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 160c-44.2 0-80-35.8-80-80S99.8 0 144 0s80 35.8 80 80s-35.8 80-80 80zm368 0c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM416 224c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5z\"]\n};\nvar faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"]\n};\nvar faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"]\n};\nvar faHandPaper = faHand;\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5 0-.1c-2.6-7.8-10.7-12.3-18.7-10.5C4.4 354.2-.9 361.8 .1 370L16 368C.1 370 .1 370 .1 370l0 0 0 0 0 .1 .1 .4c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.3 0 0c0 0 0 0 0 0c-1.9-7.3-8.6-12.4-16.2-12.1c-7.6 .3-13.9 5.9-15.1 13.4L336 368c-15.8-2.6-15.8-2.6-15.8-2.6l0 0 0 0 0 .1-.1 .3c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4zM280.9 66.7c-6-4-14-3.5-19.5 1.3s-7 12.7-3.7 19.2L272 80c-14.3 7.2-14.3 7.2-14.3 7.2l0 0 0 0 0 .1 .1 .2 .4 .7c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.4-12.4-32.6-12.5-45.1-.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2 0 0 0 0 0 0z\"]\n};\nvar faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [448, 512, [], \"e599\", \"M224 96c0-53 43-96 96-96h38.4C407.9 0 448 40.1 448 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H320c-53 0-96-43-96-96zm144-8c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faKiss = faFaceKiss;\nvar faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-16c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V416H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 160c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64-64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM352 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM320 384c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm64 120c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"]\n};\nvar faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"]\n};\nvar faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"]\n};\nvar faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nvar faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [384, 512, [129463], \"f5c9\", \"M154.1 52.1C137.3 39.1 116.7 32 95.5 32C42.7 32 0 74.7 0 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2L80.4 460.2c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C160.2 323.7 175 312 192 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nvar faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [448, 512, [118], \"56\", \"M51.7 34.5c16.3-6.8 35 .9 41.8 17.2L224 364.8 354.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7l-160-384c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"]\n};\nvar faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.2 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.3 319.8c22.3-2.1 39.7-20.8 39.7-43.7c0-10-3.4-19.6-9.6-27.4l-42-52.6c-8.3-10.3-12.8-23-15-36.1C398.2 69.3 319.2 0 224 0H201.7C157 0 115.7 14.5 82.2 39.2L38.8 5.1zM0 201.7c0 44.8 18.3 91.5 46.5 127.7C56.9 342.8 64 358.8 64 375.8V480c0 17.7 14.3 32 32 32H256c17.7 0 32-14.3 32-32h64c32.8 0 59.9-24.7 63.6-56.6l-9.4-7.4H352c-17.7 0-32-14.3-32-32c0-10.5 5.1-19.9 12.9-25.7L20.8 112.4C7.5 139.3 0 169.6 0 201.7zM632 288c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm-88 72c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm64 48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM208 416c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM112 144c0-8.8 7.2-16 16-16h48V80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240v48c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16V192H128c-8.8 0-16-7.2-16-16V144z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [576, 512, [9731, 9924], \"f7d0\", \"M373.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L440 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C428.7 296.9 448 338.2 448 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H213.3c-13.9 0-27.7-4.2-37.5-13.9C146.3 469 128 428.7 128 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3l-73.6-31.5-56-24c-12.2-5.2-17.8-19.3-12.6-31.5s19.3-17.8 31.5-12.6L88 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L184.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C196 127.2 192 112.1 192 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM256 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm48 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm-16 80c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm16 48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM320 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4l-139 92.7L37.6 126C15.6 130.9 0 150.3 0 172.8V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V172.8c0-22.5-15.6-42-37.6-46.9L476.8 98.1 337.8 5.4zM256 416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H256V416zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM408 176c0 48.6-39.4 88-88 88s-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88zm-88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 96c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [512, 512, [113], \"51\", \"M96 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C403.9 325.8 416 292.3 416 256c0-88.4-71.6-160-160-160S96 167.6 96 256zM376.9 444.6C342 467 300.5 480 256 480C132.3 480 32 379.7 32 256S132.3 32 256 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32c0 123.7-100.3 224-224 224S0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"]\n};\nvar faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V200c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM256 288c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 44.3-35.8 80.1-80 80.1c-1.4 0-2.8 .2-4 .5H128c-35.3 0-64 28.7-64 64c0 12.4 3.5 24 9.7 33.8C31.6 234.3 0 271.5 0 316c0 49.1 38.5 89.2 86.9 91.9c-1.8-2.9-3.4-6.1-4.5-9.4c-6-17.5-.5-36.9 13.6-48.5L238.2 233.6c15.6-12.8 37.9-12.7 53.5 .1s20.3 35.1 11.3 53.4l-26 53.2h16.3c18.1 0 34.3 11.7 40.3 29.2c4.5 13.1 2.6 27.3-4.6 38.4h27c50.8 0 92-41.2 92-92c0-44.5-31.6-81.7-73.7-90.2c6.1-9.8 9.7-21.4 9.7-33.8c0-35.3-28.7-64-64-64h-5.7c3.7-10.2 5.7-21.1 5.7-32.6c0-48.7-36.1-88.9-83.1-95.2zm34.2 259.2c-6-4.6-14.3-4.4-20.1 .4l-133.4 112c-5.2 4.3-7 11.4-4.7 17.7s8.3 10.5 15 10.5h54.7l-42.5 89.1c-3.2 6.8-1.3 14.9 4.7 19.5s14.3 4.4 20.1-.4l133.4-112c5.1-4.3 7-11.4 4.7-17.7s-8.3-10.5-15-10.5H233.3l42.5-89.1c3.2-6.8 1.3-14.9-4.7-19.5z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm-186 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nvar faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192s192-86 192-192zm64 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0 64c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm32-144c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"]\n};\nvar faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 53 43 96 96 96H352c53 0 96-43 96-96V352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [384, 512, [\"file-medical-alt\"], \"f478\", \"M64 0C28.7 0 0 28.7 0 64V288H112c6.1 0 11.6 3.4 14.3 8.8L144 332.2l49.7-99.4c2.7-5.4 8.2-8.8 14.3-8.8s11.6 3.4 14.3 8.8L249.9 288H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8L208 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L102.1 320H0V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 304c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM320 304c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"]\n};\nvar faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm-16 80c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM400 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nvar faPenAlt = faPenClip;\nvar faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"]\n};\nvar faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4l-139 92.7L37.6 126C15.6 130.9 0 150.3 0 172.8V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V172.8c0-22.5-15.6-42-37.6-46.9L476.8 98.1 337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"]\n};\nvar faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM160 432c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zm40-176c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 21 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nvar faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm8 256V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nvar faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nvar faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 464c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 272c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM160 384c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"]\n};\nvar faAreaChart = faChartArea;\nvar faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"]\n};\nvar faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm424 16c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-64 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faCancel = faBan;\nvar faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [512, 512, [], \"e0d8\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM384 256c0 8.8-7.2 16-16 16H291.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L307 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L185 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C193.4 172.7 224 160 256 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM128 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L205 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L327 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C318.6 403.3 288 416 256 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"]\n};\nvar faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 256c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288c61.9 0 112-50.1 112-112s-50.1-112-112-112S64 114.1 64 176s50.1 112 112 112zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nvar faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [448, 512, [\"expand-arrows-alt\"], \"f31e\", \"M168 32H24C10.7 32 0 42.7 0 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79L81 335 41 295c-6.9-6.9-17.2-8.9-26.2-5.2S0 302.3 0 312V456c0 13.3 10.7 24 24 24H168c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H424c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H280c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S177.7 32 168 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512c70.7 0 128-57.3 128-128s-57.3-128-128-128S0 313.3 0 384s57.3 128 128 128z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M336 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM141.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L153.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L254 299l30.9-82.4 5.1 12.3C305 264.7 339.9 288 378.7 288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H378.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L73.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM107.2 352H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L173 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L107.2 352z\"]\n};\nvar faRunning = faPersonRunning;\nvar faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm56-56c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm56-56c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [128375], \"f717\", \"M190.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L113.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4-80.4-26.8c-2.4-.8-4.3-2.7-5.1-5.1L78.8 128.4C74.6 115.8 61 109 48.4 113.2S29 131 33.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L148.1 256 87.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L33.2 368.4C29 381 35.8 394.6 48.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8-57.4 57.4c-15.6 15.6-20.6 39-12.7 59.7l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L192 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L462.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L427.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L430.4 15.4C425.6 3 411.8-3.2 399.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L368 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C226.6 100.7 208 128.2 208 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nvar faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [576, 512, [], \"e4f9\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L99.6 352H96c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H256h64H448h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L441 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C329 209.7 320 233.4 320 258.1V320v32H256V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L64 144.8V96 32zm64 448v32H256V480h64v32H448V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H448 320 256 128 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v16H144c-8.8 0-16 7.2-16 16s7.2 16 16 16h96v32H112c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v32H144c-8.8 0-16 7.2-16 16s7.2 16 16 16h96v32H152c-8.9 0-17 4.9-21.2 12.7s-3.7 17.3 1.2 24.6l32 48C168.5 412 176 416 184 416H328c8 0 15.5-4 20-10.7l32-48c4.9-7.4 5.4-16.8 1.2-24.6S368.9 320 360 320H272V288h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V224H400c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V160h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 384c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm112-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [640, 512, [], \"f891\", \"M144 0c-12.9 0-24.6 7.8-29.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L98.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C168.6 7.8 156.9 0 144 0zm18.7 160H125.3L144 115.2 162.7 160zM288 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H320c-17.7 0-32 14.3-32 32zm96 64H352V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H352V160zM598.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L384 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nvar faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"]\n};\nvar faMouse = faComputerMouse;\nvar faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM344 152c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm96-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zM344 408c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm104-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nvar faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M192 352V48c0-26.5 21.5-48 48-48H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H192zm16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nvar faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [512, 512, [], \"e53a\", \"M256 160c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM468.8 382.8L405.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.7-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L59.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2l67.1-100.6c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM352 332c0-24.3-19.7-44-44-44s-44 19.7-44 44s19.7 44 44 44s44-19.7 44-44z\"]\n};\nvar faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M352 96h64c17.7 0 32 14.3 32 32V384c0 17.7-14.3 32-32 32H352c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c53 0 96-43 96-96V128c0-53-43-96-96-96H352c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-7.5 177.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H160v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M304 176c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192c0-70.7-57.3-128-128-128S96 121.3 96 192s57.3 128 128 128s128-57.3 128-128zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M176 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM144 241.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm77.9 252.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 64c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M288 96c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm58.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"]\n};\nvar faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M384 176c0 70.7-57.3 128-128 128s-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128zm7.8-112C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nvar faWeight = faWeightScale;\nvar faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [9822], \"f441\", \"M32 391.6V416H352V224c0-106-86-192-192-192H12.9C5.8 32 0 37.8 0 44.9c0 2 .5 4 1.4 5.8L16 80 9.4 86.6c-6 6-9.4 14.1-9.4 22.6V242.3c0 13.1 8 24.9 20.1 29.7l46.5 18.6c8.5 3.4 18 3 26.2-1.1l6.6-3.3c8-4 14-11.2 16.5-19.8l8.3-28.9c2.5-8.6 8.4-15.8 16.5-19.8L160 208v40.4c0 24.2-13.7 46.4-35.4 57.2L67.4 334.3C45.7 345.2 32 367.3 32 391.6zM72 148c0 11-9 20-20 20s-20-9-20-20s9-20 20-20s20 9 20 20zM352 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [576, 512, [], \"f193\", \"M224 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM152.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C75.1 225.1 32 283.5 32 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C272 440 234.8 464 192 464c-61.9 0-112-50.1-112-112c0-47.9 30.1-88.8 72.5-104.8zM291.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L434 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H314.2l-9.6-48H368c17.7 0 32-14.3 32-32s-14.3-32-32-32H291.8z\"]\n};\nvar faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM385 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V177.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 103c9.4-9.4 24.6-9.4 33.9 0L385 215z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zM384 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M256 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nvar faWalking = faPersonWalking;\nvar faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-2.8-5.6-5.6-11.2-9.8-16.8l-50.6 58.8s-81.4-103.6-87.1-110.6C133.1 243.8 112 273.2 112 306.8C112 375.4 162.6 416 225.7 416z\"]\n};\nvar faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zM176 320c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faProcedures = faBedPulse;\nvar faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM208.4 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nvar faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM248 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"]\n};\nvar faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.1 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3L365.5 384H160z\"]\n};\nvar faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm22.6-144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M320 128V49.1L186.6 .3c-11.4-4.2-24 .9-29.5 11.7L71.8 181.1c-30.8 61-8 133.8 48.1 167.4l-28 77.4L32.1 403.9C19.7 399.4 6 405.8 1.4 418.3s1.9 26.3 14.3 30.8l164.6 60.3c12.4 4.5 26.1-1.9 30.6-14.4s-1.9-26.3-14.3-30.8l-59.9-21.9 28-77.3c68.1 11.6 135.7-32.8 150.1-103.6l5.1-24.8 5.1 24.8c14.5 70.8 82 115.2 150.1 103.6l28 77.3-59.9 21.9c-12.4 4.5-18.8 18.3-14.3 30.8s18.2 18.9 30.6 14.4l164.6-60.3c12.4-4.5 18.8-18.3 14.3-30.8s-18.2-18.9-30.6-14.4l-59.9 21.9-28-77.4c56.1-33.6 78.8-106.4 48.1-167.4L482.9 12C477.4 1.1 464.7-3.9 453.4 .3L320 49.1V128h0zm-35.7 44.4L153.9 124.6l36.3-71.9L300.6 93.1l-16.2 79.3zm71.3 0L339.4 93.1 449.8 52.7l36.3 71.9L355.7 172.4z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H48C21.5 64 0 85.5 0 112V464c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H282.5C269.4 26.7 233.8 0 192 0zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-80 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"]\n};\nvar faBathtub = faBath;\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faUserEdit = faUserPen;\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M256 496c132.5 0 240-107.5 240-240S388.5 16 256 16S16 123.5 16 256s107.5 240 240 240zM235.3 76.7L256 97.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L278.6 120 324 165.4 357.4 132l-16.7-16.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L380 109.4l8.7-8.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-8.7 8.7 16.7 16.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L380 154.6 346.6 188 392 233.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L414.6 256l20.7 20.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L392 278.6 346.6 324 380 357.4l16.7-16.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L402.6 380l8.7 8.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-8.7-8.7-16.7 16.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L357.4 380 324 346.6 278.6 392l20.7 20.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L256 414.6l-20.7 20.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L233.4 392 188 346.6 154.6 380l16.7 16.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L132 402.6l-8.7 8.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l8.7-8.7L92.7 363.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L132 357.4 165.4 324 120 278.6 99.3 299.3c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L97.4 256 76.7 235.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L120 233.4 165.4 188 132 154.6l-16.7 16.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L109.4 132l-8.7-8.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l8.7 8.7 16.7-16.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L154.6 132 188 165.4 233.4 120 212.7 99.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zM210.6 188L256 233.4 301.4 188 256 142.6 210.6 188zm68 68L324 301.4 369.4 256 324 210.6 278.6 256zM256 278.6L210.6 324 256 369.4 301.4 324 256 278.6zM233.4 256L188 210.6 142.6 256 188 301.4 233.4 256z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"]\n};\nvar faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nvar faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nvar faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm-96 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M312 56c0-30.9-25.1-56-56-56s-56 25.1-56 56s25.1 56 56 56s56-25.1 56-56zM64 480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM34 169.4L9.2 185.8C3.5 189.7 0 196.2 0 203.1c0 3.2 .7 6.4 2.2 9.3L104 416H408L509.8 212.4c1.4-2.9 2.2-6.1 2.2-9.3c0-6.9-3.5-13.4-9.2-17.3L478 169.4c-8.2-5.4-19-4.4-26 2.6c-12.9 12.9-30.9 21.9-48 15.5c-17.9-6.7-28.1-20.1-32.8-35.8C367.5 139 357.3 128 344 128H328c-13.3 0-23.9 11.2-29.6 23.2C292.6 163.4 280.6 176 256 176s-36.6-12.6-42.4-24.8c-5.7-12-16.3-23.2-29.6-23.2H168c-13.3 0-23.5 11-27.3 23.7c-4.7 15.6-14.9 29.1-32.8 35.8c-17 6.4-35.1-2.7-48-15.5c-6.9-6.9-17.8-8-25.9-2.6z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"]\n};\nvar faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368c61.9 0 112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112s50.1 112 112 112zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [512, 512, [\"hands-wash\"], \"e05e\", \"M384 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm80 160c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM128 464c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM357.1 157.5c-.3 .7-.7 1.5-1.1 2.2l-17.8 30.9c-11-12.6-27.4-19.8-44.4-19.1l20.7-35.8c6.6-11.5 21.3-15.4 32.8-8.8c10.8 6.2 14.9 19.5 9.9 30.6zm-173.6 47C112.3 227.2 64 293.3 64 368c0 1.5 0 3 .1 4.5C24.3 346.9 0 302.8 0 255.1V131.5c0-13.3 10.7-24 24-24s24 10.7 24 24l0 81.7L164.2 12c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-64 110.9c-2.2 3.8-.9 8.7 2.9 10.9s8.7 .9 10.9-2.9l80-138.6c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-80 138.6c-2.2 3.8-.9 8.7 2.9 10.9s8.7 .9 10.9-2.9L275 76c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-44 76.2-89.1 28.3zM448 483.5c0 12.4-9.4 22.6-21.5 23.9c-.8 .1-1.6 .1-2.5 .1H223.3 216c-22.1 0-42.9-6-60.7-16.5c3-8.5 4.7-17.6 4.7-27c0-38.7-27.5-71-64-78.4c0-.6 0-1.1 0-1.7c0-1.2-.1-2.5-.1-3.7c0-68 44-128.3 108.9-148.9l83.9-26.7c12.6-4 26.1 3 30.1 15.6s-3 26.1-15.6 30.1l-53.8 17.1H456c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8H456c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8h96c13.3 0 24 10.7 24 24z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 384c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 112c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V0L440.6 23.8C424.3 29.2 407.2 32 390 32H122c-17.2 0-34.3-2.8-50.6-8.2L0 0V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM592 336c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nvar faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64z\"]\n};\nvar faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"]\n};\nvar faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"]\n};\nvar faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"]\n};\nvar faColumns = faTableColumns;\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M0 224.2c0-22.2 3.2-43.6 9.2-63.9l227 165.1C228.5 337.8 224 352.4 224 368V512H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm258.6 77.9L21 129.3C56.7 53 134.2 0 224 0h32c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 4.1-.6 8.1-1.6 11.9H304c-16.9 0-32.5 5.2-45.4 14.1zM352 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM256 512V368c0-26.5 21.5-48 48-48H512l-16 48H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.3l-10.7 32H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H464l-1.4 4.2c-8.7 26.1-33.2 43.8-60.7 43.8H256z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM96 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128zM48 352c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm64 208c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.6 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [640, 512, [\"dolly-box\"], \"f472\", \"M32 32C32 14.3 46.3 0 64 0h72.9c27.5 0 52 17.6 60.7 43.8L289.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L384 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L136.9 64H64C46.3 64 32 49.7 32 32zM276.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L343 79.4l19.8 60.9 60.9-19.8L403.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L366.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L276.8 134.5z\"]\n};\nvar faDollyBox = faDolly;\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"]\n};\nvar faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm216 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm-56-24c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM200 424c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nvar faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"]\n};\nvar faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M304 176c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26H388.7c14.2 0 25.4 12.3 21.7 26C392 382 329.8 432 256 432s-136-50-154.4-118zm116-101.2l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM161.5 169.9c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-59-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"]\n};\nvar faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [384, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M144 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L249 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C137.5 32 80 89.5 80 160.4V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H80v44.5c0 17.4-4.7 34.5-13.7 49.4L36.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S52.5 480 64 480H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H120.5l.7-1.1C136.1 390 144 361.5 144 332.5V288H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V160.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm-48-64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM256 144c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM240 248c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0zM209.1 359.2l-18.6-31c-6.4-10.7 1.3-24.2 13.7-24.2H224h19.7c12.4 0 20.1 13.6 13.7 24.2l-18.6 31 33.4 123.9 39.5-161.2c77.2 12 136.3 78.8 136.3 159.4c0 17-13.8 30.7-30.7 30.7H265.1 182.9 30.7C13.8 512 0 498.2 0 481.3c0-80.6 59.1-147.4 136.3-159.4l39.5 161.2 33.4-123.9z\"]\n};\nvar faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M224 402.7V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V402.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h76.8L384 320V448z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.3-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M117.2 160.4L224 64.3V64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144C3.9 190.3 0 198.9 0 208s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2v-.3L117.2 255.6C103.7 243.4 96 226.1 96 208s7.7-35.4 21.2-47.6zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"]\n};\nvar faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M448 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM408.8 335.4c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM344 304c0 48.6-39.4 88-88 88s-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88z\"]\n};\nvar faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM127 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 214.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 409c-9.4 9.4-24.6 9.4-33.9 0L127 297z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nvar faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm208-16c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"]\n};\nvar faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [640, 512, [], \"e507\", \"M471.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C433.2 261.3 448 236.4 448 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C248.3 46.6 229.9 32 208 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L471.7 401.9zM512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM100.3 87C75.1 61.8 32 79.7 32 115.3V432c0 44.2 35.8 80 80 80H428.7c35.6 0 53.5-43.1 28.3-68.3L100.3 87z\"]\n};\nvar faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm128-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zm396.3 211c-.4-.8-1.3-1.3-2.2-1.3s-1.7 .5-2.2 1.3L435.1 416H588.9L514.2 273.3zM512 224c18.8 0 36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C594.9 498.6 562.2 512 512 512s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L467.3 251c8.7-16.6 25.9-27 44.7-27zM128 144c-.9 0-1.7 .5-2.2 1.3L51.1 288H204.9L130.2 145.3c-.4-.8-1.3-1.3-2.2-1.3zm44.7-21l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C210.9 370.6 178.2 384 128 384s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L83.3 123C92 106.4 109.2 96 128 96s36 10.4 44.7 27z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"]\n};\nvar faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nvar faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM448 208c0 44.2-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nvar faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [512, 512, [], \"e4c0\", \"M329.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L370.7 160H160c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C32 153.3 89.3 96 160 96H370.7L329.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 416H128c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H274.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zM184 296c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zm312 40c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 64c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 78.3 364 32 448 32h32c17.7 0 32 14.3 32 32zM0 128c0-17.7 14.3-32 32-32H64c123.7 0 224 100.3 224 224v32 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C100.3 352 0 251.7 0 128z\"]\n};\nvar faSprout = faSeedling;\nvar faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM215 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L392 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-214.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L103 273c-9.4-9.4-9.4-24.6 0-33.9L215 127z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nvar faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nvar faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l16-64c2.4-9.6 .2-19.7-5.8-27.5S553.9 32 544 32H376.1h-.3H192c-14.7 0-27.5 10-31 24.2l-9.3 37.3L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm92.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12.1 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"]\n};\nvar faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32H384c-17.7 0-32-14.3-32-32V383.7c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32V480c0 17.7-14.3 32-32 32H96.1c-17.7 0-32-14.3-32-32V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 128c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 128c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm-8 256v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H528L284.3 320z\"]\n};\nvar faUserAltSlash = faUserLargeSlash;\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nvar faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSimpleSlash;\nvar faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"]\n};\nvar faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"]\n};\nvar faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.7 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM272 224c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm32 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nvar faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"]\n};\nvar faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"]\n};\nvar faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480c61.4 0 101.6 24 126.2 50c12 12.6 19.9 25.2 24.9 34.9c2.5 4.8 4.3 9 5.5 12.1c.6 1.5 1.1 2.8 1.4 3.8c.2 .5 .3 .9 .4 1.3l.1 .5 .1 .2 0 .1 0 0c0 0 0 0-30.2 9.1l30.2-9.1c5.1 16.9-4.5 34.8-21.5 39.8c-16.8 5-34.5-4.4-39.7-21.1l0 0c-.1-.2-.2-.6-.5-1.2c-.5-1.3-1.4-3.4-2.8-6.1c-2.8-5.4-7.4-12.8-14.4-20.1c-4.2-4.4-9.4-9-15.8-13.2V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zm129.4-70.8c0 0 0 0 30.6-9.2l-30.6 9.2 0 0zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nvar faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [576, 512, [9975, \"skiing\"], \"f7c9\", \"M508.7 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM34.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L264.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L321.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L44.9 301.3c-11.8-6.1-16.3-20.6-10.2-32.4zM150.9 65.6L169 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L183.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [448, 512, [97], \"41\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM296 320H152l72-172.8L296 320z\"]\n};\nvar faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [512, 512, [\"temperature-down\"], \"e03f\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.1 32 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.1 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H448V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H352c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M32 32H64h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 320 288 64C0 46.3 14.3 32 32 32zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.7 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H424c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm0 184c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm160 0c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H336c-8.8 0-16 7.2-16 16zM160 400c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm160 0c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256c-13.3 0-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24s-10.7-24-24-24zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nvar faAd = faRectangleAd;\nvar faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zM297 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L120 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l214.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L409 239c9.4 9.4 9.4 24.6 0 33.9L297 385z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [640, 512, [], \"e520\", \"M344 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H463.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L247.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L380 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L515.6 400H528c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C608 143 497 32 360 32H344zm50.5 168l17.1 40H365l29.5-40zm-87.7 38.1l-1.4 1.9H257.1l32.7-41.5 16.9 39.5zM120.8 240C89.4 240 64 265.4 64 296.8c0 15.5 6.3 30 16.9 40.4L158.7 240H120.8zM528 320c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nvar faUnsorted = faSort;\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164.1 160v6.3c6.6 1.2 16.6 3.2 21 4.4c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-3.8-1-17.4-3.7-21.7-4.3c-12.2-1.9-22.2-.3-28.6 2.6c-6.3 2.9-7.9 6.2-8.2 8.1c-.6 3.4 0 4.7 .1 5c.3 .5 1 1.8 3.6 3.5c6.1 4.2 15.7 7.2 29.9 11.4l.8 .2c12.1 3.7 28.3 8.5 40.4 17.4c6.7 4.9 13 11.4 16.9 20.5c4 9.1 4.8 19.1 3 29.4c-3.3 19-15.9 32-31.6 38.7c-4.9 2.1-10 3.6-15.4 4.6V352c0 11.1-9 20.1-20.1 20.1s-20.1-9-20.1-20.1v-6.4c-9.5-2.2-21.9-6.4-29.8-9.1c-1.7-.6-3.2-1.1-4.4-1.5c-10.5-3.5-16.1-14.8-12.7-25.3s14.8-16.1 25.3-12.7c2 .7 4.1 1.4 6.4 2.1l0 0 0 0c9.5 3.2 20.2 6.9 26.2 7.9c12.8 2 22.7 .7 28.8-1.9c5.5-2.3 7.4-5.3 8-8.8c.7-4 .1-5.9-.2-6.7c-.4-.9-1.3-2.2-3.7-4c-5.9-4.3-15.3-7.5-29.3-11.7l-2.2-.7c-11.7-3.5-27-8.1-38.6-16c-6.6-4.5-13.2-10.7-17.3-19.5c-4.2-9-5.2-18.8-3.4-29c3.2-18.3 16.2-30.9 31.1-37.7c5-2.3 10.3-4 15.9-5.1v-6c0-11.1 9-20.1 20.1-20.1s20.1 9 20.1 20.1z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm194.8-6.4c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M96 96c-17.7 0-32 14.3-32 32s-14.3 32-32 32s-32-14.3-32-32C0 75 43 32 96 32h97c70.1 0 127 56.9 127 127c0 52.4-32.2 99.4-81 118.4l-63 24.5 0 18.1c0 17.7-14.3 32-32 32s-32-14.3-32-32V301.9c0-26.4 16.2-50.1 40.8-59.6l63-24.5C240 208.3 256 185 256 159c0-34.8-28.2-63-63-63H96zm48 384c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nvar faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 288c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M148 76.6C148 34.3 182.3 0 224.6 0c20.3 0 39.8 8.1 54.1 22.4l9.3 9.3 9.3-9.3C311.6 8.1 331.1 0 351.4 0C393.7 0 428 34.3 428 76.6c0 20.3-8.1 39.8-22.4 54.1L302.1 234.1c-7.8 7.8-20.5 7.8-28.3 0L170.4 130.7C156.1 116.4 148 96.9 148 76.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [448, 512, [\"external-link\"], \"f08e\", \"M288 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L169.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 141.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H288zM80 64C35.8 64 0 99.8 0 144V400c0 44.2 35.8 80 80 80H336c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm64 104c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"]\n};\nvar faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 352c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm352-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCab = faTaxi;\nvar faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm16-208c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"]\n};\nvar faPieChart = faChartPie;\nvar faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nvar faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM448 256c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zm-166.2-89l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm80-16c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zm395.3 11.3l-112 112c-4.6 4.6-11.5 5.9-17.4 3.5s-9.9-8.3-9.9-14.8l0-64-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-64c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l112 112c6.2 6.2 6.2 16.4 0 22.6z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-216c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm72 24c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm120-56c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm120-56c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nvar faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM104 432c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nvar faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59.1 146.7-136.1 158.2c0 .6 .1 1.2 .1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l-24 0-24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2 .1-1.8C155.1 370.7 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM256 488h24c0 13.3-10.7 24-24 24s-24-10.7-24-24h24zm96-264c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0h58c15.1-18.1 32.1-35.7 50.5-52.1c1.5-1.4 3.2-2.6 4.8-3.8L402.9 32H304V160zm209.9-23.7c17.4-15.8 43.9-16.2 61.7-1.2c-.1-.7-.3-1.4-.5-2.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l12.8 64.2c9.6 1 19 4.9 26.6 11.8c11.7 10.6 23 21.6 33.9 33.1c1.6-1.6 3.3-3.2 5-4.8zM325.2 210.7c3.8-6.2 7.9-12.5 12.3-18.7H32l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4zm128.4-78.9c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 407.9 390.3 480 480 480c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 401c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM256 416c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [256, 512, [], \"e4c5\", \"M88 0h80c13.3 0 24 10.7 24 24V64H64V24C64 10.7 74.7 0 88 0zM0 151.7c0-15.6 9-29.8 23.2-36.5l24.4-11.4c11-5.1 23-7.8 35.1-7.8h90.6c12.1 0 24.1 2.7 35.1 7.8l24.4 11.4c14.2 6.6 23.2 20.8 23.2 36.5c0 14.4-7.5 27-18.9 34.1c11.5 8.8 18.9 22.6 18.9 38.2c0 16.7-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48c0-16.7 8.5-31.4 21.5-40C8.5 415.4 0 400.7 0 384s8.5-31.4 21.5-40C8.5 335.4 0 320.7 0 304s8.5-31.4 21.5-40C8.5 255.4 0 240.7 0 224c0-15.6 7.4-29.4 18.9-38.2C7.5 178.7 0 166.1 0 151.7zM64 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6L66.5 148.4zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 208c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm256 32c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M32 32C14.3 32 0 46.3 0 64V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H32zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"]\n};\nvar faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"]\n};\nvar faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M96 0C80.7 0 67.6 10.8 64.6 25.7l-64 320c-1.9 9.4 .6 19.1 6.6 26.6S22.4 384 32 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H608c9.6 0 18.7-4.3 24.7-11.7s8.5-17.2 6.6-26.6l-64-320C572.4 10.8 559.3 0 544 0H96zm5.4 168L122.2 64h90.4L202.3 168H101.4zm-9.6 48H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104H235.3l10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l20.8 104zm-149.1 0h-139L260.9 64H379.1l10.4 104z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"]\n};\nvar faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 192c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zM400 272c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nvar faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144C288 64.5 223.5 0 144 0S0 64.5 0 144s64.5 144 144 144s144-64.5 144-144zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512z\"]\n};\nvar faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [576, 512, [9842, 9850, 9851], \"f1b8\", \"M206.7 45.1C224.2 17 255 0 288 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L315 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM461.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L352 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L68 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L214 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3-51.5 82.4c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0c-53.1 0-96.1-43.2-95.8-96.4c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320h73.8c34.2 0 93.7-28 93.7-64c0-35-59.5-64-93.7-64l-116.6 0L297.2 16.1C291.5 6.2 280.9 0 269.4 0H213.2c-10.6 0-18.3 10.2-15.4 20.4l40.3 140.9L38.8 5.1zm2.7 123.6C36 130.6 32 135.9 32 142c0 1.3 .2 2.6 .5 3.9L64 256 32.5 366.1c-.4 1.3-.5 2.6-.5 3.9c0 7.8 6.3 14 14 14H88c5 0 9.8-2.4 12.8-6.4L144 320H246.9l-49 171.6c-2.9 10.2 4.8 20.4 15.4 20.4l56.2 0c11.5 0 22.1-6.2 27.8-16.1l65.3-114.3L41.5 128.7z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"]\n};\nvar faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64C119 35.5 158.6 15 202.3 5.6C206 19.1 208 33.3 208 48c0 38.4-13.5 73.7-36.1 101.3L86.6 64zM64 86.6l85.2 85.2C121.7 194.5 86.4 208 48 208c-14.7 0-28.9-2-42.4-5.7C15 158.6 35.5 119 64 86.6zM256 0c64.9 0 124.2 24.2 169.4 64L256 233.4 194.6 172C222.9 138.5 240 95.3 240 48c0-16.2-2-32-5.8-47.1C241.4 .3 248.7 0 256 0zM48 240c47.3 0 90.5-17.1 124-45.4L233.4 256 64 425.4C24.2 380.2 0 320.9 0 256c0-7.3 .3-14.6 .9-21.8C16 238 31.8 240 48 240zm463.1 37.8C496 274 480.2 272 464 272c-47.3 0-90.5 17.1-124 45.4L278.6 256 448 86.6c39.8 45.1 64 104.4 64 169.4c0 7.3-.3 14.6-.9 21.8zm-4.7 31.9C497 353.4 476.5 393 448 425.4l-85.2-85.2C390.3 317.5 425.6 304 464 304c14.7 0 28.9 2 42.4 5.7zM340.1 362.7L425.4 448C393 476.5 353.4 497 309.7 506.4C306 492.9 304 478.7 304 464c0-38.4 13.5-73.7 36.1-101.3zM317.4 340C289.1 373.5 272 416.7 272 464c0 16.2 2 32 5.8 47.1c-7.2 .6-14.5 .9-21.8 .9c-64.9 0-124.2-24.2-169.4-64L256 278.6 317.4 340z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm11.3-395.3l112 112c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H144c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l112-112c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM304 64H80V384H304V64z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 336c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM307.8 275.8l-128 128c-10.9 10.9-28.7 10.9-39.6 0l-64-64c-10.9-10.9-10.9-28.7 0-39.6s28.7-10.9 39.6 0L160 344.4 268.2 236.2c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nvar faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm240 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zM272 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"]\n};\nvar faHamburger = faBurger;\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [640, 512, [], \"e4d0\", \"M196.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L160 71.7 133.9 14.1C128.4 2 114.1-3.3 102.1 2.1S84.7 21.9 90.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8s-21.4 15.2-18.8 28.2l8 40C42.7 175.9 52.6 184 64 184H96v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C114.7 274.6 135.8 288 160 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L224 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L236.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM528 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L464.8 250c-12.3 1-24.2 5.6-34.1 13.3L416 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L391 322.7 353.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L535.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L598.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s25-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.4-13.4-6.6-28-4.4-43.2c8.5-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nvar faRupee = faRupeeSign;\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM128 256c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm88 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nvar faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM413.6 421.9L128 196.9V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 352c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm64 208c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM80 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nvar faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"]\n};\nvar faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [128008], \"f6be\", \"M288 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L248 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1C10.5 157.6-1.9 141.6 .2 124s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C325.3 164 320 146.6 320 128v0V32 12 10.7C320 4.8 324.7 .1 330.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L352 21.3l27.2 36.3L384 64h64l4.8-6.4L480 21.3 492.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C507.3 .1 512 4.8 512 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM400 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 256s96-96 96-160c0-53-43-96-96-96s-96 43-96 96c0 29.4 20.2 65.5 42.1 96H320c-53 0-96 43-96 96s43 96 96 96h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H188.6c-6.2 9.6-12.6 18.8-19 27.2c-10.7 14.2-21.3 26.9-30 36.8H416c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h96zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM149.9 448c21.9-30.5 42.1-66.6 42.1-96c0-53-43-96-96-96s-96 43-96 96c0 64 96 160 96 160s3.5-3.5 9.2-9.6c.4-.4 .7-.8 1.1-1.2c3.3-3.5 7.1-7.8 11.4-12.8c.2-.2 .4-.4 .6-.6c9.4-10.8 20.7-24.6 31.6-39.8zM96 384c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 416c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM160 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm208 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-64 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM88.1 128l5.3-64H226.6l5.3 64H88.1z\"]\n};\nvar faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nvar faFastForward = faForwardFast;\nvar faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM208.4 208c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm128 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M314.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c9.7 8.9 12.9 22.9 8.1 35.2S557.2 256 544 256H512V368c0 26.5-21.5 48-48 48H278.1C259.6 350.8 216.8 295.9 160 261.7V256h-9.9c-16.5-9-34-16.2-52.3-21.6c-4.1-12-.8-25.3 8.5-34l208-192zM304 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H304zM24 256c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 256c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM0 376c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z\"]\n};\nvar faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M41.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 41.4 86.6zM288 416H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 464c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm64-96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM432 256c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM288 192c0 35.3-28.7 64-64 64c-11.5 0-22.3-3-31.6-8.4c-.2 2.8-.4 5.5-.4 8.4c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6z\"]\n};\nvar faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"]\n};\nvar faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 3 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nvar faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [576, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M544 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM416 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM320 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM160 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM64 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [128653], \"f207\", \"M256 0C390.4 0 480 35.2 480 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V448H160v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C32 35.2 121.6 0 256 0zM96 160v96c0 17.7 14.3 32 32 32H240V128H128c-17.7 0-32 14.3-32 32zM272 288H384c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H272V288zM112 400c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM352 80c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faFrown = faFaceFrown;\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"]\n};\nvar faStoreAlt = faShop;\nvar faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 416c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faSave = faFloppyDisk;\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"]\n};\nvar faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zm-396.3 211c.4-.8 1.3-1.3 2.2-1.3s1.7 .5 2.2 1.3L204.9 416H51.1l74.7-142.7zM128 224c-18.8 0-36 10.4-44.7 27L5.5 399.5c-3.1 5.8-6.1 14-5.5 23.8c.7 12.1 4.8 35.2 24.8 55.1C45.1 498.6 77.8 512 128 512s82.9-13.4 103.2-33.5c20-20 24.2-43 24.8-55.1c.6-9.8-2.5-18-5.5-23.8L172.7 251c-8.7-16.6-25.9-27-44.7-27zm384-80c.9 0 1.7 .5 2.2 1.3L588.9 288H435.1l74.7-142.7c.4-.8 1.3-1.3 2.2-1.3zm-44.7-21L389.5 271.5c-3.1 5.8-6.1 14-5.5 23.8c.7 12.1 4.8 35.2 24.8 55.1C429.1 370.6 461.8 384 512 384s82.9-13.4 103.2-33.5c20-20 24.2-43 24.8-55.1c.6-9.8-2.5-18-5.5-23.8L556.7 123C548 106.4 530.8 96 512 96s-36 10.4-44.7 27z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faSortAsc = faSortUp;\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCommenting = faCommentDots;\nvar faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [576, 512, [], \"e05a\", \"M455.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L228 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L135 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2c-12.7 3.6-20.1 16.9-16.5 29.7s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L247 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L403 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L471 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zm-331 332.7l0 0L176 368l-51.9-4.7zM240 320c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm32-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v32 64c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM336 272c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nvar faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128s-128 57.3-128 128zm128 80c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM288 304c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zm80 176c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nvar faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64c0-35.3-28.7-64-64-64S96 28.7 96 64s28.7 64 64 64s64-28.7 64-64zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"]\n};\nvar faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM211.2 160c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zM563.2 160c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM321.6 256c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm72 32c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.4 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nvar faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0h32c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM240 80c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C161.5 168.1 145 208 112 208c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C184.1 302.5 224 319 224 352c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C318.5 279.9 335 240 368 240c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C295.9 145.5 256 129 256 96c0-8.8-7.2-16-16-16zM216 224c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm72 32c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 256c-70.7 0-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128s-57.3 128-128 128zm-45.7 48h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5c0-26.5-21.5-48-48.1-48s-48.1 21.5-48.1 48s21.5 48 48.1 48s48.1-21.5 48.1-48z\"]\n};\nvar faUserCog = faUserGear;\nvar faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM352 64c0-17.7 14.3-32 32-32h48c17.7 0 32 14.3 32 32v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H384c-17.7 0-32-14.3-32-32zm93.7 300.9c10.8-5.1 18.3-16.2 18.3-28.9c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32c4.9 0 9.6-1.1 13.7-3.1zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm72 32c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"]\n};\nvar faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80c0-26.5-21.5-48-48-48S16 53.5 16 80s21.5 48 48 48s48-21.5 48-48zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M32 32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H224 32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nvar faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M304 64c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nvar faDigging = faPersonDigging;\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nvar faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 320c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm0 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm0 320c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"]\n};\nvar faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nvar faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [576, 512, [], \"e1a8\", \"M368 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM167 119c9.4-9.4 24.6-9.4 33.9 0L324.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L39 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L87 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM465.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM456.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M216.3 2c4.8-2.6 10.5-2.6 15.3 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L216.3 2zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L8.3 414C3.2 411.2 0 405.9 0 400V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V400c0 5.9-3.2 11.2-8.3 14l-176 96c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M176 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM120 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM560 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-80-32c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [448, 512, [\"external-link-alt\"], \"f35d\", \"M288 32c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L306.7 128 169.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L352 173.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V64c0-17.7-14.3-32-32-32H288zM80 64C35.8 64 0 99.8 0 144V400c0 44.2 35.8 80 80 80H336c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"]\n};\nvar faTh = faTableCells;\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 224H88c30.9 0 56 25.1 56 56s-25.1 56-56 56H80v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V320 240c0-8.8 7.2-16 16-16zm24 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H80v48h8zm72-64c0-8.8 7.2-16 16-16h24c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H176c-8.8 0-16-7.2-16-16V240zm32 112h8c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16h-8v96zm96-128h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H304v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H304v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V304 240c0-8.8 7.2-16 16-16z\"]\n};\nvar faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"]\n};\nvar faBible = faBookBible;\nvar faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160s160-71.6 160-160s-71.6-160-160-160zM0 256C0 132.3 100.3 32 224 32s224 100.3 224 224s-100.3 224-224 224S0 379.7 0 256z\"]\n};\nvar faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.7 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 160c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm144-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faFemale = faPersonDress;\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M188.8 39.3c13.8 8.5 19.6 26.8 13.6 42.7L174.2 156c-5.3 14-18.5 22.5-32.4 21l-42.6-4.6c-17.4 54.1-17.4 113.2 0 167.3l42.6-4.6c13.9-1.5 27.1 7 32.4 21L202.4 430c6.1 15.9 .3 34.2-13.6 42.7l-56.4 34.8c-12.4 7.7-28 5.4-38.1-5.5C-31.4 366.1-31.4 145.9 94.3 10C104.4-.9 120.1-3.1 132.5 4.5l56.4 34.8zm218.4-5.5C471.2 86.6 512 166.6 512 256s-40.8 169.4-104.7 222.2c-10.2 8.4-25.3 7-33.8-3.2s-7-25.3 3.2-33.8C430.1 397.1 464 330.5 464 256s-33.9-141.1-87.3-185.2c-10.2-8.4-11.7-23.6-3.2-33.8s23.6-11.7 33.8-3.2zm-64.4 71.4C387.4 140.4 416 194.8 416 256s-28.6 115.6-73.1 150.8c-10.4 8.2-25.5 6.4-33.7-4s-6.4-25.5 4-33.7C346.6 342.7 368 301.8 368 256s-21.4-86.7-54.8-113.1c-10.4-8.2-12.2-23.3-4-33.7s23.3-12.2 33.7-4zm-65.4 71C303.1 193.5 320 222.8 320 256s-16.9 62.5-42.5 79.7c-11 7.4-25.9 4.5-33.3-6.5s-4.5-25.9 6.5-33.3c12.9-8.7 21.3-23.3 21.3-39.9s-8.4-31.2-21.3-39.9c-11-7.4-13.9-22.3-6.5-33.3s22.3-13.9 33.3-6.5z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M463.2 71.3c-2.4-12.8-9.8-24.1-20.7-31.3s-24.2-9.7-36.9-6.8l-216 48c-19.8 4.4-34.7 20.8-37.2 40.9l-8.8 70.6c5.3-.4 10.8-.7 16.5-.7c82.9 0 141.9 55.3 197.5 107.5l0 0c3.1 3 6.3 5.9 9.4 8.8C427.1 364.5 486.9 416 576 416c0 0 64 0 64-48c0-96-112-128-144-128h-1.6L463.2 71.3zM576 448c-102.9 0-171.1-60.5-230.9-116.3l-6.5-6C279.9 270.8 229.9 224 160 224c-57.8 0-97.4 28.6-123.1 63.5C10.7 323 0 363.8 0 384c0 35.3 28.7 64 64 64H576z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm64 128c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M224 64c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM144 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [8356], \"f195\", \"M144 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L249 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C137.5 32 80 89.5 80 160.4V192H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H80v32H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H78c-2.2 10.5-6.1 20.6-11.7 29.9L36.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S52.5 480 64 480H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H120.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V160.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nvar faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nvar faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nvar faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [512, 512, [128206], \"f0c6\", \"M396.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nvar faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M224 96c39.5 0 66.8 12.2 81.9 21.5L245.6 184l79.3 87.4 36.3-40c14.7-16.2 22.8-37.3 22.8-59.1v-27c0-15.6-4.1-30.8-12-44.3L337.7 42C326.4 22.7 307 6.8 282.1 3.5C267.8 1.6 248.4 0 224 0s-43.8 1.6-58 3.5C141 6.8 121.7 22.7 110.4 42L76 101c-7.8 13.4-12 28.7-12 44.3v27c0 21.9 8.1 42.9 22.8 59.1l57.9 63.8L224 382.6 334.2 504.1c6.4 7 16.3 9.7 25.4 6.6l72-24c7.7-2.6 13.6-8.8 15.6-16.7s0-16.2-5.4-22.2L303.3 295.2 224 207.8l-81.9-90.3C157.3 108.2 184.5 96 224 96zM202.4 406.5L123.2 319 6.3 447.9c-5.4 6-7.5 14.4-5.4 22.2s7.9 14.1 15.6 16.7l72 24c9 3 19 .4 25.4-6.6l88.6-97.7z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM352 320c0-17.7 14.3-32 32-32h48c17.7 0 32 14.3 32 32v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V352H384c-17.7 0-32-14.3-32-32zm93.7-171.1c10.8-5.1 18.3-16.2 18.3-28.9c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32c4.9 0 9.6-1.1 13.7-3.1zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [448, 512, [], \"e1d3\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V213.6L55.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L96 280.1V448c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L160 195.3V64z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm96 64c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-448c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM224 416c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0-320c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM416 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM32 32C14.3 32 0 46.3 0 64S14.3 96 32 96s32-14.3 32-32s-14.3-32-32-32zM416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM224 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm192-64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM32 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM416 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM32 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm192-64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32z\"]\n};\nvar faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM208 384c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.7 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5 208 288l48-64h65z\"]\n};\nvar faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-144c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm416 0c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 384c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faCameraAlt = faCamera;\nvar faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm88 32c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 448c-70.7 0-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128s-57.3 128-128 128zm0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm16 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 392c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm280-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"]\n};\nvar faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M352 64c0 17.7 14.3 32 32 32h16v64H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-17.7-14.3-32-32-32H384c-17.7 0-32 14.3-32 32zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM445.7 364.9c-4.2 2-8.8 3.1-13.7 3.1c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32c0 12.8-7.5 23.8-18.3 28.9zm-40.7 54.9l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 96c0 35.3-28.7 64-64 64S0 131.3 0 96S28.7 32 64 32s64 28.7 64 64zm96 176c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM80 416c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm112 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM64 320c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM224 160c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM480 96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm112 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM576 272c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm16 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM416 272c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm16 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM208 416c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"]\n};\nvar faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H416L288 288V512H32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M374.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7 86.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nvar faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 208c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm128-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-18.5 5-38.8 8.3-50.9 10c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.2-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M112 96c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32V224v64V416c0 17.7-14.3 32-32 32H144c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32h48V96zm416 0v32h48c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H528v32c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 96c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"]\n};\nvar faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32-128c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faListAlt = faRectangleList;\nvar faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm320 0c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192zM224 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H144c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160-80c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM116.7 244.7l112-112c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 64 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 64c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-112-112c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM128 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm224 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSubway = faTrainSubway;\nvar faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM400 256c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 98c-8.8-3.8-19-2-26 4.6l-144 136C2.7 243.1 0 249.4 0 256s2.7 12.9 7.5 17.4l144 136c7 6.6 17.2 8.4 26 4.6s14.5-12.5 14.5-22l0-88 288 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-288 0 0-88c0-9.6-5.7-18.2-14.5-22z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM107.5 224H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7L144.7 210c-9.5 8.5-22.2 14-37.2 14z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faSubtract = faMinus;\nvar faChildRifle = {\n prefix: 'fas',\n iconName: 'child-rifle',\n icon: [576, 512, [], \"e4e0\", \"M176 128c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H59.4C48.7 96 40 104.7 40 115.4c0 3 .7 5.9 2 8.7c6 12.4 23.8 50.8 32.8 83.9H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h7.7C78 302.9 69.4 352.7 63.1 384H192.9c-6.4-31.3-14.9-81.1-16.6-128H184c13.3 0 24-10.7 24-24s-10.7-24-24-24h-2.8c9-33.2 26.8-71.5 32.8-83.9c1.3-2.7 2-5.6 2-8.7c0-10.7-8.7-19.4-19.4-19.4H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM25.2 451.4l-8.8 4.4C6.3 460.8 0 471.1 0 482.3C0 498.7 13.3 512 29.7 512H226.3c16.4 0 29.7-13.3 29.7-29.7c0-11.2-6.3-21.5-16.4-26.5l-8.8-4.4c-4.1-2.1-6.8-6.3-6.8-10.9c0-13.5-10.9-24.4-24.4-24.4H56.4C42.9 416 32 426.9 32 440.4c0 4.6-2.6 8.9-6.8 10.9zm279.2 4.4c-10.1 5-16.4 15.3-16.4 26.5c0 16.4 13.3 29.7 29.7 29.7H482.3c16.4 0 29.7-13.3 29.7-29.7c0-11.2-6.3-21.5-16.4-26.5l-8.8-4.4c-4.1-2.1-6.8-6.3-6.8-10.9c0-13.5-10.9-24.4-24.4-24.4H344.4c-13.5 0-24.4 10.9-24.4 24.4c0 4.6-2.6 8.9-6.8 10.9l-8.8 4.4zM304 259.9c0 7.8 2.8 15.3 8 21.1l18.9 21.4c5.4 6.1 8.2 14 8 22.1L337 384H462.5l-2.7-58.7c-.4-8.5 2.6-16.9 8.4-23.1l19.3-21c5.4-5.9 8.5-13.6 8.5-21.7V200c0-4.4-3.6-8-8-8H464c-4.4 0-8 3.6-8 8v16c0 4.4-3.6 8-8 8h-8c-4.4 0-8-3.6-8-8V200c0-4.4-3.6-8-8-8H376c-4.4 0-8 3.6-8 8v16c0 4.4-3.6 8-8 8h-8c-4.4 0-8-3.6-8-8V200c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v59.9zM392 336c-4.4 0-8-3.6-8-8V304c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 4.4-3.6 8-8 8H392z\"]\n};\nvar faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M109.3 288L480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nvar faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"]\n};\nvar faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80z\"]\n};\nvar faCog = faGear;\nvar faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L491.5 359.9c3-12.8 4.5-26.2 4.5-39.9c0-74.1-102.3-230.6-150.9-300.7c-12.3-17.7-37.8-17.7-50.1 0c-20.8 30-51.4 75.8-79.6 124.1L38.8 5.1zM144 320c0 97.2 78.8 176 176 176c48.1 0 91.7-19.3 123.5-50.6L170 229.9c-15.6 34.7-26 66.6-26 90.1zm96 0c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"]\n};\nvar faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"]\n};\nvar faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H76.1l60.3 316.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H179.9l-9.1-48h317c14.3 0 26.9-9.5 30.8-23.3l54-192C578.3 52.3 563 32 541.8 32H122l-2.4-12.5C117.4 8.2 107.5 0 96 0H24zM176 512c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm336-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"]\n};\nvar faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zm192 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zM40 320l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40zM232 192c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zM40 160l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40L40 32C17.9 32 0 49.9 0 72l0 48c0 22.1 17.9 40 40 40zM232 32c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0z\"]\n};\nvar faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M289 24.2C292.5 10 305.3 0 320 0H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H345L239 487.8c-3.2 13-14.2 22.6-27.6 24s-26.1-5.5-32.1-17.5L76.2 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c12.1 0 23.2 6.8 28.6 17.7l73.3 146.6L289 24.2zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 512C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"]\n};\nvar faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [640, 512, [], \"f432\", \"M550.3 0c-10.9 0-21.4 3.4-30.2 9.8L279.7 184.6c-13.9 10.1-26.8 21.4-38.7 33.8L138.7 325.3c-9.2 9.6-19.3 18.4-30.1 26.3L79.3 372.9c1.3 1.5 2.6 3 3.9 4.7l48 64c1.6 2.2 3.1 4.4 4.4 6.6l27.3-19.9c11.6-8.4 24-15.8 37-21.8l135.3-63.1c16.7-7.8 32.7-17.2 47.6-28.1L619 143.6c13.2-9.6 21-24.9 21-41.2c0-11-3.6-21.8-10.2-30.6L609.6 44.8 591.4 20.6C581.7 7.6 566.5 0 550.3 0zM496 512c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM57.6 396.8c-10.6-14.1-30.7-17-44.8-6.4s-17 30.7-6.4 44.8l48 64c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-48-64z\"]\n};\nvar faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [384, 512, [115], \"53\", \"M131.1 105.4c-20.1 8.6-30.8 21.8-33.9 39.4c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3c-16.8-5.6-25.8-23.7-20.3-40.5s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5-31.5-5.5c7.3-42.5 35.3-71.7 71.8-87.3c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.1 22.7c-11.2-3-48.2-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nvar faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 120c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm32 49.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM536 96c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM320 440c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V152c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h32l-18.8 75.1c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm208 32V320H96V192H288z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [576, 512, [9772], \"f66d\", \"M277.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C376.9 97.4 400 134 400 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L304 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L433.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L304 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C229.8 463.3 219.9 472 208 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L144 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C58.4 324.5 32 277.1 32 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29c4.8-3.2 8.9-5.7 11.8-7.3c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C137.2 119 128 149.5 128 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L272 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C199.1 254.6 176 218 176 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM252.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C259 210.2 264 190.9 264 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C317 141.8 312 161.1 312 176s5 34.2 11.8 53.1z\"]\n};\nvar faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0-17.7 14.3-32 32-32l54.7 0c12.3-28.3 40.5-48 73.3-48s61 19.7 73.3 48L480 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-246.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 448c-17.7 0-32-14.3-32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm-32-80c32.8 0 61 19.7 73.3 48l54.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-54.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l246.7 0c12.3-28.3 40.5-48 73.3-48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm73.3 0L480 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-214.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 128C14.3 128 0 113.7 0 96S14.3 64 32 64l86.7 0C131 35.7 159.2 16 192 16s61 19.7 73.3 48z\"]\n};\nvar faSlidersH = faSliders;\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M320 144c0 79.5-64.5 144-144 144S32 223.5 32 144S96.5 0 176 0s144 64.5 144 144zM176 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM144 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nvar faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"]\n};\nvar faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM224 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zm0-160c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zM120 96c0 30.9-25.1 56-56 56S8 126.9 8 96S33.1 40 64 40s56 25.1 56 56z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128v80c26.5 0 48 21.5 48 48s-21.5 48-48 48v80c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V304c-26.5 0-48-21.5-48-48s21.5-48 48-48V128c0-35.3-28.7-64-64-64H64zm64 96l0 192H448V160H128zm-32 0c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nvar faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 88L32 208c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l288 0 0 88c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M63 23.9C59.4 10.1 46.9 0 32 0C14.3 0 0 14.3 0 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V380.1c2-.8 4.8-1.8 8.2-3c8-2.8 19.4-6.6 32.6-10.4C131.9 359 164.5 352 192 352c26.3 0 46 6.4 70 14.4l1 .3c23.8 7.9 51.9 17.3 89 17.3c36.8 0 72.5-9.1 98.1-17.6c13-4.3 23.8-8.7 31.5-11.9c3.8-1.6 6.9-3 9-4c1.1-.5 1.9-.9 2.5-1.2l.7-.4 .2-.1 .1 0 0 0 0 0s0 0-14.3-28.6l14.3 28.6c10.8-5.4 17.7-16.5 17.7-28.6V289.1c-2.2 .8-5 1.8-8.2 3c-8.8 3.1-21.1 7.2-35.5 11.3C439.8 311.5 402.1 320 368 320c-34.1 0-63.9-8.5-91.4-16.4l-.8-.2C247.5 295.3 221.4 288 192 288c-29.7 0-61.9 7.5-87.3 15.3C92.1 307.2 81.5 311 74 313.9c-3.7 1.4-6.7 2.6-8.6 3.5L64 318V283.5c7.9-3 18.7-6.9 31.3-10.8c26.6-8.2 62.4-16.7 96.7-16.7c34.3 0 64.2 8.5 91.8 16.4l.7 .2c28.3 8.1 54.2 15.4 83.5 15.4c29.6 0 63.9-7.5 91.5-15.4c13.6-3.9 25.4-7.8 33.6-10.7c4.1-1.5 7.4-2.7 9.6-3.5c1.1-.4 2-.7 2.5-1l.6-.2 .1-.1 0 0 0 0 0 0 0 0 5.9-2.4V193.1c-2.2 .8-5 1.8-8.2 3c-8.8 3.1-21.1 7.2-35.5 11.3C439.8 215.5 402.1 224 368 224c-34.1 0-63.9-8.5-91.4-16.4l-.8-.2C247.5 199.3 221.4 192 192 192c-29.7 0-61.9 7.5-87.3 15.3C92.1 211.2 81.5 215 74 217.9c-3.7 1.4-6.7 2.6-8.6 3.5L64 222V187.5c7.9-3 18.7-6.9 31.3-10.8c26.6-8.2 62.4-16.7 96.7-16.7c34.3 0 64.2 8.5 91.8 16.4l0 0 .7 .2c28.3 8.1 54.2 15.4 83.5 15.4c29.6 0 63.9-7.5 91.5-15.4c13.6-3.9 25.4-7.8 33.6-10.7c4.1-1.5 7.4-2.7 9.6-3.5c1.1-.4 2-.7 2.5-1l.6-.2 .1-.1 0 0 0 0 0 0 0 0 5.9-2.4V97.1c-2.2 .8-5 1.8-8.2 3c-8.8 3.1-21.1 7.2-35.5 11.3C439.8 119.5 402.1 128 368 128c-34.1 0-63.9-8.5-91.4-16.4l-.8-.2c-6.7-1.9-13.2-3.8-19.7-5.5V72.8c9.6 2.4 18.8 5 27.8 7.6l.7 .2C312.8 88.7 338.7 96 368 96c29.6 0 63.9-7.5 91.5-15.4c13.6-3.9 25.4-7.8 33.6-10.7c4.1-1.5 7.4-2.7 9.6-3.5c1.1-.4 2-.7 2.5-1l.6-.2 .1-.1 0 0 0 0 0 0 0 0 5.9-2.4V32c0-11.4-6.1-21.9-15.9-27.7s-22-5.8-31.9-.2l-.2 .1c-.3 .2-.7 .4-1.4 .8c-1.3 .7-3.4 1.8-6.2 3.1c-5.5 2.6-13.6 6.2-23.4 9.8c-20 7.3-46.2 14.1-73 14.1c-26.7 0-50.6-6.6-79.1-14.8l-1.3-.4C252.3 9.1 220.5 0 184 0C147.3 0 109.8 9 82.6 17.4c-7.2 2.2-13.8 4.4-19.6 6.5zM208 48c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm-64 8c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 72c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm-48-8c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M192 0H48C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H162.7c6.6-18.6 24.4-32 45.3-32V272c0-44.2 35.8-80 80-80h32V128H224c-17.7 0-32-14.3-32-32V0zm96 224c-26.5 0-48 21.5-48 48v16 96 32H208c-8.8 0-16 7.2-16 16v16c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V432c0-8.8-7.2-16-16-16H592V288c0-35.3-28.7-64-64-64H320 304 288zm32 64H528V416H304V288h16zM224 0V96h96L224 0z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M472.7 188.8c-8.5 13.8-26.8 19.6-42.7 13.6L356 174.2c-14-5.3-22.5-18.5-21-32.4l4.6-42.6c-54.1-17.4-113.2-17.4-167.3 0l4.6 42.6c1.5 13.9-7 27.1-21 32.4L82 202.4c-15.9 6.1-34.2 .3-42.7-13.6L4.5 132.5c-7.7-12.4-5.4-28 5.5-38.1c135.9-125.8 356.1-125.8 492 0c10.9 10.1 13.2 25.7 5.5 38.1l-34.8 56.4zM32 272c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V272zm0 192c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V464zM96 352h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V272zm64 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272zm64 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H384c-8.8 0-16-7.2-16-16V368zM336 256h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V272zm16 176h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V464c0-8.8 7.2-16 16-16zM128 464c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V464z\"]\n};\nvar faTeletype = faTty;\nvar faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"]\n};\nvar faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM320 80c0 44.2-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M288 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM243.3 230.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nvar faHiking = faPersonHiking;\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288c61.9 0 112-50.1 112-112s-50.1-112-112-112S80 114.1 80 176s50.1 112 112 112zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM256 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zM64 224c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM160 320c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zM288 192c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM256 320c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48S32 21.5 32 48s21.5 48 48 48zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32H0zM32 64L56.6 43.5C48 33.2 33.8 29.3 21.1 33.9S0 50.5 0 64l32 0zM352 448l-24.6 20.5c8.6 10.3 22.8 14.2 35.5 9.6s21.1-16.6 21.1-30.1H352zM384 64c0-17.7-14.3-32-32-32s-32 14.3-32 32h64zM64 448V64H0V448H64zM7.4 84.5l320 384 49.2-41-320-384L7.4 84.5zM384 448V64H320V448h64z\"]\n};\nvar faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-64-8c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"]\n};\nvar faTram = faCableCar;\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nvar faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [640, 512, [], \"e4b8\", \"M576 416L64 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L512 274.7 512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L192 274.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L86.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zM432 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrin = faFaceGrin;\nvar faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMeh = faFaceMeh;\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"]\n};\nvar faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 128c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nvar faBookDead = faBookSkull;\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 320c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM352 208c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [512, 512, [\"dedent\"], \"f03b\", \"M32 64c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 96 32 81.7 32 64zM224 192c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm32 96H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32zM32 448c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32zm.2-179.4c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L32.2 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H32zM160 224H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 248c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [576, 512, [8644, \"exchange\"], \"f0ec\", \"M422.6 278.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 176H64c-17.7 0-32-14.3-32-32s14.3-32 32-32H434.7L377.4 54.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l112 112c12.5 12.5 12.5 32.8 0 45.3l-112 112zm-269.3 224l-112-112c-12.5-12.5-12.5-32.8 0-45.3l112-112c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L141.3 336H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H141.3l57.4 57.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nvar faCutlery = faUtensils;\nvar faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nvar faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM224 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm128 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zM128 368c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48zm288 0c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192h88l0 288c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32l0-288h88c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm32.4 49.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM392 272c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zm-96 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nvar faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 224c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zm-96 32c0 53 43 96 96 96s96-43 96-96s-43-96-96-96s-96 43-96 96zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm96-16c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"]\n};\nvar faZap = faBolt;\nvar faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [448, 512, [], \"e4f4\", \"M64 0C55.1 0 46.6 3.7 40.6 10.2s-9.1 15.2-8.5 24.1L60.9 437.7c3 41.9 37.8 74.3 79.8 74.3H307.3c42 0 76.8-32.4 79.8-74.3L415.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S392.9 0 384 0H64zm41 156.5L98.4 64H349.6L343 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L105 156.5z\"]\n};\nvar faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"]\n};\nvar faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0 80c-88.4 0-160-71.6-160-160s71.6-160 160-160s160 71.6 160 160s-71.6 160-160 160zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416c61.9 0 112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112s50.1 112 112 112z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.2C48.8 31.5 29 27.6 14.2 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM352 256c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zm32 0c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 352c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM208.4 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm92.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M0 464V316.9C0 208.5 68.3 111.8 170.5 75.6L340.2 15.5C361.6 7.9 384 23.8 384 46.4c0 11-5.5 21.2-14.6 27.3L336 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H48c-26.5 0-48-21.5-48-48zM328 224c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H352V352c0 53-43 96-96 96s-96-43-96-96V128H48z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M32 32C14.3 32 0 46.3 0 64V304v48 80c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L320 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L128 215.4V64c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM244.7 395.3l-112-112c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l64 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 64 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-112 112c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM512 384c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM64 64c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64S28.7 64 64 64z\"]\n};\nvar faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"]\n};\nvar faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h64H384h64c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM384 512c-17.7 0-32-14.3-32-32V448H160v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V480c0 17.7-14.3 32-32 32zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm200-24c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 201.7C0 90.3 90.3 0 201.7 0H224c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H416v32H352c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 35.3-28.7 64-64 64H288c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V375.8c0-17-7.1-33-17.5-46.4C18.3 293.2 0 246.5 0 201.7zM336 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm272 88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-40 24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm-64 48c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm128 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM608 504c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-40-72c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-25.3-19.5-46-44.3-47.9c7.7-8.5 12.3-19.8 12.3-32.1c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 320H96c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64V288c0 17.7 14.3 32 32 32z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M120 256c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm160 0c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm104 56c-30.9 0-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56s-25.1 56-56 56z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M264 136c0 37.1-19.4 69.6-48.6 88H224c17.7 0 32 14.3 32 32s-14.3 32-32 32c0 96 24 128 24 128H72s24-32 24-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h8.5C75.4 205.6 56 173.1 56 136C56 78.6 102.6 32 160 32s104 46.6 104 104zM32 448H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88v40H336V88c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zm-48 40V88c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56v40h28.1c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9V304H384V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H192V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H0V227.9c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1H128zM0 416V336H128v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H320v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H512v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 256c-70.7 0-128-57.3-128-128S249.3 0 320 0s128 57.3 128 128s-57.3 128-128 128zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faAutomobile = faCar;\nvar faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M352 96c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM240 248V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nvar faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M64.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L217.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L63.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM32 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L56.2 158C45.6 151.6 32 159.3 32 171.7zM326.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L338.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM512 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L302.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM249.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM57.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L46.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L418.9 238.1c-6.5-10-21.4-9.6-27.3 .8L306.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H199.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM190.4 176H353.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nvar faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nvar faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [512, 512, [\"temperature-up\"], \"e040\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.1 32 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.1 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM448 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M16 0H144c5.3 0 10.3 2.7 13.3 7.1l81.1 121.6c-49.5 4.1-94 25.6-127.6 58.3L2.7 24.9C-.6 20-.9 13.7 1.9 8.5S10.1 0 16 0zM509.3 24.9L401.2 187.1c-33.5-32.7-78.1-54.2-127.6-58.3L354.7 7.1c3-4.5 8-7.1 13.3-7.1H496c5.9 0 11.3 3.2 14.1 8.5s2.5 11.5-.8 16.4zM432 336c0 97.2-78.8 176-176 176s-176-78.8-176-176s78.8-176 176-176s176 78.8 176 176zM264.4 241.1c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zM176 288c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-32c-30.9 0-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56s-25.1 56-56 56z\"]\n};\nvar faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"]\n};\nvar faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M601.2 5.1c10.4-8.2 25.5-6.3 33.7 4.1s6.3 25.5-4.1 33.7l-592 464c-10.4 8.2-25.5 6.3-33.7-4.1s-6.3-25.5 4.1-33.7l155.6-122C101.8 270 64 171.4 64 64c0-18 12.1-33.8 29.5-38.6l88-24c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L208 207.3c12 25.5 27.2 49.2 45 70.7L601.2 5.1zM325.7 343.7c13.7 9.1 28 17.3 43 24.3L409 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C545.8 499.9 530 512 512 512c-104.9 0-201.3-36-277.7-96.4l91.3-72z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M543.9 251.4c0-1.1 .1-2.2 .1-3.4c0-48.6-39.4-88-88-88l-40 0H320l-16 0 0 0v16 72c0 22.1-17.9 40-40 40s-40-17.9-40-40V128h.4c4-36 34.5-64 71.6-64H408c2.8 0 5.6 .2 8.3 .5l40.1-40.1c21.9-21.9 57.3-21.9 79.2 0l78.1 78.1c21.9 21.9 21.9 57.3 0 79.2l-69.7 69.7zM192 128V248c0 39.8 32.2 72 72 72s72-32.2 72-72V192h80l40 0c30.9 0 56 25.1 56 56c0 27.2-19.4 49.9-45.2 55c8.2 8.6 13.2 20.2 13.2 33c0 26.5-21.5 48-48 48h-2.7c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48H224c-.9 0-1.8 0-2.7-.1l-37.7 37.7c-21.9 21.9-57.3 21.9-79.2 0L26.3 407.6c-21.9-21.9-21.9-57.3 0-79.2L96 258.7V224c0-53 43-96 96-96z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nvar faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM32 160c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 496c97.2 0 176-78.8 176-176c0-74.1-102.3-230.6-150.9-300.7c-12.3-17.7-37.8-17.7-50.1 0C118.3 89.4 16 245.9 16 320c0 97.2 78.8 176 176 176zM112 320c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTint = faDroplet;\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nvar faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zm48 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zM64 176c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"]\n};\nvar faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [320, 512, [], \"e447\", \"M96.9 96c2.1-11.6 8.7-19.8 21.1-25.4c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8c-34.7-5.7-69.4-3.6-98 9.3c-29.8 13.5-52.2 38.6-58 74.1c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C54.3 194.2 38.5 215.1 33.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nvar faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM96 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm352-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [9820], \"f447\", \"M0 204.2V48c0-8.8 7.2-16 16-16H72c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h56c8.8 0 16 7.2 16 16V204.2c0 12.1-6.8 23.2-17.7 28.6l-28.6 14.3c-10.8 5.4-17.7 16.5-17.5 28.6C322.2 360.7 336 416 336 416H48s13.8-55.3 15.8-140.2c.3-12.1-6.6-23.2-17.5-28.6L17.7 232.8C6.8 227.4 0 216.3 0 204.2zM176 320h32c8.8 0 16-7.2 16-16V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.6-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nvar faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [576, 512, [129345], \"f569\", \"M533.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L402.2 104.5C367.8 98.7 329 96 288 96C146.6 96 32 128 32 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM339.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C490.4 181.8 496 197.4 496 208c0 .8-2.7 17.2-46 35.9C411.1 260.7 354 272 288 272s-123.1-11.3-162-28.1C82.7 225.2 80 208.8 80 208c0-10.6 5.6-26.2 44.4-41.3C162.6 151.9 219.8 144 288 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [384, 512, [127848], \"f810\", \"M335.1 160c.6-5.3 .9-10.6 .9-16C336 64.5 271.5 0 192 0S48 64.5 48 144c0 5.4 .3 10.7 .9 16H48c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H336c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM64 288L168.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L320 288H64z\"]\n};\nvar faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 320c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM384 448c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-96-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nvar faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"]\n};\nvar faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M160 48c0-26.5 21.5-48 48-48h48V80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V0h48c26.5 0 48 21.5 48 48V176c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V48zM48 288H96v80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V288h48c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336c0-26.5 21.5-48 48-48zm320 0h48v80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V288h48c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V336c0-26.5 21.5-48 48-48z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nvar faChain = faLink;\nvar faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM192 352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"]\n};\nvar faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"]\n};\nvar faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352c79.5 0 144-64.5 144-144s-64.5-144-144-144S64 128.5 64 208s64.5 144 144 144z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M416 288c-50.1 0-93.6 28.8-114.6 70.8L68.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C471.8 297.6 445 288 416 288zM49.3 151.9L290.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H293c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L88.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32C3.1 464.3-.3 455.7 0 446.9s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8C45.5 285.5 32 252.9 32 219v-2.7c0-22.8 6.1-44.9 17.3-64.3zM416 512c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176c48.6 0 88-39.4 88-88s-39.4-88-88-88s-88 39.4-88 88s39.4 88 88 88zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM272 280c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm56 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM96 240c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm368 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M0 24C0 10.7 10.7 0 24 0H96c11.5 0 21.4 8.2 23.6 19.5L122 32H312V134.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V32H541.8c21.2 0 36.5 20.3 30.8 40.7l-54 192c-3.9 13.8-16.5 23.3-30.8 23.3h-317l9.1 48H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H160c-11.5 0-21.4-8.2-23.6-19.5L76.1 48H24C10.7 48 0 37.3 0 24zM224 464c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm240 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faFileEdit = faFilePen;\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.2-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.2 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"]\n};\nvar faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm368 32V320H96V192H448z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [512, 512, [128369, 9760], \"f714\", \"M400 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H208c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C112 57.3 176.5 0 256 0s144 57.3 144 128zM200 176c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm144-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM35.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L256 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L327.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L256 419.8 78.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L184.4 384 49.7 316.6c-15.8-7.9-22.2-27.1-14.3-42.9z\"]\n};\nvar faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432c0 13.3 10.7 24 24 24s24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144c26.5 0 48-21.5 48-48s-21.5-48-48-48S16 69.5 16 96s21.5 48 48 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48-208c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faListDots = faListUl;\nvar faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0l139 92.7L602.4 126c22 4.9 37.6 24.4 37.6 46.9V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V172.8c0-22.5 15.6-42 37.6-46.9L163.2 98.1l139-92.7zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72c48.6 0 88-39.4 88-88s-39.4-88-88-88s-88 39.4-88 88s39.4 88 88 88zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M318 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26S14.4 320 24 320h88l0-288c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32l0 288h88c9.6 0 18.2 5.7 22 14.5z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H416c10.3 0 19.9 4.9 26 13.3s7.7 19.1 4.4 28.8L375.1 416H72.9L1.6 202.1C-1.6 192.4 0 181.6 6 173.3s15.7-13.3 26-13.3H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM32 480c0-17.7 14.3-32 32-32H83.6 364.4 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128 64c-17.7 0-32-14.3-32-32z\"]\n};\nvar faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"]\n};\nvar faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM216 192c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [576, 512, [\"tasks\"], \"f0ae\", \"M184.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L39 113c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L39 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM256 96c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32zM192 416c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zM80 464c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faTasks = faListCheck;\nvar faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 272c39.8 0 72-32.2 72-72s-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zM268.3 308.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17s20.4 16.6 17 29.4s-16.6 20.4-29.4 17zM545 358.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4s16.6-20.4 29.4-17s20.4 16.6 17 29.4z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [576, 512, [127938, \"snowboarding\"], \"f7ce\", \"M241.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H504c13.3 0 24 10.7 24 24s-10.7 24-24 24H475.8c-10.8 0-21.4-2-31.5-5.8L92.1 371.3c-11.5-4.4-22-11.2-30.8-20L39 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L224 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM171 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.4-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L171 350.1zM464 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm368-48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM129.1 323.2l83.2 88.4c6.3 6.7 17 6.7 23.3 0l83.2-88.4c73.7 14.9 129.1 80 129.1 158.1c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-78.1 55.5-143.2 129.1-158.1z\"]\n};\nvar faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zm64 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 448C150 448 64 362 64 256S150 64 256 64s192 86 192 192s-86 192-192 192zm0 64c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nvar faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M224 0c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224zM64 160c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64H64V224h64V160H64z\"]\n};\nvar faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V136zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faGripHorizontal = faGrip;\nvar faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M384 24c0-9.6 5.7-18.2 14.5-22s19-2 26 4.6l144 136c4.8 4.5 7.5 10.8 7.5 17.4s-2.7 12.9-7.5 17.4l-144 136c-7 6.6-17.2 8.4-26 4.6s-14.5-12.5-14.5-22V224H352 337.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C242.8 374.8 160 333.4 160 240c0-79.5 64.5-144 144-144h80V24zM0 144C0 99.8 35.8 64 80 64H96c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V416c0-17.7 14.3-32 32-32s32 14.3 32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V144z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"]\n};\nvar faAdd = faPlus;\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"]\n};\nvar faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 224c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [320, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 256c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm-26.7 32h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"]\n};\nvar faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M296 88c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nvar faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM321.6 192c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256c-44.2 0-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80s-35.8-80-80-80zM528 448c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nvar faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [448, 512, [], \"e51e\", \"M222.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM384 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"]\n};\nvar faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"]\n};\nvar faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6c.5-1.7 .7-3.5 .7-5.4c0-27.6-11-54.1-30.5-73.7L512 320c-20.5-20.5-32-48.3-32-77.3V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM160 242.7c0 29-11.5 56.8-32 77.3l-1.5 1.5C107 341 96 367.5 96 395.2c0 11.5 9.3 20.8 20.8 20.8H406.2L160 222.1v20.7zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0H400c8.8 0 16 7.2 16 16V64c0 8.8-7.2 16-16 16H320V95.5L410.3 160H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [576, 512, [], \"f575\", \"M118.6 9.4C106.1-3.1 85.9-3.1 73.4 9.4s-12.5 32.8 0 45.3L154.7 136 62.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L180.1 481.4c37.5 37.5 98.3 37.5 135.8 0L506.3 290.9c28.1-28.1 28.1-73.7 0-101.8L354.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L200 90.7 118.6 9.4zM200 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L245.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L461.1 234.3c3.1 3.1 3.1 8.2 0 11.3L418.7 288H99.5c1.4-5.4 4.2-10.4 8.4-14.6L200 181.3z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [384, 512, [9001], \"f053\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-3.1 11c-7.4-.3-14.9 .4-22.4 2.1c-9 2.1-17.8 4.4-26.2 7l-4.4-10.3c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l3.6 8.5c-16.5 7.1-31.5 15.1-45.2 23.9L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l5.8 8.7c-13.5 11.2-25.3 23.1-35.5 35.3l-10.1-8.1c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L66 155c-1.6 2.4-3.1 4.8-4.5 7.3c-7.1 11.8-12.8 23.2-17.4 34l-7.4-3c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l8.7 3.5c-.2 .8-.4 1.6-.7 2.3c-2.6 9.4-4.2 17.4-5.3 23.5c-.5 3.1-.9 5.7-1.2 7.7c-.1 1-.2 2-.3 2.7l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.4 2.8l0 0-29.4-2.7c-.3 3.8-.4 7.5-.3 11.2l-11 3.1C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l10.3-2.9c8 15.5 20.7 28.3 36.4 36.4L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l3.1-11c17.8 .8 34.7-4.1 48.8-13.2l8 8c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-8-8c6.8-10.6 11.3-22.9 12.7-36.2l.1-.6c.2-1.3 .7-3.8 1.7-7.4l.2-.6 9.4 4c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.5-3.6c7.5-11.1 18.7-23.7 36.5-34.5l1.6 5.6c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-3-10.6c5.2-1.7 10.7-3.2 16.6-4.6c9.7-2.2 18.5-6 26.4-11.1l8 8c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-8-8c9.1-14.3 14-31.2 13.2-48.8l11-3.1c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-10.3 2.9c-8.1-15.9-21-28.5-36.4-36.4l2.9-10.3c2.7-9.6-2.8-19.5-12.4-22.3zM106.2 275.8l-37.1-3.4 0 0 37.1 3.4zM128 256c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm96-112c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm98.7 345c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l3.1-11c7.4 .3 14.9-.4 22.4-2.1c9-2.1 17.8-4.4 26.2-7l4.4 10.3c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-3.6-8.5c16.5-7.1 31.5-15.1 45.2-23.9L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-5.8-8.7c13.5-11.2 25.3-23.1 35.5-35.3l10.1 8.1c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574 357c1.6-2.4 3.1-4.8 4.5-7.3c7.1-11.8 12.8-23.2 17.4-34l7.4 3c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-8.7-3.5c.2-.8 .4-1.6 .7-2.3c2.6-9.4 4.2-17.4 5.3-23.5c.5-3.1 .9-5.7 1.2-7.7c.1-1 .2-2 .3-2.7l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.4-2.8l0 0 29.4 2.7c.3-3.8 .4-7.5 .3-11.2l11-3.1c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-10.3 2.9c-8-15.5-20.7-28.3-36.4-36.4l2.9-10.3c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.2 12.4l-3.1 11c-17.8-.8-34.7 4.1-48.8 13.2l-8-8c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l8 8c-6.8 10.6-11.3 22.9-12.7 36.2l-.1 .6c-.2 1.3-.7 3.8-1.7 7.4l-.2 .6-9.4-4c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.5 3.6c-7.5 11.1-18.7 23.7-36.5 34.5l-1.6-5.6c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l3 10.6c-5.2 1.7-10.7 3.2-16.6 4.6c-9.7 2.2-18.5 6-26.4 11.1l-8-8c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l8 8c-9.1 14.2-14 31.2-13.2 48.8l-11 3.1c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l10.3-2.9c8.1 15.9 21 28.5 36.4 36.4l-3 10.3zM570.9 239.5l0 0-37.1-3.4 37.1 3.4zM384 384c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M238.5 53.1C251 39.6 268.6 32 287 32c28.9 0 54.5 18.7 63.2 46.3L366 128.6c7.3 23 25.2 41 48.2 48.3l62.2 19.9c21.2 6.8 35.6 26.5 35.6 48.7c0 17.5-8.9 33.7-23.6 43.1l-85.9 54.8c-10.6 6.8-16.6 18.8-15.7 31.3l2.5 33.9c2.8 38.5-27.7 71.4-66.4 71.4c-13.6 0-26.9-4.2-38.1-12l-48.2-33.6c-14.8-10.3-32.3-15.8-50.3-15.8H170.2c-4.9 0-9.9 .4-14.8 1.2L83.9 432.1c-21.3 3.6-42.8-5.7-54.6-23.9c-11.8-18.1-11.8-41.4 0-59.4L56.5 307c4.9-7.5 7.5-16.3 7.5-25.3c0-9.9-3.2-19.5-9-27.4L11.3 194.6C-6.5 170.3-.7 136.2 24.2 119.2c9.7-6.6 21.2-9.8 32.9-9.1l80.6 4.6c26.1 1.5 51.5-8.7 69.4-27.9l31.5-33.8zM160 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm160-48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM288 352c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 368c-61.9 0-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112s-50.1 112-112 112zm0 64c97.2 0 176-78.8 176-176s-78.8-176-176-176S16 158.8 16 256s78.8 176 176 176z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [384, 512, [9002], \"f054\", \"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"]\n};\nvar faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM32 128V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm112 32V320H96V192h96z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 400c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 512c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm336-48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 320c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48zm-48-80c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48zM160 64c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM224 240c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm256 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128c0-35.3-28.7-64-64-64S0 92.7 0 128s28.7 64 64 64s64-28.7 64-64zM384 384c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faPercentage = faPercent;\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 432c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM240 400c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM80 432c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [448, 512, [], \"e4f5\", \"M64 0C55.1 0 46.6 3.7 40.6 10.2s-9.1 15.2-8.5 24.1L60.9 437.7c3 41.9 37.8 74.3 79.8 74.3H307.3c42 0 76.8-32.4 79.8-74.3L415.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S392.9 0 384 0H64zm51 297.5L98.4 64H349.6L333 297.5 320 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM288 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C193.7 125.9 160 172 160 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"]\n};\nvar faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSmile = faFaceSmile;\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nvar faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSyncAlt = faRotate;\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm0 416c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM48 304c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm464-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM142.9 437c18.7-18.7 18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zm0-294.2c18.7-18.7 18.7-49.1 0-67.9S93.7 56.2 75 75s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zM369.1 437c18.7 18.7 49.1 18.7 67.9 0s18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32V96H480c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zm152 40c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.7 8.4 166.9 8 160 8s-13.7 .4-20.4 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM208 176c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 400c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCogs = faGears;\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"]\n};\nvar faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM448 208c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM400 384c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm128 0c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM272 384c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM144 512c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM576 336c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm-48-80c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M287.6 .1c-19.7 0-38.3 9.1-50.4 24.6L205.9 64.9c-17.9 23-46 35.6-75.1 33.7L59.1 94c-13.5-.9-26.9 3.2-37.7 11.6C-1.3 123.2-6.7 155.2 8.8 179.4l44.5 69.2c7.1 11 10.8 23.8 10.8 36.8c0 11.9-3.1 23.5-9 33.8L27.4 367.7c-10 17.5-10 39.1 0 56.6c12.1 21.2 36.4 32.3 60.4 27.7l67-13c5.5-1.1 11.2-1.6 16.8-1.6H180c20.9 0 41 7.4 56.9 20.9l45 38.2c11.8 10 26.9 15.6 42.4 15.6c37.8 0 67.7-31.9 65.4-69.6l-3.1-50.6c-1-16.8 6.6-32.9 20.1-42.8l82.5-60.2c14.2-10.4 22.7-27 22.7-44.6c0-23.2-14.5-43.9-36.3-51.8l-58.2-21.2c-24.4-8.9-42.9-29.1-49.7-54.2L349.3 47.4C341.8 19.5 316.5 .1 287.6 .1z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM352 160c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224c0 61.9 50.1 112 112 112s112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112z\"]\n};\nvar faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80c0-26.5-21.5-48-48-48S0 53.5 0 80s21.5 48 48 48s48-21.5 48-48zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nvar faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v80c-26.5 0-48 21.5-48 48s21.5 48 48 48v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V304c26.5 0 48-21.5 48-48s-21.5-48-48-48V128z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M48 32C21.5 32 0 53.5 0 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm80 64v64H64V96h64zM48 288c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48zm80 64v64H64V352h64zM256 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H304c-26.5 0-48 21.5-48 48zm64 16h64v64H320V96zm32 352v32h32V448H352zm96 0H416v32h32V448zM416 288v32H352V288H256v96 96h64V384h32v32h96V352 320 288H416z\"]\n};\nvar faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [640, 512, [\"arrow-right-from-file\"], \"f56e\", \"M32 64C32 28.7 60.7 0 96 0H256V128c0 17.7 14.3 32 32 32H416V288H248c-13.3 0-24 10.7-24 24s10.7 24 24 24H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM416 336V288H526.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H416zm0-208H288V0L416 128z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.7 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8zm-52.3-49.3c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"]\n};\nvar faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [640, 512, [], \"e580\", \"M152.1 41.8c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72C34.9 82.7 32 89.2 32 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L118.5 120 488 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L118.5 72l33.5-30.2zM339.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6s14.9 11.1 24.2 11.1H320V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H224V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nvar faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm32-352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm64 0c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM200 384c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zm56 0c0-70.7-57.3-128-128-128S0 313.3 0 384s57.3 128 128 128s128-57.3 128-128zm328 0c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zm56 0c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128z\"]\n};\nvar faBiking = faPersonBiking;\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [129529], \"f51a\", \"M627.6 57.3c14-10.9 16.5-31 5.6-44.9s-31-16.5-44.9-5.6l-144 112-72 56-8.7 6.8-30.8-39.4c-3.7-4.8-9.8-7-15.8-5.8s-10.7 5.7-12.3 11.5l-12.5 46.3L371.1 295l48-.9c6.1-.1 11.5-3.7 14.1-9.1s1.9-11.9-1.8-16.7L403 231.9l8.6-6.7 72-56 144-112zM16.7 507.7c37.4 2.8 196.8 12 252.3-31.4c57.7-45.1 76.8-161.5 76.8-161.5L267.1 213.9s-117.6-9.6-175.3 35.5C69 267.1 50.5 304.1 36.3 344c-2.4 6.7 4.7 12.8 11 9.4L86.2 333c4.1-2.2 9.2-1.1 12 2.6s2.7 8.8-.4 12.3L24.4 430.4C13.2 442.9 5.5 458.1 2.4 474.5c-.9 4.8-1.6 8.9-2.2 12.1c-.9 5 .5 10.1 3.6 14.1s7.7 6.6 12.8 7z\"]\n};\nvar faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"]\n};\nvar faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM184 496H40c-13.3 0-24-10.7-24-24V328c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"]\n};\nvar faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm88 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM480 144c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nvar faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM512 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 160c44.2 0 80 35.8 80 80s-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80zM263.8 320c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 320c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nvar faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [640, 512, [], \"f73c\", \"M513.2 0C449 0 395.5 46.5 385.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM399.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C273.3 114.6 242.8 96 208 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H399.9zM117.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0-48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nvar faHaykal = faBahai;\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 232c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2c.3 0 .6 0 .9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M0 448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H224c-53 0-96-43-96-96V160H64c-35.3 0-64 28.7-64 64V448zm224-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"]\n};\nvar faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nvar faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"]\n};\nvar faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm16-208c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nvar faQuran = faBookQuran;\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM161.3 382.1c-5.4 12.3 8.7 21.6 21.1 16.4c22.4-9.5 47.4-14.8 73.7-14.8s51.3 5.3 73.7 14.8c12.4 5.2 26.5-4.1 21.1-16.4c-16-36.6-52.4-62.1-94.8-62.1s-78.8 25.6-94.8 62.1zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 208c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nvar faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zM125.8 177.3L51.1 320H204.9L130.2 177.3c-.4-.8-1.3-1.3-2.2-1.3s-1.7 .5-2.2 1.3zM128 128c18.8 0 36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C210.9 402.6 178.2 416 128 416s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L83.3 155c8.7-16.6 25.9-27 44.7-27zm384 48c-.9 0-1.7 .5-2.2 1.3L435.1 320H588.9L514.2 177.3c-.4-.8-1.3-1.3-2.2-1.3zm-44.7-21c8.7-16.6 25.9-27 44.7-27s36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C594.9 402.6 562.2 416 512 416s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L467.3 155z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.1-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm32-32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32H0zM32 64L58.6 46.2c-7.8-11.7-22.4-17-35.9-12.9S0 49.9 0 64l32 0zM224 352l-26.6 17.8c5.9 8.9 15.9 14.2 26.6 14.2s20.7-5.3 26.6-14.2L224 352zM416 64h32c0-14.1-9.2-26.5-22.7-30.6s-28.1 1.1-35.9 12.9L416 64zM384 448c0 17.7 14.3 32 32 32s32-14.3 32-32H384zM64 448V64H0V448H64zM5.4 81.8l192 288 53.3-35.5-192-288L5.4 81.8zm245.3 288l192-288L389.4 46.2l-192 288 53.3 35.5zM384 64V448h64V64H384z\"]\n};\nvar faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"]\n};\nvar faThList = faTableList;\nvar faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM202.9 176.8c6.5-2.2 13.7 .1 17.9 5.6L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2zm173.1 38c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.2-.4-23.7-4.4-32.6-7.4l0 0 0 0c-1.4-.5-2.7-.9-4-1.4c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.7 .6 3.3 1.1 4.9 1.6l0 0 0 0c9.1 3.1 15.6 5.3 22.6 5.5c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4c-7.2-2.2-16.7-5-24.3-9.6c-9-5.4-17.7-14.7-17.7-29.4c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c10 .2 19.7 2.3 27.9 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.3-1.9-14.1-3.3-20.1-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9zm-272 0c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.3-.4-24.2-4.5-33.2-7.6l0 0 0 0c-1.3-.4-2.5-.8-3.6-1.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.4 .5 2.7 .9 4 1.4l0 0 0 0 0 0c9.5 3.2 16.5 5.6 23.7 5.8c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4 0 0c-7.2-2.2-16.7-5-24.3-9.6C80.8 239 72.1 229.7 72 215c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c9.5 .1 22.2 2.1 31.1 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-6.6-1.8-16.8-3.3-23.3-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9z\"]\n};\nvar faSms = faCommentSms;\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [10003, 10004], \"f00c\", \"M470.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 338.7 425.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm272 32V320H96V192H352z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"]\n};\nvar faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [384, 512, [9994, \"fist-raised\"], \"f6de\", \"M160 0c17.7 0 32 14.3 32 32V144H128V32c0-17.7 14.3-32 32-32zM32 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H32V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L37.5 357.5C13.5 333.5 0 300.9 0 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"]\n};\nvar faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 128c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM256 192c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm72 80c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"]\n};\nvar faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.6-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C87.5 32 35.1 48.6 9 59.9c-5.6 2.4-9 8-9 14V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V73.9c0-6.1-3.4-11.6-9-14C540.9 48.6 488.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nvar faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.3-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.7-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-10-20.7-26.1-38-46.4-49.2c17 27.1 11 62.8-14 82.6c14.1 14.6 19.1 35.9 13.1 55.2c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-6-19.4-1-40.5 13.1-55.2c-25-19.9-31-55.5-14-82.6c-20.1 11.2-36.4 28.5-46.4 49.2l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M304 32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM192 112c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-32 16c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zM368 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm80 48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"arrow-turn-right\", \"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nvar faArrowTurnRight = faShare;\nvar faMailForward = faShare;\nvar faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [256, 512, [], \"e4c4\", \"M64 0C50.7 0 40 10.7 40 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C21.7 174.1 0 212.5 0 256V448c0 35.3 28.7 64 64 64H192c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H72l0 0 0 0L64 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C153.9 288.9 176 320.2 176 337c0 24.9-21.5 45-48 45z\"]\n};\nvar faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L277.3 424.9l-40.1 74.5c-5.2 9.7-16.3 14.6-27 11.9S192 499 192 488V392c0-5.3 1.8-10.5 5.1-14.7L362.4 164.7c2.5-7.1-6.5-14.3-13-8.4L170.4 318.2l-32 28.9 0 0c-9.2 8.3-22.3 10.6-33.8 5.8l-85-35.4C8.4 312.8 .8 302.2 .1 290s5.5-23.7 16.1-29.8l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nvar faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm91 .5c33.7-43.3 53.8-97.8 53.8-157s-20.1-113.6-53.8-157l12.4-12.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L413 53.8C369.6 20.1 315.2 0 256 0S142.4 20.1 99 53.8L86.6 41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L53.8 99C20.1 142.4 0 196.8 0 256s20.1 113.6 53.8 157L41.4 425.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L99 458.2c43.3 33.7 97.8 53.8 157 53.8s113.6-20.1 157-53.8l12.4 12.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L458.2 413zm-45.7-45.7l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM304 256c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [512, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M154.9 162c.3 .7 .7 1.5 1.1 2.2l17.8 30.9c11.1-12.6 27.4-19.8 44.4-19.1l-20.7-35.8c-6.6-11.5-21.3-15.4-32.8-8.8c-10.8 6.2-14.9 19.5-9.9 30.6zm173.6 47C399.7 231.7 448 297.8 448 372.5c0 1.5 0 3-.1 4.5c39.7-25.6 64.1-69.7 64.1-117.4V136c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 81.7L347.8 16.5C341.2 5 326.5 1.1 315.1 7.7s-15.4 21.3-8.8 32.8l64 110.9c2.2 3.8 .9 8.7-2.9 10.9s-8.7 .9-10.9-2.9l-80-138.6C269.8 9.3 255.1 5.4 243.6 12s-15.4 21.3-8.8 32.8l80 138.6c2.2 3.8 .9 8.7-2.9 10.9s-8.7 .9-10.9-2.9L237 80.5c-6.6-11.5-21.3-15.4-32.8-8.8s-15.4 21.3-8.8 32.8l44 76.2L328.5 209zM64 488c0 12.4 9.4 22.6 21.5 23.9c.8 .1 1.6 .1 2.5 .1H288.7 296c66.3 0 120-53.7 120-120c0-1.2 0-2.4-.1-3.6c0-1.2 .1-2.5 .1-3.7c0-68-44-128.2-108.9-148.9l-83.9-26.7c-12.6-4-26.1 3-30.1 15.6s3 26.1 15.6 30.1L262.6 272H56c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H56c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H88c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zm40.4-192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M416 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M178.3 506.3L40.3 368.3C35 363 32 355.8 32 348.3C32 332.7 44.7 320 60.3 320H144V112c0-8.8-7.2-16-16-16H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0h96c61.9 0 112 50.1 112 112V320h83.7c15.6 0 28.3 12.7 28.3 28.3c0 7.5-3 14.7-8.3 20L205.7 506.3C202 510 197.1 512 192 512s-10-2-13.7-5.7z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M252.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-184 184c-15.6 15.6-15.6 40.9 0 56.6l184 184c15.6 15.6 40.9 15.6 56.6 0l184-184c15.6-15.6 15.6-40.9 0-56.6l-184-184zM248 224c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM96 248c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm128 80c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm128-80c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM224 72c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm96 392c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H472.5c13.4 26.9 8.8 60.5-13.6 82.9L320 413.8V464zm160-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM240 144c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"]\n};\nvar faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM296 208c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm72 24c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-72 72c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm72 24c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBandAid = faBandage;\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H312z\"]\n};\nvar faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H208V448h96v64H480c17.7 0 32-14.3 32-32s-14.3-32-32-32V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V112zM368 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM96 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V208zm144-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V208zm-3 152.2c3.3 12.8-7.8 23.8-21 23.8H184c-13.3 0-24.3-10.9-21-23.8c10.6-41.5 48.2-72.2 93-72.2s82.5 30.7 93 72.2z\"]\n};\nvar faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM144.5 348.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 25.3-19.5 46-44.3 47.9c7.7 8.5 12.3 19.8 12.3 32.1c0 23.4-16.8 42.9-38.9 47.1c4.4 7.2 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 256c-70.7 0-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128s-57.3 128-128 128zm-45.7 48h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM496 288c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM272 336c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 48c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-48c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM352 448c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm-80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm-80-16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faAllergies = faHandDots;\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M192 64L160 0H128L96 64 64 0H48C21.5 0 0 21.5 0 48V256H384V48c0-26.5-21.5-48-48-48H224L192 64zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 464c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM224 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm192 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0S112 64.5 112 144s64.5 144 144 144zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"]\n};\nvar faUserAlt = faUserLarge;\nvar faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.7 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM129.1 323.2l83.2 88.4c6.3 6.7 17 6.7 23.3 0l83.2-88.4c73.7 14.9 129.1 80 129.1 158.1c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-78.1 55.5-143.2 129.1-158.1zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M122.4 1.2C127.6-.9 133.4-.2 137.9 3l70.3 50.3L278.5 3c4.5-3.2 10.3-3.9 15.4-1.8s8.8 6.7 9.7 12.2l14.1 85.3L403 112.8c5.4 .9 10.1 4.6 12.2 9.7s1.4 10.9-1.8 15.4l-38.8 54.3c-2.2-.1-4.3-.2-6.5-.2c-23.2 0-45 6.2-63.8 17c.1-12.5-2.2-25.3-7.3-37.6c-20.3-49-76.4-72.2-125.4-52s-72.2 76.4-52 125.4c18.3 44.3 66 67.5 111.1 56.6c-36.3 18.2-62.8 53.3-69.1 94.9l-23.6 16.9c-4.5 3.2-10.3 3.9-15.4 1.8s-8.8-6.7-9.7-12.2L98.7 317.7 13.4 303.6c-5.5-.9-10.1-4.6-12.2-9.7S-.2 282.9 3 278.5l50.3-70.3L3 137.9c-3.2-4.5-3.9-10.3-1.8-15.4s6.7-8.8 12.2-9.7L98.7 98.7l14.1-85.3c.9-5.5 4.6-10.1 9.7-12.2zM149 232.7c-13.5-32.7 2-70.1 34.6-83.6s70.1 2 83.6 34.6s-2 70.1-34.6 83.6s-70.1-2-83.6-34.6zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"]\n};\nvar faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H290.7c17 0 33.3-6.7 45.3-18.7L429.3 368c12-12 18.7-28.3 18.7-45.3V96c0-35.3-28.7-64-64-64H64zm0 64H384V320H320c-17.7 0-32 14.3-32 32v64H64V96z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96zM160.3 256H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7V479.2z\"]\n};\nvar faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nvar faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM303.6 208c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm-128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nvar faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [128, 512, [10069, 10071, 61738], \"21\", \"M96 64c0-17.7-14.3-32-32-32S32 46.3 32 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM64 480c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [448, 512, [], \"e4bb\", \"M224 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H416c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C331.4 52.6 280.1 32 224 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM100.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H32c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C20.6 148.6 0 199.9 0 256c0 10.9 .8 21.5 2.3 32H67.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM445.7 224H380.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H416c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C427.4 363.4 448 312.1 448 256c0-10.9-.8-21.5-2.3-32zM224 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H32c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C116.6 459.4 167.9 480 224 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zm-16-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [448, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M128 32c17.7 0 32 14.3 32 32V99.3L279.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L160 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L160 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C410.5 399.8 326.1 480 223.8 480H128c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L96 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L96 117.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c10.6 1.6 42.1 6.7 55.1 10c17.1 4.3 27.5 21.7 23.2 38.9s-21.7 27.5-38.9 23.2c-9.3-2.4-37.6-7-48.9-8.7c-32.1-4.8-59.6-2.4-78.5 4.9c-18.3 7-25.9 16.9-27.9 28c-1.9 10.7-.5 16.8 1.3 20.6c1.9 4 5.6 8.5 12.9 13.4c16.2 10.8 41.1 17.9 73.3 26.7l2.8 .8c28.4 7.7 63.2 17.2 89 34.3c14.1 9.4 27.3 22.1 35.5 39.7c8.3 17.8 10.1 37.8 6.3 59.1c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.2-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.4 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.7 .5-16.8-1.3-20.6c-1.9-4-5.6-8.5-12.9-13.4c-16.2-10.8-41.1-17.9-73.3-26.7l-2.8-.8c-28.4-7.7-63.2-17.2-89-34.3c-14.1-9.4-27.3-22.1-35.5-39.7c-8.3-17.8-10.1-37.8-6.3-59.1C25 114.1 53 89.3 86 76.7c13-5 27.2-8.2 42-10V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160c44.2 0 80-35.8 80-80s-35.8-80-80-80S64 35.8 64 80s35.8 80 80 80zm368 0c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3L574.4 311c-8.9-7.6-19.1-13.6-30.4-17.6v-21c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v21c-11.2 4-21.5 10-30.4 17.6l-18.2-10.5c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l18.2 10.5c-1 5.7-1.6 11.6-1.6 17.6s.6 11.9 1.6 17.5l-18.2 10.5c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3L449.6 457c8.9 7.6 19.2 13.6 30.4 17.6v21c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-21c11.2-4 21.5-10 30.4-17.6l18.2 10.5c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-18.2-10.5c1-5.7 1.6-11.6 1.6-17.5s-.6-11.9-1.6-17.6l18.2-10.5zM552 384c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"]\n};\nvar faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8.1-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zm128-96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [640, 512, [], \"f0e9\", \"M320 0c17.7 0 32 14.3 32 32V49.7C483.8 63.4 589.7 161 605.9 285.9c2 15.6-17.3 24.4-27.8 12.7C564.1 283 536.8 272 512 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C391 299.5 358.7 272 320 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C199 299.5 166.7 272 128 272c-24.8 0-52.1 11-66.1 26.7c-10.5 11.7-29.8 2.9-27.8-12.7C50.3 161 156.2 63.4 288 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nvar faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 64C0 46.3 14.3 32 32 32H160c123.7 0 224 100.3 224 224s-100.3 224-224 224H32c-17.7 0-32-14.3-32-32V64zM64 96V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160H64z\"]\n};\nvar faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"]\n};\nvar faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M399.3 509.7c-58.2-8.8-108.2-72.8-137.6-119.7c-20-31.9-25.1-70.3-19.6-107.7L266.3 118c1.4-9.8 5.1-19.2 12.9-25.2c20.2-15.6 72.4-41.5 185.1-24.5s155.2 57.4 170 78.3c5.7 8 6.5 18.1 5.1 27.9L615.2 338.8c-5.5 37.3-21.5 72.6-49.8 97.2c-41.7 36.1-108 82.5-166.1 73.7zm17.1-277.7c.1-.5 .2-1.1 .3-1.6c3.2-21.8-11.6-42-33.1-45.3s-41.5 11.8-44.7 33.5c-.1 .5-.1 1.1-.2 1.6c-.6 5.4 5.2 8.4 10.3 6.7c9-3 18.8-3.9 28.7-2.4s19.1 5.3 26.8 10.8c4.4 3.1 10.8 2 11.8-3.3zm112.6 22.2c4.4 3.1 10.8 2 11.8-3.3c.1-.5 .2-1.1 .3-1.6c3.2-21.8-11.6-42-33.1-45.3s-41.5 11.8-44.7 33.5c-.1 .5-.1 1.1-.2 1.6c-.6 5.4 5.2 8.4 10.3 6.7c9-3 18.8-3.9 28.7-2.4s19.1 5.3 26.8 10.8zm-11.5 85.2c-28.8 12.8-61.4 17.8-94.9 12.8s-63.2-19.5-87-40.3c-6.3-5.5-16.2-1.7-15.2 6.7c5.9 48.5 43 89.1 93 96.7s97.2-20.2 116.8-64.9c3.4-7.7-5-14.3-12.6-10.9zM240.7 446.9c-58.2 8.8-124.5-37.5-166.1-73.7c-28.3-24.5-44.3-59.8-49.8-97.2L.6 111.8C-.8 102 0 91.9 5.7 83.9C20.5 63 63 22.7 175.7 5.6s164.9 8.9 185.1 24.5c.9 .7 1.7 1.4 2.4 2.1c-52.8 4.8-85.1 21-103.6 35.3c-17 13.1-23 32-25 45.9L215.3 244.7c-2.6 .1-5.2 .4-7.9 .8c-35.2 5.3-61.8 32.7-68.2 66.3c-1.6 8.2 8.3 12.2 14.8 7c15.6-12.4 34.1-21.3 54.7-25.4c-3 38.4 4 78.7 25.9 113.6c6.9 11 15 23.1 24.2 35.4c-5.9 2.1-11.9 3.6-18 4.5zM174.1 157c-1-5.3-7.4-6.4-11.8-3.3c-7.7 5.5-16.8 9.3-26.8 10.8s-19.8 .6-28.7-2.4c-5.1-1.7-10.9 1.3-10.3 6.7c.1 .5 .1 1.1 .2 1.6c3.2 21.8 23.2 36.8 44.7 33.5s36.3-23.5 33.1-45.3c-.1-.5-.2-1.1-.3-1.6z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0V96L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm-64-64c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H224zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32H352c88.4 0 160-71.6 160-160V226.3c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64v88c0 22.1 17.9 40 40 40s40-17.9 40-40V160c0-8.8 7.2-16 16-16s16 7.2 16 16v56c0 39.8-32.2 72-72 72z\"]\n};\nvar faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nvar faHandshakeAlt = faHandshakeSimple;\nvar faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nvar faVideoCamera = faVideo;\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm424 16c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M178.3 5.7L40.3 143.7C35 149 32 156.2 32 163.7C32 179.3 44.7 192 60.3 192H144V400c0 8.8-7.2 16-16 16H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96c61.9 0 112-50.1 112-112V192h83.7c15.6 0 28.3-12.7 28.3-28.3c0-7.5-3-14.7-8.3-20L205.7 5.7C202 2 197.1 0 192 0s-10 2-13.7 5.7z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0: fa0,\n fa1: fa1,\n fa2: fa2,\n fa3: fa3,\n fa4: fa4,\n fa5: fa5,\n fa6: fa6,\n fa7: fa7,\n fa8: fa8,\n fa9: fa9,\n faFillDrip: faFillDrip,\n faArrowsToCircle: faArrowsToCircle,\n faCircleChevronRight: faCircleChevronRight,\n faChevronCircleRight: faChevronCircleRight,\n faAt: faAt,\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faTextHeight: faTextHeight,\n faUserXmark: faUserXmark,\n faUserTimes: faUserTimes,\n faStethoscope: faStethoscope,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faInfo: faInfo,\n faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n faCompressAlt: faCompressAlt,\n faExplosion: faExplosion,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faWaveSquare: faWaveSquare,\n faRing: faRing,\n faBuildingUn: faBuildingUn,\n faDiceThree: faDiceThree,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faAnchorCircleCheck: faAnchorCircleCheck,\n faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n faVolleyball: faVolleyball,\n faVolleyballBall: faVolleyballBall,\n faArrowsUpToLine: faArrowsUpToLine,\n faSortDown: faSortDown,\n faSortDesc: faSortDesc,\n faCircleMinus: faCircleMinus,\n faMinusCircle: faMinusCircle,\n faDoorOpen: faDoorOpen,\n faRightFromBracket: faRightFromBracket,\n faSignOutAlt: faSignOutAlt,\n faAtom: faAtom,\n faSoap: faSoap,\n faIcons: faIcons,\n faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faBridgeCircleCheck: faBridgeCircleCheck,\n faPumpMedical: faPumpMedical,\n faFingerprint: faFingerprint,\n faHandPointRight: faHandPointRight,\n faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n faSearchLocation: faSearchLocation,\n faForwardStep: faForwardStep,\n faStepForward: faStepForward,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFlagCheckered: faFlagCheckered,\n faFootball: faFootball,\n faFootballBall: faFootballBall,\n faSchoolCircleExclamation: faSchoolCircleExclamation,\n faCrop: faCrop,\n faAnglesDown: faAnglesDown,\n faAngleDoubleDown: faAngleDoubleDown,\n faUsersRectangle: faUsersRectangle,\n faPeopleRoof: faPeopleRoof,\n faPeopleLine: faPeopleLine,\n faBeerMugEmpty: faBeerMugEmpty,\n faBeer: faBeer,\n faDiagramPredecessor: faDiagramPredecessor,\n faArrowUpLong: faArrowUpLong,\n faLongArrowUp: faLongArrowUp,\n faFireFlameSimple: faFireFlameSimple,\n faBurn: faBurn,\n faPerson: faPerson,\n faMale: faMale,\n faLaptop: faLaptop,\n faFileCsv: faFileCsv,\n faMenorah: faMenorah,\n faTruckPlane: faTruckPlane,\n faRecordVinyl: faRecordVinyl,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faBong: faBong,\n faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n faPastafarianism: faPastafarianism,\n faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n faSpoon: faSpoon,\n faUtensilSpoon: faUtensilSpoon,\n faJarWheat: faJarWheat,\n faEnvelopesBulk: faEnvelopesBulk,\n faMailBulk: faMailBulk,\n faFileCircleExclamation: faFileCircleExclamation,\n faCircleH: faCircleH,\n faHospitalSymbol: faHospitalSymbol,\n faPager: faPager,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faStrikethrough: faStrikethrough,\n faK: faK,\n faLandmarkFlag: faLandmarkFlag,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faBackward: faBackward,\n faCaretRight: faCaretRight,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faCodePullRequest: faCodePullRequest,\n faClipboardList: faClipboardList,\n faTruckRampBox: faTruckRampBox,\n faTruckLoading: faTruckLoading,\n faUserCheck: faUserCheck,\n faVialVirus: faVialVirus,\n faSheetPlastic: faSheetPlastic,\n faBlog: faBlog,\n faUserNinja: faUserNinja,\n faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n faScrollTorah: faScrollTorah,\n faTorah: faTorah,\n faBroomBall: faBroomBall,\n faQuidditch: faQuidditch,\n faQuidditchBroomBall: faQuidditchBroomBall,\n faToggleOff: faToggleOff,\n faBoxArchive: faBoxArchive,\n faArchive: faArchive,\n faPersonDrowning: faPersonDrowning,\n faArrowDown91: faArrowDown91,\n faSortNumericDesc: faSortNumericDesc,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faSprayCan: faSprayCan,\n faTruckMonster: faTruckMonster,\n faW: faW,\n faEarthAfrica: faEarthAfrica,\n faGlobeAfrica: faGlobeAfrica,\n faRainbow: faRainbow,\n faCircleNotch: faCircleNotch,\n faTabletScreenButton: faTabletScreenButton,\n faTabletAlt: faTabletAlt,\n faPaw: faPaw,\n faCloud: faCloud,\n faTrowelBricks: faTrowelBricks,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faHospitalUser: faHospitalUser,\n faTentArrowLeftRight: faTentArrowLeftRight,\n faGavel: faGavel,\n faLegal: faLegal,\n faBinoculars: faBinoculars,\n faMicrophoneSlash: faMicrophoneSlash,\n faBoxTissue: faBoxTissue,\n faMotorcycle: faMotorcycle,\n faBellConcierge: faBellConcierge,\n faConciergeBell: faConciergeBell,\n faPenRuler: faPenRuler,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n faMarsAndVenusBurst: faMarsAndVenusBurst,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faScissors: faScissors,\n faCut: faCut,\n faSunPlantWilt: faSunPlantWilt,\n faToiletsPortable: faToiletsPortable,\n faHockeyPuck: faHockeyPuck,\n faTable: faTable,\n faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n faTachographDigital: faTachographDigital,\n faDigitalTachograph: faDigitalTachograph,\n faUsersSlash: faUsersSlash,\n faClover: faClover,\n faReply: faReply,\n faMailReply: faMailReply,\n faStarAndCrescent: faStarAndCrescent,\n faHouseFire: faHouseFire,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faHelicopter: faHelicopter,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFileCircleQuestion: faFileCircleQuestion,\n faLaptopCode: faLaptopCode,\n faSwatchbook: faSwatchbook,\n faPrescriptionBottle: faPrescriptionBottle,\n faBars: faBars,\n faNavicon: faNavicon,\n faPeopleGroup: faPeopleGroup,\n faHourglassEnd: faHourglassEnd,\n faHourglass3: faHourglass3,\n faHeartCrack: faHeartCrack,\n faHeartBroken: faHeartBroken,\n faSquareUpRight: faSquareUpRight,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faFilm: faFilm,\n faRulerHorizontal: faRulerHorizontal,\n faPeopleRobbery: faPeopleRobbery,\n faLightbulb: faLightbulb,\n faCaretLeft: faCaretLeft,\n faCircleExclamation: faCircleExclamation,\n faExclamationCircle: faExclamationCircle,\n faSchoolCircleXmark: faSchoolCircleXmark,\n faArrowRightFromBracket: faArrowRightFromBracket,\n faSignOut: faSignOut,\n faCircleChevronDown: faCircleChevronDown,\n faChevronCircleDown: faChevronCircleDown,\n faUnlockKeyhole: faUnlockKeyhole,\n faUnlockAlt: faUnlockAlt,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faHeadphonesSimple: faHeadphonesSimple,\n faHeadphonesAlt: faHeadphonesAlt,\n faSitemap: faSitemap,\n faCircleDollarToSlot: faCircleDollarToSlot,\n faDonate: faDonate,\n faMemory: faMemory,\n faRoadSpikes: faRoadSpikes,\n faFireBurner: faFireBurner,\n faFlag: faFlag,\n faHanukiah: faHanukiah,\n faFeather: faFeather,\n faVolumeLow: faVolumeLow,\n faVolumeDown: faVolumeDown,\n faCommentSlash: faCommentSlash,\n faCloudSunRain: faCloudSunRain,\n faCompress: faCompress,\n faWheatAwn: faWheatAwn,\n faWheatAlt: faWheatAlt,\n faAnkh: faAnkh,\n faHandsHoldingChild: faHandsHoldingChild,\n faAsterisk: faAsterisk,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faPesetaSign: faPesetaSign,\n faHeading: faHeading,\n faHeader: faHeader,\n faGhost: faGhost,\n faList: faList,\n faListSquares: faListSquares,\n faSquarePhoneFlip: faSquarePhoneFlip,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faCartPlus: faCartPlus,\n faGamepad: faGamepad,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faEgg: faEgg,\n faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n faCampground: faCampground,\n faFolderPlus: faFolderPlus,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPaintbrush: faPaintbrush,\n faPaintBrush: faPaintBrush,\n faLock: faLock,\n faGasPump: faGasPump,\n faHotTubPerson: faHotTubPerson,\n faHotTub: faHotTub,\n faMapLocation: faMapLocation,\n faMapMarked: faMapMarked,\n faHouseFloodWater: faHouseFloodWater,\n faTree: faTree,\n faBridgeLock: faBridgeLock,\n faSackDollar: faSackDollar,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faCarSide: faCarSide,\n faShareNodes: faShareNodes,\n faShareAlt: faShareAlt,\n faHeartCircleMinus: faHeartCircleMinus,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faMicroscope: faMicroscope,\n faSink: faSink,\n faBagShopping: faBagShopping,\n faShoppingBag: faShoppingBag,\n faArrowDownZA: faArrowDownZA,\n faSortAlphaDesc: faSortAlphaDesc,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faMitten: faMitten,\n faPersonRays: faPersonRays,\n faUsers: faUsers,\n faEyeSlash: faEyeSlash,\n faFlaskVial: faFlaskVial,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faOm: faOm,\n faWorm: faWorm,\n faHouseCircleXmark: faHouseCircleXmark,\n faPlug: faPlug,\n faChevronUp: faChevronUp,\n faHandSpock: faHandSpock,\n faStopwatch: faStopwatch,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faBridgeCircleXmark: faBridgeCircleXmark,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faEarDeaf: faEarDeaf,\n faDeaf: faDeaf,\n faDeafness: faDeafness,\n faHardOfHearing: faHardOfHearing,\n faRoadCircleCheck: faRoadCircleCheck,\n faDiceFive: faDiceFive,\n faSquareRss: faSquareRss,\n faRssSquare: faRssSquare,\n faLandMineOn: faLandMineOn,\n faICursor: faICursor,\n faStamp: faStamp,\n faStairs: faStairs,\n faI: faI,\n faHryvniaSign: faHryvniaSign,\n faHryvnia: faHryvnia,\n faPills: faPills,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faTooth: faTooth,\n faV: faV,\n faBicycle: faBicycle,\n faStaffSnake: faStaffSnake,\n faRodAsclepius: faRodAsclepius,\n faRodSnake: faRodSnake,\n faStaffAesculapius: faStaffAesculapius,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faTruckMedical: faTruckMedical,\n faAmbulance: faAmbulance,\n faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n faSnowman: faSnowman,\n faMortarPestle: faMortarPestle,\n faRoadBarrier: faRoadBarrier,\n faSchool: faSchool,\n faIgloo: faIgloo,\n faJoint: faJoint,\n faAngleRight: faAngleRight,\n faHorse: faHorse,\n faQ: faQ,\n faG: faG,\n faNotesMedical: faNotesMedical,\n faTemperatureHalf: faTemperatureHalf,\n faTemperature2: faTemperature2,\n faThermometer2: faThermometer2,\n faThermometerHalf: faThermometerHalf,\n faDongSign: faDongSign,\n faCapsules: faCapsules,\n faPooStorm: faPooStorm,\n faPooBolt: faPooBolt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faMoneyBill: faMoneyBill,\n faBookmark: faBookmark,\n faAlignJustify: faAlignJustify,\n faUmbrellaBeach: faUmbrellaBeach,\n faHelmetUn: faHelmetUn,\n faBullseye: faBullseye,\n faBacon: faBacon,\n faHandPointDown: faHandPointDown,\n faArrowUpFromBracket: faArrowUpFromBracket,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faFileWaveform: faFileWaveform,\n faFileMedicalAlt: faFileMedicalAlt,\n faRadiation: faRadiation,\n faChartSimple: faChartSimple,\n faMarsStroke: faMarsStroke,\n faVial: faVial,\n faGauge: faGauge,\n faDashboard: faDashboard,\n faGaugeMed: faGaugeMed,\n faTachometerAltAverage: faTachometerAltAverage,\n faWandMagicSparkles: faWandMagicSparkles,\n faMagicWandSparkles: faMagicWandSparkles,\n faE: faE,\n faPenClip: faPenClip,\n faPenAlt: faPenAlt,\n faBridgeCircleExclamation: faBridgeCircleExclamation,\n faUser: faUser,\n faSchoolCircleCheck: faSchoolCircleCheck,\n faDumpster: faDumpster,\n faVanShuttle: faVanShuttle,\n faShuttleVan: faShuttleVan,\n faBuildingUser: faBuildingUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faHighlighter: faHighlighter,\n faKey: faKey,\n faBullhorn: faBullhorn,\n faGlobe: faGlobe,\n faSynagogue: faSynagogue,\n faPersonHalfDress: faPersonHalfDress,\n faRoadBridge: faRoadBridge,\n faLocationArrow: faLocationArrow,\n faC: faC,\n faTabletButton: faTabletButton,\n faBuildingLock: faBuildingLock,\n faPizzaSlice: faPizzaSlice,\n faMoneyBillWave: faMoneyBillWave,\n faChartArea: faChartArea,\n faAreaChart: faAreaChart,\n faHouseFlag: faHouseFlag,\n faPersonCircleMinus: faPersonCircleMinus,\n faBan: faBan,\n faCancel: faCancel,\n faCameraRotate: faCameraRotate,\n faSprayCanSparkles: faSprayCanSparkles,\n faAirFreshener: faAirFreshener,\n faStar: faStar,\n faRepeat: faRepeat,\n faCross: faCross,\n faBox: faBox,\n faVenusMars: faVenusMars,\n faArrowPointer: faArrowPointer,\n faMousePointer: faMousePointer,\n faMaximize: faMaximize,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faChargingStation: faChargingStation,\n faShapes: faShapes,\n faTriangleCircleSquare: faTriangleCircleSquare,\n faShuffle: faShuffle,\n faRandom: faRandom,\n faPersonRunning: faPersonRunning,\n faRunning: faRunning,\n faMobileRetro: faMobileRetro,\n faGripLinesVertical: faGripLinesVertical,\n faSpider: faSpider,\n faHandsBound: faHandsBound,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faPlaneCircleExclamation: faPlaneCircleExclamation,\n faXRay: faXRay,\n faSpellCheck: faSpellCheck,\n faSlash: faSlash,\n faComputerMouse: faComputerMouse,\n faMouse: faMouse,\n faArrowRightToBracket: faArrowRightToBracket,\n faSignIn: faSignIn,\n faShopSlash: faShopSlash,\n faStoreAltSlash: faStoreAltSlash,\n faServer: faServer,\n faVirusCovidSlash: faVirusCovidSlash,\n faShopLock: faShopLock,\n faHourglassStart: faHourglassStart,\n faHourglass1: faHourglass1,\n faBlenderPhone: faBlenderPhone,\n faBuildingWheat: faBuildingWheat,\n faPersonBreastfeeding: faPersonBreastfeeding,\n faRightToBracket: faRightToBracket,\n faSignInAlt: faSignInAlt,\n faVenus: faVenus,\n faPassport: faPassport,\n faHeartPulse: faHeartPulse,\n faHeartbeat: faHeartbeat,\n faPeopleCarryBox: faPeopleCarryBox,\n faPeopleCarry: faPeopleCarry,\n faTemperatureHigh: faTemperatureHigh,\n faMicrochip: faMicrochip,\n faCrown: faCrown,\n faWeightHanging: faWeightHanging,\n faXmarksLines: faXmarksLines,\n faFilePrescription: faFilePrescription,\n faWeightScale: faWeightScale,\n faWeight: faWeight,\n faUserGroup: faUserGroup,\n faUserFriends: faUserFriends,\n faArrowUpAZ: faArrowUpAZ,\n faSortAlphaUp: faSortAlphaUp,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faWheelchair: faWheelchair,\n faCircleArrowUp: faCircleArrowUp,\n faArrowCircleUp: faArrowCircleUp,\n faToggleOn: faToggleOn,\n faPersonWalking: faPersonWalking,\n faWalking: faWalking,\n faL: faL,\n faFire: faFire,\n faBedPulse: faBedPulse,\n faProcedures: faProcedures,\n faShuttleSpace: faShuttleSpace,\n faSpaceShuttle: faSpaceShuttle,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faHeartCirclePlus: faHeartCirclePlus,\n faCodeFork: faCodeFork,\n faCity: faCity,\n faMicrophoneLines: faMicrophoneLines,\n faMicrophoneAlt: faMicrophoneAlt,\n faPepperHot: faPepperHot,\n faUnlock: faUnlock,\n faColonSign: faColonSign,\n faHeadset: faHeadset,\n faStoreSlash: faStoreSlash,\n faRoadCircleXmark: faRoadCircleXmark,\n faUserMinus: faUserMinus,\n faMarsStrokeUp: faMarsStrokeUp,\n faMarsStrokeV: faMarsStrokeV,\n faChampagneGlasses: faChampagneGlasses,\n faGlassCheers: faGlassCheers,\n faClipboard: faClipboard,\n faHouseCircleExclamation: faHouseCircleExclamation,\n faFileArrowUp: faFileArrowUp,\n faFileUpload: faFileUpload,\n faWifi: faWifi,\n faWifi3: faWifi3,\n faWifiStrong: faWifiStrong,\n faBath: faBath,\n faBathtub: faBathtub,\n faUnderline: faUnderline,\n faUserPen: faUserPen,\n faUserEdit: faUserEdit,\n faSignature: faSignature,\n faStroopwafel: faStroopwafel,\n faBold: faBold,\n faAnchorLock: faAnchorLock,\n faBuildingNgo: faBuildingNgo,\n faManatSign: faManatSign,\n faNotEqual: faNotEqual,\n faBorderTopLeft: faBorderTopLeft,\n faBorderStyle: faBorderStyle,\n faMapLocationDot: faMapLocationDot,\n faMapMarkedAlt: faMapMarkedAlt,\n faJedi: faJedi,\n faSquarePollVertical: faSquarePollVertical,\n faPoll: faPoll,\n faMugHot: faMugHot,\n faCarBattery: faCarBattery,\n faBatteryCar: faBatteryCar,\n faGift: faGift,\n faDiceTwo: faDiceTwo,\n faChessQueen: faChessQueen,\n faGlasses: faGlasses,\n faChessBoard: faChessBoard,\n faBuildingCircleCheck: faBuildingCircleCheck,\n faPersonChalkboard: faPersonChalkboard,\n faMarsStrokeRight: faMarsStrokeRight,\n faMarsStrokeH: faMarsStrokeH,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faCloudShowersWater: faCloudShowersWater,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faHandsBubbles: faHandsBubbles,\n faHandsWash: faHandsWash,\n faLessThanEqual: faLessThanEqual,\n faTrain: faTrain,\n faEyeLowVision: faEyeLowVision,\n faLowVision: faLowVision,\n faCrow: faCrow,\n faSailboat: faSailboat,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faToriiGate: faToriiGate,\n faFrog: faFrog,\n faBucket: faBucket,\n faImage: faImage,\n faMicrophone: faMicrophone,\n faCow: faCow,\n faCaretUp: faCaretUp,\n faScrewdriver: faScrewdriver,\n faFolderClosed: faFolderClosed,\n faHouseTsunami: faHouseTsunami,\n faSquareNfi: faSquareNfi,\n faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n faMartiniGlass: faMartiniGlass,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faRotateLeft: faRotateLeft,\n faRotateBack: faRotateBack,\n faRotateBackward: faRotateBackward,\n faUndoAlt: faUndoAlt,\n faTableColumns: faTableColumns,\n faColumns: faColumns,\n faLemon: faLemon,\n faHeadSideMask: faHeadSideMask,\n faHandshake: faHandshake,\n faGem: faGem,\n faDolly: faDolly,\n faDollyBox: faDollyBox,\n faSmoking: faSmoking,\n faMinimize: faMinimize,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faMonument: faMonument,\n faSnowplow: faSnowplow,\n faAnglesRight: faAnglesRight,\n faAngleDoubleRight: faAngleDoubleRight,\n faCannabis: faCannabis,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faTablets: faTablets,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faEur: faEur,\n faEuro: faEuro,\n faChair: faChair,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faCompassDrafting: faCompassDrafting,\n faDraftingCompass: faDraftingCompass,\n faPlateWheat: faPlateWheat,\n faIcicles: faIcicles,\n faPersonShelter: faPersonShelter,\n faNeuter: faNeuter,\n faIdBadge: faIdBadge,\n faMarker: faMarker,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faHelicopterSymbol: faHelicopterSymbol,\n faUniversalAccess: faUniversalAccess,\n faCircleChevronUp: faCircleChevronUp,\n faChevronCircleUp: faChevronCircleUp,\n faLariSign: faLariSign,\n faVolcano: faVolcano,\n faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n faSterlingSign: faSterlingSign,\n faGbp: faGbp,\n faPoundSign: faPoundSign,\n faViruses: faViruses,\n faSquarePersonConfined: faSquarePersonConfined,\n faUserTie: faUserTie,\n faArrowDownLong: faArrowDownLong,\n faLongArrowDown: faLongArrowDown,\n faTentArrowDownToLine: faTentArrowDownToLine,\n faCertificate: faCertificate,\n faReplyAll: faReplyAll,\n faMailReplyAll: faMailReplyAll,\n faSuitcase: faSuitcase,\n faPersonSkating: faPersonSkating,\n faSkating: faSkating,\n faFilterCircleDollar: faFilterCircleDollar,\n faFunnelDollar: faFunnelDollar,\n faCameraRetro: faCameraRetro,\n faCircleArrowDown: faCircleArrowDown,\n faArrowCircleDown: faArrowCircleDown,\n faFileImport: faFileImport,\n faArrowRightToFile: faArrowRightToFile,\n faSquareArrowUpRight: faSquareArrowUpRight,\n faExternalLinkSquare: faExternalLinkSquare,\n faBoxOpen: faBoxOpen,\n faScroll: faScroll,\n faSpa: faSpa,\n faLocationPinLock: faLocationPinLock,\n faPause: faPause,\n faHillAvalanche: faHillAvalanche,\n faTemperatureEmpty: faTemperatureEmpty,\n faTemperature0: faTemperature0,\n faThermometer0: faThermometer0,\n faThermometerEmpty: faThermometerEmpty,\n faBomb: faBomb,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n faBalanceScaleRight: faBalanceScaleRight,\n faSubscript: faSubscript,\n faDiamondTurnRight: faDiamondTurnRight,\n faDirections: faDirections,\n faBurst: faBurst,\n faHouseLaptop: faHouseLaptop,\n faLaptopHouse: faLaptopHouse,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faMoneyBills: faMoneyBills,\n faSmog: faSmog,\n faCrutch: faCrutch,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faCloudArrowUp: faCloudArrowUp,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faPalette: faPalette,\n faArrowsTurnRight: faArrowsTurnRight,\n faVest: faVest,\n faFerry: faFerry,\n faArrowsDownToPeople: faArrowsDownToPeople,\n faSeedling: faSeedling,\n faSprout: faSprout,\n faLeftRight: faLeftRight,\n faArrowsAltH: faArrowsAltH,\n faBoxesPacking: faBoxesPacking,\n faCircleArrowLeft: faCircleArrowLeft,\n faArrowCircleLeft: faArrowCircleLeft,\n faGroupArrowsRotate: faGroupArrowsRotate,\n faBowlFood: faBowlFood,\n faCandyCane: faCandyCane,\n faArrowDownWideShort: faArrowDownWideShort,\n faSortAmountAsc: faSortAmountAsc,\n faSortAmountDown: faSortAmountDown,\n faCloudBolt: faCloudBolt,\n faThunderstorm: faThunderstorm,\n faTextSlash: faTextSlash,\n faRemoveFormat: faRemoveFormat,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faArrowsLeftRight: faArrowsLeftRight,\n faArrowsH: faArrowsH,\n faHouseLock: faHouseLock,\n faCloudArrowDown: faCloudArrowDown,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faChildren: faChildren,\n faChalkboard: faChalkboard,\n faBlackboard: faBlackboard,\n faUserLargeSlash: faUserLargeSlash,\n faUserAltSlash: faUserAltSlash,\n faEnvelopeOpen: faEnvelopeOpen,\n faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faMattressPillow: faMattressPillow,\n faGuaraniSign: faGuaraniSign,\n faArrowsRotate: faArrowsRotate,\n faRefresh: faRefresh,\n faSync: faSync,\n faFireExtinguisher: faFireExtinguisher,\n faCruzeiroSign: faCruzeiroSign,\n faGreaterThanEqual: faGreaterThanEqual,\n faShieldHalved: faShieldHalved,\n faShieldAlt: faShieldAlt,\n faBookAtlas: faBookAtlas,\n faAtlas: faAtlas,\n faVirus: faVirus,\n faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n faLayerGroup: faLayerGroup,\n faArrowsToDot: faArrowsToDot,\n faArchway: faArchway,\n faHeartCircleCheck: faHeartCircleCheck,\n faHouseChimneyCrack: faHouseChimneyCrack,\n faHouseDamage: faHouseDamage,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faMartiniGlassEmpty: faMartiniGlassEmpty,\n faGlassMartini: faGlassMartini,\n faCouch: faCouch,\n faCediSign: faCediSign,\n faItalic: faItalic,\n faChurch: faChurch,\n faCommentsDollar: faCommentsDollar,\n faDemocrat: faDemocrat,\n faZ: faZ,\n faPersonSkiing: faPersonSkiing,\n faSkiing: faSkiing,\n faRoadLock: faRoadLock,\n faA: faA,\n faTemperatureArrowDown: faTemperatureArrowDown,\n faTemperatureDown: faTemperatureDown,\n faFeatherPointed: faFeatherPointed,\n faFeatherAlt: faFeatherAlt,\n faP: faP,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faRectangleAd: faRectangleAd,\n faAd: faAd,\n faCircleArrowRight: faCircleArrowRight,\n faArrowCircleRight: faArrowCircleRight,\n faFilterCircleXmark: faFilterCircleXmark,\n faLocust: faLocust,\n faSort: faSort,\n faUnsorted: faUnsorted,\n faListOl: faListOl,\n faList12: faList12,\n faListNumeric: faListNumeric,\n faPersonDressBurst: faPersonDressBurst,\n faMoneyCheckDollar: faMoneyCheckDollar,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faVectorSquare: faVectorSquare,\n faBreadSlice: faBreadSlice,\n faLanguage: faLanguage,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faFilter: faFilter,\n faQuestion: faQuestion,\n faFileSignature: faFileSignature,\n faUpDownLeftRight: faUpDownLeftRight,\n faArrowsAlt: faArrowsAlt,\n faHouseChimneyUser: faHouseChimneyUser,\n faHandHoldingHeart: faHandHoldingHeart,\n faPuzzlePiece: faPuzzlePiece,\n faMoneyCheck: faMoneyCheck,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faCode: faCode,\n faWhiskeyGlass: faWhiskeyGlass,\n faGlassWhiskey: faGlassWhiskey,\n faBuildingCircleExclamation: faBuildingCircleExclamation,\n faMagnifyingGlassChart: faMagnifyingGlassChart,\n faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n faExternalLink: faExternalLink,\n faCubesStacked: faCubesStacked,\n faWonSign: faWonSign,\n faKrw: faKrw,\n faWon: faWon,\n faVirusCovid: faVirusCovid,\n faAustralSign: faAustralSign,\n faF: faF,\n faLeaf: faLeaf,\n faRoad: faRoad,\n faTaxi: faTaxi,\n faCab: faCab,\n faPersonCirclePlus: faPersonCirclePlus,\n faChartPie: faChartPie,\n faPieChart: faPieChart,\n faBoltLightning: faBoltLightning,\n faSackXmark: faSackXmark,\n faFileExcel: faFileExcel,\n faFileContract: faFileContract,\n faFishFins: faFishFins,\n faBuildingFlag: faBuildingFlag,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faPoop: faPoop,\n faLocationPin: faLocationPin,\n faMapMarker: faMapMarker,\n faKaaba: faKaaba,\n faToiletPaper: faToiletPaper,\n faHelmetSafety: faHelmetSafety,\n faHardHat: faHardHat,\n faHatHard: faHatHard,\n faEject: faEject,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faPlaneCircleCheck: faPlaneCircleCheck,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faChartLine: faChartLine,\n faLineChart: faLineChart,\n faMaskVentilator: faMaskVentilator,\n faArrowRight: faArrowRight,\n faSignsPost: faSignsPost,\n faMapSigns: faMapSigns,\n faCashRegister: faCashRegister,\n faPersonCircleQuestion: faPersonCircleQuestion,\n faH: faH,\n faTarp: faTarp,\n faScrewdriverWrench: faScrewdriverWrench,\n faTools: faTools,\n faArrowsToEye: faArrowsToEye,\n faPlugCircleBolt: faPlugCircleBolt,\n faHeart: faHeart,\n faMarsAndVenus: faMarsAndVenus,\n faHouseUser: faHouseUser,\n faHomeUser: faHomeUser,\n faDumpsterFire: faDumpsterFire,\n faHouseCrack: faHouseCrack,\n faMartiniGlassCitrus: faMartiniGlassCitrus,\n faCocktail: faCocktail,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faBottleWater: faBottleWater,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faToiletPaperSlash: faToiletPaperSlash,\n faAppleWhole: faAppleWhole,\n faAppleAlt: faAppleAlt,\n faKitchenSet: faKitchenSet,\n faR: faR,\n faTemperatureQuarter: faTemperatureQuarter,\n faTemperature1: faTemperature1,\n faThermometer1: faThermometer1,\n faThermometerQuarter: faThermometerQuarter,\n faCube: faCube,\n faBitcoinSign: faBitcoinSign,\n faShieldDog: faShieldDog,\n faSolarPanel: faSolarPanel,\n faLockOpen: faLockOpen,\n faElevator: faElevator,\n faMoneyBillTransfer: faMoneyBillTransfer,\n faMoneyBillTrendUp: faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal: faSquarePollHorizontal,\n faPollH: faPollH,\n faCircle: faCircle,\n faBackwardFast: faBackwardFast,\n faFastBackward: faFastBackward,\n faRecycle: faRecycle,\n faUserAstronaut: faUserAstronaut,\n faPlaneSlash: faPlaneSlash,\n faTrademark: faTrademark,\n faBasketball: faBasketball,\n faBasketballBall: faBasketballBall,\n faSatelliteDish: faSatelliteDish,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faMobileScreenButton: faMobileScreenButton,\n faMobileAlt: faMobileAlt,\n faVolumeHigh: faVolumeHigh,\n faVolumeUp: faVolumeUp,\n faUsersRays: faUsersRays,\n faWallet: faWallet,\n faClipboardCheck: faClipboardCheck,\n faFileAudio: faFileAudio,\n faBurger: faBurger,\n faHamburger: faHamburger,\n faWrench: faWrench,\n faBugs: faBugs,\n faRupeeSign: faRupeeSign,\n faRupee: faRupee,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faPlaneDeparture: faPlaneDeparture,\n faHandshakeSlash: faHandshakeSlash,\n faBookBookmark: faBookBookmark,\n faCodeBranch: faCodeBranch,\n faHatCowboy: faHatCowboy,\n faBridge: faBridge,\n faPhoneFlip: faPhoneFlip,\n faPhoneAlt: faPhoneAlt,\n faTruckFront: faTruckFront,\n faCat: faCat,\n faAnchorCircleExclamation: faAnchorCircleExclamation,\n faTruckField: faTruckField,\n faRoute: faRoute,\n faClipboardQuestion: faClipboardQuestion,\n faPanorama: faPanorama,\n faCommentMedical: faCommentMedical,\n faTeethOpen: faTeethOpen,\n faFileCircleMinus: faFileCircleMinus,\n faTags: faTags,\n faWineGlass: faWineGlass,\n faForwardFast: faForwardFast,\n faFastForward: faFastForward,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faSquareParking: faSquareParking,\n faParking: faParking,\n faHouseSignal: faHouseSignal,\n faBarsProgress: faBarsProgress,\n faTasksAlt: faTasksAlt,\n faFaucetDrip: faFaucetDrip,\n faCartFlatbed: faCartFlatbed,\n faDollyFlatbed: faDollyFlatbed,\n faBanSmoking: faBanSmoking,\n faSmokingBan: faSmokingBan,\n faTerminal: faTerminal,\n faMobileButton: faMobileButton,\n faHouseMedicalFlag: faHouseMedicalFlag,\n faBasketShopping: faBasketShopping,\n faShoppingBasket: faShoppingBasket,\n faTape: faTape,\n faBusSimple: faBusSimple,\n faBusAlt: faBusAlt,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faAudioDescription: faAudioDescription,\n faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n faFileShield: faFileShield,\n faUserSlash: faUserSlash,\n faPen: faPen,\n faTowerObservation: faTowerObservation,\n faFileCode: faFileCode,\n faSignal: faSignal,\n faSignal5: faSignal5,\n faSignalPerfect: faSignalPerfect,\n faBus: faBus,\n faHeartCircleXmark: faHeartCircleXmark,\n faHouseChimney: faHouseChimney,\n faHomeLg: faHomeLg,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faPrescription: faPrescription,\n faShop: faShop,\n faStoreAlt: faStoreAlt,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faVihara: faVihara,\n faScaleUnbalanced: faScaleUnbalanced,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faSortUp: faSortUp,\n faSortAsc: faSortAsc,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faPlantWilt: faPlantWilt,\n faDiamond: faDiamond,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandHoldingDollar: faHandHoldingDollar,\n faHandHoldingUsd: faHandHoldingUsd,\n faBacterium: faBacterium,\n faHandPointer: faHandPointer,\n faDrumSteelpan: faDrumSteelpan,\n faHandScissors: faHandScissors,\n faHandsPraying: faHandsPraying,\n faPrayingHands: faPrayingHands,\n faArrowRotateRight: faArrowRotateRight,\n faArrowRightRotate: faArrowRightRotate,\n faArrowRotateForward: faArrowRotateForward,\n faRedo: faRedo,\n faBiohazard: faBiohazard,\n faLocationCrosshairs: faLocationCrosshairs,\n faLocation: faLocation,\n faMarsDouble: faMarsDouble,\n faChildDress: faChildDress,\n faUsersBetweenLines: faUsersBetweenLines,\n faLungsVirus: faLungsVirus,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faPhone: faPhone,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faChildReaching: faChildReaching,\n faHeadSideVirus: faHeadSideVirus,\n faUserGear: faUserGear,\n faUserCog: faUserCog,\n faArrowUp19: faArrowUp19,\n faSortNumericUp: faSortNumericUp,\n faDoorClosed: faDoorClosed,\n faShieldVirus: faShieldVirus,\n faDiceSix: faDiceSix,\n faMosquitoNet: faMosquitoNet,\n faBridgeWater: faBridgeWater,\n faPersonBooth: faPersonBooth,\n faTextWidth: faTextWidth,\n faHatWizard: faHatWizard,\n faPenFancy: faPenFancy,\n faPersonDigging: faPersonDigging,\n faDigging: faDigging,\n faTrash: faTrash,\n faGaugeSimple: faGaugeSimple,\n faGaugeSimpleMed: faGaugeSimpleMed,\n faTachometerAverage: faTachometerAverage,\n faBookMedical: faBookMedical,\n faPoo: faPoo,\n faQuoteRight: faQuoteRight,\n faQuoteRightAlt: faQuoteRightAlt,\n faShirt: faShirt,\n faTShirt: faTShirt,\n faTshirt: faTshirt,\n faCubes: faCubes,\n faDivide: faDivide,\n faTengeSign: faTengeSign,\n faTenge: faTenge,\n faHeadphones: faHeadphones,\n faHandsHolding: faHandsHolding,\n faHandsClapping: faHandsClapping,\n faRepublican: faRepublican,\n faArrowLeft: faArrowLeft,\n faPersonCircleXmark: faPersonCircleXmark,\n faRuler: faRuler,\n faAlignLeft: faAlignLeft,\n faDiceD6: faDiceD6,\n faRestroom: faRestroom,\n faJ: faJ,\n faUsersViewfinder: faUsersViewfinder,\n faFileVideo: faFileVideo,\n faUpRightFromSquare: faUpRightFromSquare,\n faExternalLinkAlt: faExternalLinkAlt,\n faTableCells: faTableCells,\n faTh: faTh,\n faFilePdf: faFilePdf,\n faBookBible: faBookBible,\n faBible: faBible,\n faO: faO,\n faSuitcaseMedical: faSuitcaseMedical,\n faMedkit: faMedkit,\n faUserSecret: faUserSecret,\n faOtter: faOtter,\n faPersonDress: faPersonDress,\n faFemale: faFemale,\n faCommentDollar: faCommentDollar,\n faBusinessTime: faBusinessTime,\n faBriefcaseClock: faBriefcaseClock,\n faTableCellsLarge: faTableCellsLarge,\n faThLarge: faThLarge,\n faBookTanakh: faBookTanakh,\n faTanakh: faTanakh,\n faPhoneVolume: faPhoneVolume,\n faVolumeControlPhone: faVolumeControlPhone,\n faHatCowboySide: faHatCowboySide,\n faClipboardUser: faClipboardUser,\n faChild: faChild,\n faLiraSign: faLiraSign,\n faSatellite: faSatellite,\n faPlaneLock: faPlaneLock,\n faTag: faTag,\n faComment: faComment,\n faCakeCandles: faCakeCandles,\n faBirthdayCake: faBirthdayCake,\n faCake: faCake,\n faEnvelope: faEnvelope,\n faAnglesUp: faAnglesUp,\n faAngleDoubleUp: faAngleDoubleUp,\n faPaperclip: faPaperclip,\n faArrowRightToCity: faArrowRightToCity,\n faRibbon: faRibbon,\n faLungs: faLungs,\n faArrowUp91: faArrowUp91,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faLitecoinSign: faLitecoinSign,\n faBorderNone: faBorderNone,\n faCircleNodes: faCircleNodes,\n faParachuteBox: faParachuteBox,\n faIndent: faIndent,\n faTruckFieldUn: faTruckFieldUn,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faMountain: faMountain,\n faUserDoctor: faUserDoctor,\n faUserMd: faUserMd,\n faCircleInfo: faCircleInfo,\n faInfoCircle: faInfoCircle,\n faCloudMeatball: faCloudMeatball,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faSquareVirus: faSquareVirus,\n faMeteor: faMeteor,\n faCarOn: faCarOn,\n faSleigh: faSleigh,\n faArrowDown19: faArrowDown19,\n faSortNumericAsc: faSortNumericAsc,\n faSortNumericDown: faSortNumericDown,\n faHandHoldingDroplet: faHandHoldingDroplet,\n faHandHoldingWater: faHandHoldingWater,\n faWater: faWater,\n faCalendarCheck: faCalendarCheck,\n faBraille: faBraille,\n faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faLandmark: faLandmark,\n faTruck: faTruck,\n faCrosshairs: faCrosshairs,\n faPersonCane: faPersonCane,\n faTent: faTent,\n faVestPatches: faVestPatches,\n faCheckDouble: faCheckDouble,\n faArrowDownAZ: faArrowDownAZ,\n faSortAlphaAsc: faSortAlphaAsc,\n faSortAlphaDown: faSortAlphaDown,\n faMoneyBillWheat: faMoneyBillWheat,\n faCookie: faCookie,\n faArrowRotateLeft: faArrowRotateLeft,\n faArrowLeftRotate: faArrowLeftRotate,\n faArrowRotateBack: faArrowRotateBack,\n faArrowRotateBackward: faArrowRotateBackward,\n faUndo: faUndo,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faDumbbell: faDumbbell,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faTarpDroplet: faTarpDroplet,\n faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n faPersonSkiingNordic: faPersonSkiingNordic,\n faSkiingNordic: faSkiingNordic,\n faCalendarPlus: faCalendarPlus,\n faPlaneArrival: faPlaneArrival,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faTrainSubway: faTrainSubway,\n faSubway: faSubway,\n faChartGantt: faChartGantt,\n faIndianRupeeSign: faIndianRupeeSign,\n faIndianRupee: faIndianRupee,\n faInr: faInr,\n faCropSimple: faCropSimple,\n faCropAlt: faCropAlt,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faLeftLong: faLeftLong,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faDna: faDna,\n faVirusSlash: faVirusSlash,\n faMinus: faMinus,\n faSubtract: faSubtract,\n faChildRifle: faChildRifle,\n faChess: faChess,\n faArrowLeftLong: faArrowLeftLong,\n faLongArrowLeft: faLongArrowLeft,\n faPlugCircleCheck: faPlugCircleCheck,\n faStreetView: faStreetView,\n faFrancSign: faFrancSign,\n faVolumeOff: faVolumeOff,\n faHandsAslInterpreting: faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAslInterpreting: faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n faGear: faGear,\n faCog: faCog,\n faDropletSlash: faDropletSlash,\n faTintSlash: faTintSlash,\n faMosque: faMosque,\n faMosquito: faMosquito,\n faStarOfDavid: faStarOfDavid,\n faPersonMilitaryRifle: faPersonMilitaryRifle,\n faCartShopping: faCartShopping,\n faShoppingCart: faShoppingCart,\n faVials: faVials,\n faPlugCirclePlus: faPlugCirclePlus,\n faPlaceOfWorship: faPlaceOfWorship,\n faGripVertical: faGripVertical,\n faArrowTurnUp: faArrowTurnUp,\n faLevelUp: faLevelUp,\n faU: faU,\n faSquareRootVariable: faSquareRootVariable,\n faSquareRootAlt: faSquareRootAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faBackwardStep: faBackwardStep,\n faStepBackward: faStepBackward,\n faPallet: faPallet,\n faFaucet: faFaucet,\n faBaseballBatBall: faBaseballBatBall,\n faS: faS,\n faTimeline: faTimeline,\n faKeyboard: faKeyboard,\n faCaretDown: faCaretDown,\n faHouseChimneyMedical: faHouseChimneyMedical,\n faClinicMedical: faClinicMedical,\n faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n faTemperature3: faTemperature3,\n faThermometer3: faThermometer3,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faMobileScreen: faMobileScreen,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faPlaneUp: faPlaneUp,\n faPiggyBank: faPiggyBank,\n faBatteryHalf: faBatteryHalf,\n faBattery3: faBattery3,\n faMountainCity: faMountainCity,\n faCoins: faCoins,\n faKhanda: faKhanda,\n faSliders: faSliders,\n faSlidersH: faSlidersH,\n faFolderTree: faFolderTree,\n faNetworkWired: faNetworkWired,\n faMapPin: faMapPin,\n faHamsa: faHamsa,\n faCentSign: faCentSign,\n faFlask: faFlask,\n faPersonPregnant: faPersonPregnant,\n faWandSparkles: faWandSparkles,\n faEllipsisVertical: faEllipsisVertical,\n faEllipsisV: faEllipsisV,\n faTicket: faTicket,\n faPowerOff: faPowerOff,\n faRightLong: faRightLong,\n faLongArrowAltRight: faLongArrowAltRight,\n faFlagUsa: faFlagUsa,\n faLaptopFile: faLaptopFile,\n faTty: faTty,\n faTeletype: faTeletype,\n faDiagramNext: faDiagramNext,\n faPersonRifle: faPersonRifle,\n faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n faClosedCaptioning: faClosedCaptioning,\n faPersonHiking: faPersonHiking,\n faHiking: faHiking,\n faVenusDouble: faVenusDouble,\n faImages: faImages,\n faCalculator: faCalculator,\n faPeoplePulling: faPeoplePulling,\n faN: faN,\n faCableCar: faCableCar,\n faTram: faTram,\n faCloudRain: faCloudRain,\n faBuildingCircleXmark: faBuildingCircleXmark,\n faShip: faShip,\n faArrowsDownToLine: faArrowsDownToLine,\n faDownload: faDownload,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faDeleteLeft: faDeleteLeft,\n faBackspace: faBackspace,\n faEyeDropper: faEyeDropper,\n faEyeDropperEmpty: faEyeDropperEmpty,\n faEyedropper: faEyedropper,\n faFileCircleCheck: faFileCircleCheck,\n faForward: faForward,\n faMobile: faMobile,\n faMobileAndroid: faMobileAndroid,\n faMobilePhone: faMobilePhone,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faAlignCenter: faAlignCenter,\n faBookSkull: faBookSkull,\n faBookDead: faBookDead,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faOutdent: faOutdent,\n faDedent: faDedent,\n faHeartCircleExclamation: faHeartCircleExclamation,\n faHouse: faHouse,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeLgAlt: faHomeLgAlt,\n faCalendarWeek: faCalendarWeek,\n faLaptopMedical: faLaptopMedical,\n faB: faB,\n faFileMedical: faFileMedical,\n faDiceOne: faDiceOne,\n faKiwiBird: faKiwiBird,\n faArrowRightArrowLeft: faArrowRightArrowLeft,\n faExchange: faExchange,\n faRotateRight: faRotateRight,\n faRedoAlt: faRedoAlt,\n faRotateForward: faRotateForward,\n faUtensils: faUtensils,\n faCutlery: faCutlery,\n faArrowUpWideShort: faArrowUpWideShort,\n faSortAmountUp: faSortAmountUp,\n faMillSign: faMillSign,\n faBowlRice: faBowlRice,\n faSkull: faSkull,\n faTowerBroadcast: faTowerBroadcast,\n faBroadcastTower: faBroadcastTower,\n faTruckPickup: faTruckPickup,\n faUpLong: faUpLong,\n faLongArrowAltUp: faLongArrowAltUp,\n faStop: faStop,\n faCodeMerge: faCodeMerge,\n faUpload: faUpload,\n faHurricane: faHurricane,\n faMound: faMound,\n faToiletPortable: faToiletPortable,\n faCompactDisc: faCompactDisc,\n faFileArrowDown: faFileArrowDown,\n faFileDownload: faFileDownload,\n faCaravan: faCaravan,\n faShieldCat: faShieldCat,\n faBolt: faBolt,\n faZap: faZap,\n faGlassWater: faGlassWater,\n faOilWell: faOilWell,\n faVault: faVault,\n faMars: faMars,\n faToilet: faToilet,\n faPlaneCircleXmark: faPlaneCircleXmark,\n faYenSign: faYenSign,\n faCny: faCny,\n faJpy: faJpy,\n faRmb: faRmb,\n faYen: faYen,\n faRubleSign: faRubleSign,\n faRouble: faRouble,\n faRub: faRub,\n faRuble: faRuble,\n faSun: faSun,\n faGuitar: faGuitar,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faHorseHead: faHorseHead,\n faBoreHole: faBoreHole,\n faIndustry: faIndustry,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowsTurnToDots: faArrowsTurnToDots,\n faFlorinSign: faFlorinSign,\n faArrowDownShortWide: faArrowDownShortWide,\n faSortAmountDesc: faSortAmountDesc,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faLessThan: faLessThan,\n faAngleDown: faAngleDown,\n faCarTunnel: faCarTunnel,\n faHeadSideCough: faHeadSideCough,\n faGripLines: faGripLines,\n faThumbsDown: faThumbsDown,\n faUserLock: faUserLock,\n faArrowRightLong: faArrowRightLong,\n faLongArrowRight: faLongArrowRight,\n faAnchorCircleXmark: faAnchorCircleXmark,\n faEllipsis: faEllipsis,\n faEllipsisH: faEllipsisH,\n faChessPawn: faChessPawn,\n faKitMedical: faKitMedical,\n faFirstAid: faFirstAid,\n faPersonThroughWindow: faPersonThroughWindow,\n faToolbox: faToolbox,\n faHandsHoldingCircle: faHandsHoldingCircle,\n faBug: faBug,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faCar: faCar,\n faAutomobile: faAutomobile,\n faHandHoldingHand: faHandHoldingHand,\n faBookOpenReader: faBookOpenReader,\n faBookReader: faBookReader,\n faMountainSun: faMountainSun,\n faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n faDiceD20: faDiceD20,\n faTruckDroplet: faTruckDroplet,\n faFileCircleXmark: faFileCircleXmark,\n faTemperatureArrowUp: faTemperatureArrowUp,\n faTemperatureUp: faTemperatureUp,\n faMedal: faMedal,\n faBed: faBed,\n faSquareH: faSquareH,\n faHSquare: faHSquare,\n faPodcast: faPodcast,\n faTemperatureFull: faTemperatureFull,\n faTemperature4: faTemperature4,\n faThermometer4: faThermometer4,\n faThermometerFull: faThermometerFull,\n faBell: faBell,\n faSuperscript: faSuperscript,\n faPlugCircleXmark: faPlugCircleXmark,\n faStarOfLife: faStarOfLife,\n faPhoneSlash: faPhoneSlash,\n faPaintRoller: faPaintRoller,\n faHandshakeAngle: faHandshakeAngle,\n faHandsHelping: faHandsHelping,\n faLocationDot: faLocationDot,\n faMapMarkerAlt: faMapMarkerAlt,\n faFile: faFile,\n faGreaterThan: faGreaterThan,\n faPersonSwimming: faPersonSwimming,\n faSwimmer: faSwimmer,\n faArrowDown: faArrowDown,\n faDroplet: faDroplet,\n faTint: faTint,\n faEraser: faEraser,\n faEarthAmericas: faEarthAmericas,\n faEarth: faEarth,\n faEarthAmerica: faEarthAmerica,\n faGlobeAmericas: faGlobeAmericas,\n faPersonBurst: faPersonBurst,\n faDove: faDove,\n faBatteryEmpty: faBatteryEmpty,\n faBattery0: faBattery0,\n faSocks: faSocks,\n faInbox: faInbox,\n faSection: faSection,\n faGaugeHigh: faGaugeHigh,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltFast: faTachometerAltFast,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faWineBottle: faWineBottle,\n faChessRook: faChessRook,\n faBarsStaggered: faBarsStaggered,\n faReorder: faReorder,\n faStream: faStream,\n faDharmachakra: faDharmachakra,\n faHotdog: faHotdog,\n faPersonWalkingWithCane: faPersonWalkingWithCane,\n faBlind: faBlind,\n faDrum: faDrum,\n faIceCream: faIceCream,\n faHeartCircleBolt: faHeartCircleBolt,\n faFax: faFax,\n faParagraph: faParagraph,\n faCheckToSlot: faCheckToSlot,\n faVoteYea: faVoteYea,\n faStarHalf: faStarHalf,\n faBoxesStacked: faBoxesStacked,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faLink: faLink,\n faChain: faChain,\n faEarListen: faEarListen,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faTreeCity: faTreeCity,\n faPlay: faPlay,\n faFont: faFont,\n faRupiahSign: faRupiahSign,\n faMagnifyingGlass: faMagnifyingGlass,\n faSearch: faSearch,\n faTableTennisPaddleBall: faTableTennisPaddleBall,\n faPingPongPaddleBall: faPingPongPaddleBall,\n faTableTennis: faTableTennis,\n faPersonDotsFromLine: faPersonDotsFromLine,\n faDiagnoses: faDiagnoses,\n faTrashCanArrowUp: faTrashCanArrowUp,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faNairaSign: faNairaSign,\n faCartArrowDown: faCartArrowDown,\n faWalkieTalkie: faWalkieTalkie,\n faFilePen: faFilePen,\n faFileEdit: faFileEdit,\n faReceipt: faReceipt,\n faSquarePen: faSquarePen,\n faPenSquare: faPenSquare,\n faPencilSquare: faPencilSquare,\n faSuitcaseRolling: faSuitcaseRolling,\n faPersonCircleExclamation: faPersonCircleExclamation,\n faChevronDown: faChevronDown,\n faBatteryFull: faBatteryFull,\n faBattery: faBattery,\n faBattery5: faBattery5,\n faSkullCrossbones: faSkullCrossbones,\n faCodeCompare: faCodeCompare,\n faListUl: faListUl,\n faListDots: faListDots,\n faSchoolLock: faSchoolLock,\n faTowerCell: faTowerCell,\n faDownLong: faDownLong,\n faLongArrowAltDown: faLongArrowAltDown,\n faRankingStar: faRankingStar,\n faChessKing: faChessKing,\n faPersonHarassing: faPersonHarassing,\n faBrazilianRealSign: faBrazilianRealSign,\n faLandmarkDome: faLandmarkDome,\n faLandmarkAlt: faLandmarkAlt,\n faArrowUp: faArrowUp,\n faTv: faTv,\n faTelevision: faTelevision,\n faTvAlt: faTvAlt,\n faShrimp: faShrimp,\n faListCheck: faListCheck,\n faTasks: faTasks,\n faJugDetergent: faJugDetergent,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faUserShield: faUserShield,\n faWind: faWind,\n faCarBurst: faCarBurst,\n faCarCrash: faCarCrash,\n faY: faY,\n faPersonSnowboarding: faPersonSnowboarding,\n faSnowboarding: faSnowboarding,\n faTruckFast: faTruckFast,\n faShippingFast: faShippingFast,\n faFish: faFish,\n faUserGraduate: faUserGraduate,\n faCircleHalfStroke: faCircleHalfStroke,\n faAdjust: faAdjust,\n faClapperboard: faClapperboard,\n faCircleRadiation: faCircleRadiation,\n faRadiationAlt: faRadiationAlt,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faJetFighterUp: faJetFighterUp,\n faDiagramProject: faDiagramProject,\n faProjectDiagram: faProjectDiagram,\n faCopy: faCopy,\n faVolumeXmark: faVolumeXmark,\n faVolumeMute: faVolumeMute,\n faVolumeTimes: faVolumeTimes,\n faHandSparkles: faHandSparkles,\n faGrip: faGrip,\n faGripHorizontal: faGripHorizontal,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faGun: faGun,\n faSquarePhone: faSquarePhone,\n faPhoneSquare: faPhoneSquare,\n faPlus: faPlus,\n faAdd: faAdd,\n faExpand: faExpand,\n faComputer: faComputer,\n faXmark: faXmark,\n faClose: faClose,\n faMultiply: faMultiply,\n faRemove: faRemove,\n faTimes: faTimes,\n faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n faArrows: faArrows,\n faChalkboardUser: faChalkboardUser,\n faChalkboardTeacher: faChalkboardTeacher,\n faPesoSign: faPesoSign,\n faBuildingShield: faBuildingShield,\n faBaby: faBaby,\n faUsersLine: faUsersLine,\n faQuoteLeft: faQuoteLeft,\n faQuoteLeftAlt: faQuoteLeftAlt,\n faTractor: faTractor,\n faTrashArrowUp: faTrashArrowUp,\n faTrashRestore: faTrashRestore,\n faArrowDownUpLock: faArrowDownUpLock,\n faLinesLeaning: faLinesLeaning,\n faRulerCombined: faRulerCombined,\n faCopyright: faCopyright,\n faEquals: faEquals,\n faBlender: faBlender,\n faTeeth: faTeeth,\n faShekelSign: faShekelSign,\n faIls: faIls,\n faShekel: faShekel,\n faSheqel: faSheqel,\n faSheqelSign: faSheqelSign,\n faMap: faMap,\n faRocket: faRocket,\n faPhotoFilm: faPhotoFilm,\n faPhotoVideo: faPhotoVideo,\n faFolderMinus: faFolderMinus,\n faStore: faStore,\n faArrowTrendUp: faArrowTrendUp,\n faPlugCircleMinus: faPlugCircleMinus,\n faSignHanging: faSignHanging,\n faSign: faSign,\n faBezierCurve: faBezierCurve,\n faBellSlash: faBellSlash,\n faTablet: faTablet,\n faTabletAndroid: faTabletAndroid,\n faSchoolFlag: faSchoolFlag,\n faFill: faFill,\n faAngleUp: faAngleUp,\n faDrumstickBite: faDrumstickBite,\n faHollyBerry: faHollyBerry,\n faChevronLeft: faChevronLeft,\n faBacteria: faBacteria,\n faHandLizard: faHandLizard,\n faDisease: faDisease,\n faBriefcaseMedical: faBriefcaseMedical,\n faGenderless: faGenderless,\n faChevronRight: faChevronRight,\n faRetweet: faRetweet,\n faCarRear: faCarRear,\n faCarAlt: faCarAlt,\n faPumpSoap: faPumpSoap,\n faVideoSlash: faVideoSlash,\n faBatteryQuarter: faBatteryQuarter,\n faBattery2: faBattery2,\n faRadio: faRadio,\n faBabyCarriage: faBabyCarriage,\n faCarriageBaby: faCarriageBaby,\n faTrafficLight: faTrafficLight,\n faThermometer: faThermometer,\n faVrCardboard: faVrCardboard,\n faHandMiddleFinger: faHandMiddleFinger,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faTruckMoving: faTruckMoving,\n faGlassWaterDroplet: faGlassWaterDroplet,\n faDisplay: faDisplay,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faThumbtack: faThumbtack,\n faThumbTack: faThumbTack,\n faTrophy: faTrophy,\n faPersonPraying: faPersonPraying,\n faPray: faPray,\n faHammer: faHammer,\n faHandPeace: faHandPeace,\n faRotate: faRotate,\n faSyncAlt: faSyncAlt,\n faSpinner: faSpinner,\n faRobot: faRobot,\n faPeace: faPeace,\n faGears: faGears,\n faCogs: faCogs,\n faWarehouse: faWarehouse,\n faArrowUpRightDots: faArrowUpRightDots,\n faSplotch: faSplotch,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faDiceFour: faDiceFour,\n faSimCard: faSimCard,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faMercury: faMercury,\n faArrowTurnDown: faArrowTurnDown,\n faLevelDown: faLevelDown,\n faPersonFallingBurst: faPersonFallingBurst,\n faAward: faAward,\n faTicketSimple: faTicketSimple,\n faTicketAlt: faTicketAlt,\n faBuilding: faBuilding,\n faAnglesLeft: faAnglesLeft,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faQrcode: faQrcode,\n faClockRotateLeft: faClockRotateLeft,\n faHistory: faHistory,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faFileExport: faFileExport,\n faArrowRightFromFile: faArrowRightFromFile,\n faShield: faShield,\n faShieldBlank: faShieldBlank,\n faArrowUpShortWide: faArrowUpShortWide,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faHouseMedical: faHouseMedical,\n faGolfBallTee: faGolfBallTee,\n faGolfBall: faGolfBall,\n faCircleChevronLeft: faCircleChevronLeft,\n faChevronCircleLeft: faChevronCircleLeft,\n faHouseChimneyWindow: faHouseChimneyWindow,\n faPenNib: faPenNib,\n faTentArrowTurnLeft: faTentArrowTurnLeft,\n faTents: faTents,\n faWandMagic: faWandMagic,\n faMagic: faMagic,\n faDog: faDog,\n faCarrot: faCarrot,\n faMoon: faMoon,\n faWineGlassEmpty: faWineGlassEmpty,\n faWineGlassAlt: faWineGlassAlt,\n faCheese: faCheese,\n faYinYang: faYinYang,\n faMusic: faMusic,\n faCodeCommit: faCodeCommit,\n faTemperatureLow: faTemperatureLow,\n faPersonBiking: faPersonBiking,\n faBiking: faBiking,\n faBroom: faBroom,\n faShieldHeart: faShieldHeart,\n faGopuram: faGopuram,\n faEarthOceania: faEarthOceania,\n faGlobeOceania: faGlobeOceania,\n faSquareXmark: faSquareXmark,\n faTimesSquare: faTimesSquare,\n faXmarkSquare: faXmarkSquare,\n faHashtag: faHashtag,\n faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n faExpandAlt: faExpandAlt,\n faOilCan: faOilCan,\n faT: faT,\n faHippo: faHippo,\n faChartColumn: faChartColumn,\n faInfinity: faInfinity,\n faVialCircleCheck: faVialCircleCheck,\n faPersonArrowDownToLine: faPersonArrowDownToLine,\n faVoicemail: faVoicemail,\n faFan: faFan,\n faPersonWalkingLuggage: faPersonWalkingLuggage,\n faUpDown: faUpDown,\n faArrowsAltV: faArrowsAltV,\n faCloudMoonRain: faCloudMoonRain,\n faCalendar: faCalendar,\n faTrailer: faTrailer,\n faBahai: faBahai,\n faHaykal: faHaykal,\n faSdCard: faSdCard,\n faDragon: faDragon,\n faShoePrints: faShoePrints,\n faCirclePlus: faCirclePlus,\n faPlusCircle: faPlusCircle,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faHandHolding: faHandHolding,\n faPlugCircleExclamation: faPlugCircleExclamation,\n faLinkSlash: faLinkSlash,\n faChainBroken: faChainBroken,\n faChainSlash: faChainSlash,\n faUnlink: faUnlink,\n faClone: faClone,\n faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n faArrowUpZA: faArrowUpZA,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faFireFlameCurved: faFireFlameCurved,\n faFireAlt: faFireAlt,\n faTornado: faTornado,\n faFileCirclePlus: faFileCirclePlus,\n faBookQuran: faBookQuran,\n faQuran: faQuran,\n faAnchor: faAnchor,\n faBorderAll: faBorderAll,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faCookieBite: faCookieBite,\n faArrowTrendDown: faArrowTrendDown,\n faRss: faRss,\n faFeed: faFeed,\n faDrawPolygon: faDrawPolygon,\n faScaleBalanced: faScaleBalanced,\n faBalanceScale: faBalanceScale,\n faGaugeSimpleHigh: faGaugeSimpleHigh,\n faTachometer: faTachometer,\n faTachometerFast: faTachometerFast,\n faShower: faShower,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faM: faM,\n faTableList: faTableList,\n faThList: faThList,\n faCommentSms: faCommentSms,\n faSms: faSms,\n faBook: faBook,\n faUserPlus: faUserPlus,\n faCheck: faCheck,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBattery4: faBattery4,\n faHouseCircleCheck: faHouseCircleCheck,\n faAngleLeft: faAngleLeft,\n faDiagramSuccessor: faDiagramSuccessor,\n faTruckArrowRight: faTruckArrowRight,\n faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n faHandFist: faHandFist,\n faFistRaised: faFistRaised,\n faCloudMoon: faCloudMoon,\n faBriefcase: faBriefcase,\n faPersonFalling: faPersonFalling,\n faImagePortrait: faImagePortrait,\n faPortrait: faPortrait,\n faUserTag: faUserTag,\n faRug: faRug,\n faEarthEurope: faEarthEurope,\n faGlobeEurope: faGlobeEurope,\n faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n faLuggageCart: faLuggageCart,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faBahtSign: faBahtSign,\n faBookOpen: faBookOpen,\n faBookJournalWhills: faBookJournalWhills,\n faJournalWhills: faJournalWhills,\n faHandcuffs: faHandcuffs,\n faTriangleExclamation: faTriangleExclamation,\n faExclamationTriangle: faExclamationTriangle,\n faWarning: faWarning,\n faDatabase: faDatabase,\n faShare: faShare,\n faArrowTurnRight: faArrowTurnRight,\n faMailForward: faMailForward,\n faBottleDroplet: faBottleDroplet,\n faMaskFace: faMaskFace,\n faHillRockslide: faHillRockslide,\n faRightLeft: faRightLeft,\n faExchangeAlt: faExchangeAlt,\n faPaperPlane: faPaperPlane,\n faRoadCircleExclamation: faRoadCircleExclamation,\n faDungeon: faDungeon,\n faAlignRight: faAlignRight,\n faMoneyBill1Wave: faMoneyBill1Wave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faLifeRing: faLifeRing,\n faHands: faHands,\n faSignLanguage: faSignLanguage,\n faSigning: faSigning,\n faCalendarDay: faCalendarDay,\n faWaterLadder: faWaterLadder,\n faLadderWater: faLadderWater,\n faSwimmingPool: faSwimmingPool,\n faArrowsUpDown: faArrowsUpDown,\n faArrowsV: faArrowsV,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faWheelchairMove: faWheelchairMove,\n faWheelchairAlt: faWheelchairAlt,\n faTurnDown: faTurnDown,\n faLevelDownAlt: faLevelDownAlt,\n faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n faSquareEnvelope: faSquareEnvelope,\n faEnvelopeSquare: faEnvelopeSquare,\n faDice: faDice,\n faBowlingBall: faBowlingBall,\n faBrain: faBrain,\n faBandage: faBandage,\n faBandAid: faBandAid,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faGifts: faGifts,\n faHotel: faHotel,\n faEarthAsia: faEarthAsia,\n faGlobeAsia: faGlobeAsia,\n faIdCardClip: faIdCardClip,\n faIdCardAlt: faIdCardAlt,\n faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n faSearchPlus: faSearchPlus,\n faThumbsUp: faThumbsUp,\n faUserClock: faUserClock,\n faHandDots: faHandDots,\n faAllergies: faAllergies,\n faFileInvoice: faFileInvoice,\n faWindowMinimize: faWindowMinimize,\n faMugSaucer: faMugSaucer,\n faCoffee: faCoffee,\n faBrush: faBrush,\n faMask: faMask,\n faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n faSearchMinus: faSearchMinus,\n faRulerVertical: faRulerVertical,\n faUserLarge: faUserLarge,\n faUserAlt: faUserAlt,\n faTrainTram: faTrainTram,\n faUserNurse: faUserNurse,\n faSyringe: faSyringe,\n faCloudSun: faCloudSun,\n faStopwatch20: faStopwatch20,\n faSquareFull: faSquareFull,\n faMagnet: faMagnet,\n faJar: faJar,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faBugSlash: faBugSlash,\n faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n faBone: faBone,\n faUserInjured: faUserInjured,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faPlane: faPlane,\n faTentArrowsDown: faTentArrowsDown,\n faExclamation: faExclamation,\n faArrowsSpin: faArrowsSpin,\n faPrint: faPrint,\n faTurkishLiraSign: faTurkishLiraSign,\n faTry: faTry,\n faTurkishLira: faTurkishLira,\n faDollarSign: faDollarSign,\n faDollar: faDollar,\n faUsd: faUsd,\n faX: faX,\n faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n faSearchDollar: faSearchDollar,\n faUsersGear: faUsersGear,\n faUsersCog: faUsersCog,\n faPersonMilitaryPointing: faPersonMilitaryPointing,\n faBuildingColumns: faBuildingColumns,\n faBank: faBank,\n faInstitution: faInstitution,\n faMuseum: faMuseum,\n faUniversity: faUniversity,\n faUmbrella: faUmbrella,\n faTrowel: faTrowel,\n faD: faD,\n faStapler: faStapler,\n faMasksTheater: faMasksTheater,\n faTheaterMasks: faTheaterMasks,\n faKipSign: faKipSign,\n faHandPointLeft: faHandPointLeft,\n faHandshakeSimple: faHandshakeSimple,\n faHandshakeAlt: faHandshakeAlt,\n faJetFighter: faJetFighter,\n faFighterJet: faFighterJet,\n faSquareShareNodes: faSquareShareNodes,\n faShareAltSquare: faShareAltSquare,\n faBarcode: faBarcode,\n faPlusMinus: faPlusMinus,\n faVideo: faVideo,\n faVideoCamera: faVideoCamera,\n faGraduationCap: faGraduationCap,\n faMortarBoard: faMortarBoard,\n faHandHoldingMedical: faHandHoldingMedical,\n faPersonCircleCheck: faPersonCircleCheck,\n faTurnUp: faTurnUp,\n faLevelUpAlt: faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChildRifle, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faArrowTurnRight, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","import * as i0 from '@angular/core';\nimport { NgModule } from '@angular/core';\nimport { faFacebookF, faTwitter, faLinkedinIn, faPinterestP, faRedditAlien, faTumblr, faWhatsapp, faViber, faVk, faFacebookMessenger, faTelegramPlane, faMix, faXing, faLine } from '@fortawesome/free-brands-svg-icons';\nimport { faSms, faEnvelope, faCheck, faPrint, faExclamation, faLink, faEllipsisH, faMinus } from '@fortawesome/free-solid-svg-icons';\nimport * as i1 from '@fortawesome/angular-fontawesome';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\n\nconst shareIcons = [\r\n faFacebookF, faTwitter, faLinkedinIn, faPinterestP, faRedditAlien, faTumblr,\r\n faWhatsapp, faViber, faVk, faFacebookMessenger, faTelegramPlane, faMix, faXing, faSms,\r\n faEnvelope, faCheck, faPrint, faExclamation, faLink, faEllipsisH, faMinus, faLine\r\n];\r\nclass ShareIconsModule {\r\n constructor(iconLibrary) {\r\n iconLibrary.addIcons(...shareIcons);\r\n }\r\n}\r\nShareIconsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: ShareIconsModule, deps: [{ token: i1.FaIconLibrary }], target: i0.ɵɵFactoryTarget.NgModule });\r\nShareIconsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.0.0\", ngImport: i0, type: ShareIconsModule, imports: [FontAwesomeModule] });\r\nShareIconsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: ShareIconsModule, imports: [FontAwesomeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.0.0\", ngImport: i0, type: ShareIconsModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [\r\n FontAwesomeModule,\r\n ]\r\n }]\r\n }], ctorParameters: function () { return [{ type: i1.FaIconLibrary }]; } });\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { ShareIconsModule };\n","import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n constructor(_platform, _ngZone) {\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._monitoredElements = new Map();\n }\n monitor(elementOrRef) {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n return info.subject;\n }\n const result = new Subject();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n }\n else if (event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n }\n });\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n return result;\n }\n stopMonitoring(elementOrRef) {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n}\nAutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: AutofillMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n constructor(_elementRef, _autofillMonitor) {\n this._elementRef = _elementRef;\n this._autofillMonitor = _autofillMonitor;\n /** Emits when the autofill state of the element changes. */\n this.cdkAutofill = new EventEmitter();\n }\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n}\nCdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkAutofill, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAutofill, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAutofill]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AutofillMonitor }]; }, propDecorators: { cdkAutofill: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n constructor(_elementRef, _platform, _ngZone, \n /** @breaking-change 11.0.0 make document required */\n document) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._destroyed = new Subject();\n this._enabled = true;\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n this._previousMinRows = -1;\n this._isViewInited = false;\n /** Handles `focus` and `blur` events. */\n this._handleFocusEvent = (event) => {\n this._hasFocus = event.type === 'focus';\n };\n this._document = document;\n this._textareaElement = this._elementRef.nativeElement;\n }\n /** Minimum amount of rows in the textarea. */\n get minRows() {\n return this._minRows;\n }\n set minRows(value) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n /** Maximum amount of rows in the textarea. */\n get maxRows() {\n return this._maxRows;\n }\n set maxRows(value) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n /** Whether autosizing is enabled or not */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n value = coerceBooleanProperty(value);\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n get placeholder() {\n return this._textareaElement.placeholder;\n }\n set placeholder(value) {\n this._cachedPlaceholderHeight = undefined;\n if (value) {\n this._textareaElement.setAttribute('placeholder', value);\n }\n else {\n this._textareaElement.removeAttribute('placeholder');\n }\n this._cacheTextareaPlaceholderHeight();\n }\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight() {\n const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight() {\n const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n _cacheTextareaLineHeight() {\n if (this._cachedLineHeight) {\n return;\n }\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false);\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n this._textareaElement.parentNode.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n _measureScrollHeight() {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n return scrollHeight;\n }\n _cacheTextareaPlaceholderHeight() {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n const value = this._textareaElement.value;\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n const textarea = this._elementRef.nativeElement;\n const value = textarea.value;\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n }\n else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n _scrollToCaretPosition(textarea) {\n const { selectionStart, selectionEnd } = textarea;\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n}\nCdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\"], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n type: Directive,\n args: [{\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { minRows: [{\n type: Input,\n args: ['cdkAutosizeMinRows']\n }], maxRows: [{\n type: Input,\n args: ['cdkAutosizeMaxRows']\n }], enabled: [{\n type: Input,\n args: ['cdkTextareaAutosize']\n }], placeholder: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass TextFieldModule {\n}\nTextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], exports: [CdkAutofill, CdkTextareaAutosize] });\nTextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: TextFieldModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: TextFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkAutofill, CdkTextareaAutosize],\n exports: [CdkAutofill, CdkTextareaAutosize],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n","import { ElementRef } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","import * as i0 from '@angular/core';\nimport { NgModule, Injectable } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LayoutModule {\n}\nLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: LayoutModule });\nLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: LayoutModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform) {\n this._platform = _platform;\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n }\n}\nMediaMatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MediaMatcher, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nMediaMatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MediaMatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n}\nBreakpointObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BreakpointObserver, deps: [{ token: MediaMatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nBreakpointObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MediaMatcher }, { type: i0.NgZone }]; } });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","import { filter } from './filter';\nexport function skip(count) {\n return filter((_, index) => count <= index);\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler = asyncScheduler) {\n return operate((source, subscriber) => {\n let activeTask = null;\n let lastValue = null;\n let lastTime = null;\n const emit = () => {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n const targetTime = lastTime + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = activeTask = null;\n }));\n });\n}\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, APP_ID, Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n const filteredIds = ids.filter(val => val != id.trim());\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n }\n else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * ID used for the body container where all messages are appended.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n constructor(_document, \n /**\n * @deprecated To be turned into a required parameter.\n * @breaking-change 14.0.0\n */\n _platform) {\n this._platform = _platform;\n /** Map of all registered message elements that have been placed into the document. */\n this._messageRegistry = new Map();\n /** Container for all registered messages. */\n this._messagesContainer = null;\n /** Unique ID for the service. */\n this._id = `${nextId++}`;\n this._document = _document;\n this._id = inject(APP_ID) + '-' + nextId++;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message, this._id);\n this._messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n }\n else if (!this._messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = this._messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (this._messagesContainer?.childNodes.length === 0) {\n this._messagesContainer.remove();\n this._messagesContainer = null;\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n this._messagesContainer?.remove();\n this._messagesContainer = null;\n this._messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement, this._id);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n this._messagesContainer.appendChild(messageElement);\n this._messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n this._messageRegistry.get(key)?.messageElement?.remove();\n this._messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (this._messagesContainer) {\n return;\n }\n const containerClassName = 'cdk-describedby-message-container';\n const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform=\"server\"]`);\n for (let i = 0; i < serverContainers.length; i++) {\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n serverContainers[i].remove();\n }\n const messagesContainer = this._document.createElement('div');\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add(containerClassName);\n messagesContainer.classList.add('cdk-visually-hidden');\n // @breaking-change 14.0.0 Remove null check for `_platform`.\n if (this._platform && !this._platform.isBrowser) {\n messagesContainer.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(messagesContainer);\n this._messagesContainer = messagesContainer;\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = this._messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n}\nAriaDescriber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nAriaDescriber.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: AriaDescriber, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: AriaDescriber, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.Platform }]; } });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element, serviceId) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n this._skipPredicateFn = (item) => item.disabled;\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n this.change = new Subject();\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n _items.changes.subscribe((newItems) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n this._items.length &&\n this._items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = this._letterKeyStream\n .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('')))\n .subscribe(inputString => {\n const items = this._getItemsArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item) &&\n item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(index);\n break;\n }\n }\n this._pressedLetters = [];\n });\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem;\n this.updateActiveItem(item);\n if (this._activeItem !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n }\n else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem;\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem = activeItem == null ? null : activeItem;\n this._activeItemIndex = index;\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass FocusKeyManager extends ListKeyManager {\n constructor() {\n super(...arguments);\n this._origin = 'program';\n }\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return (isPotentiallyFocusable(element) &&\n !this.isDisabled(element) &&\n (config?.ignoreVisibility || this.isVisible(element)));\n }\n}\nInteractivityChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nInteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea');\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length\n ? markers[markers.length - 1]\n : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild?.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getFirstTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getLastTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n}\nFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n constructor(_elementRef, _focusTrapFactory, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange &&\n !autoCaptureChange.firstChange &&\n this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n}\nCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n}\nFocusTrapManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n}\nConfigurableFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurableFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n // zero or `event.buttons` is zero, depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox.\n // Note that there's an edge case where the user could click the 0x0 spot of the\n // screen themselves, but that is unlikely to contain interactive elements.\n return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0);\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return (!!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = {\n ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n ...options,\n };\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n}\nInputModalityDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nInputModalityDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n if (!this._currentPromise) {\n this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));\n }\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n this._currentResolve();\n this._currentPromise = this._currentResolve = undefined;\n }, 100);\n return this._currentPromise;\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n clearTimeout(this._previousTimeout);\n this._liveElement?.remove();\n this._liveElement = null;\n this._currentResolve?.();\n this._currentPromise = this._currentResolve = undefined;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n}\nLiveAnnouncer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLiveAnnouncer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness, this.duration);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n}\nCdkAriaLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAriaLive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"], duration: [\"cdkAriaLiveDuration\", \"duration\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }], duration: [{\n type: Input,\n args: ['cdkAriaLiveDuration']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, \n /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false));\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n if (event.type === 'focus') {\n this._onFocus(event, element);\n }\n else {\n this._onBlur(event, element);\n }\n }\n };\n this._document = document;\n this._detectionMode = options?.detectionMode || 0 /* FocusMonitorDetectionMode.IMMEDIATE */;\n }\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n return of(null);\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode,\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n if (this._windowFocused && this._lastFocusOrigin) {\n return this._lastFocusOrigin;\n }\n // If the interaction is coming from an input label, we consider it a mouse interactions.\n // This is a special case where focus moves on `click`, rather than `mousedown` which breaks\n // our detection, because all our assumptions are for `mousedown`. We need to handle this\n // special case, because it's very common for checkboxes and radio buttons.\n if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) {\n return 'mouse';\n }\n return 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //
    \n //
    \n //
    \n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === 1 /* FocusMonitorDetectionMode.EVENTUAL */ ||\n !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === 0 /* FocusMonitorDetectionMode.IMMEDIATE */) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo ||\n (elementInfo.checkChildren &&\n event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo, null);\n }\n _emitOrigin(info, origin) {\n if (info.subject.observers.length) {\n this._ngZone.run(() => info.subject.next(origin));\n }\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n /**\n * Returns whether an interaction is likely to have come from the user clicking the `label` of\n * an `input` or `textarea` in order to focus it.\n * @param focusEventTarget Target currently receiving focus.\n */\n _isLastInteractionFromInputLabel(focusEventTarget) {\n const { _mostRecentTarget: mostRecentTarget, mostRecentModality } = this._inputModalityDetector;\n // If the last interaction used the mouse on an element contained by one of the labels\n // of an `input`/`textarea` that is currently focused, it is very likely that the\n // user redirected focus using the label.\n if (mostRecentModality !== 'mouse' ||\n !mostRecentTarget ||\n mostRecentTarget === focusEventTarget ||\n (focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA') ||\n focusEventTarget.disabled) {\n return false;\n }\n const labels = focusEventTarget.labels;\n if (labels) {\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].contains(mostRecentTarget)) {\n return true;\n }\n }\n }\n return false;\n }\n}\nFocusMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FocusMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._focusOrigin = null;\n this.cdkFocusChange = new EventEmitter();\n }\n get focusOrigin() {\n return this._focusOrigin;\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor\n .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => {\n this._focusOrigin = origin;\n this.cdkFocusChange.emit(origin);\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n}\nCdkMonitorFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkMonitorFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, exportAs: [\"cdkMonitorFocus\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n exportAs: 'cdkMonitorFocus',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusMonitor }]; }, propDecorators: { cdkFocusChange: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n this._breakpointSubscription = inject(BreakpointObserver)\n .observe('(forced-colors: active)')\n .subscribe(() => {\n if (this._hasCheckedHighContrastMode) {\n this._hasCheckedHighContrastMode = false;\n this._applyBodyHighContrastModeCssClasses();\n }\n });\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return 0 /* HighContrastMode.NONE */;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle\n ? documentWindow.getComputedStyle(testElement)\n : null;\n const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n // Pre Windows 11 dark theme.\n case 'rgb(0,0,0)':\n // Windows 11 dark themes.\n case 'rgb(45,50,54)':\n case 'rgb(32,32,32)':\n return 2 /* HighContrastMode.WHITE_ON_BLACK */;\n // Pre Windows 11 light theme.\n case 'rgb(255,255,255)':\n // Windows 11 light theme.\n case 'rgb(255,250,239)':\n return 1 /* HighContrastMode.BLACK_ON_WHITE */;\n }\n return 0 /* HighContrastMode.NONE */;\n }\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === 1 /* HighContrastMode.BLACK_ON_WHITE */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === 2 /* HighContrastMode.WHITE_ON_BLACK */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n}\nHighContrastModeDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nHighContrastModeDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n}\nA11yModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule });\nA11yModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: A11yModule, declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], imports: [ObserversModule], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] });\nA11yModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: A11yModule, imports: [ObserversModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: A11yModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ObserversModule],\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n }]\n }], ctorParameters: function () { return [{ type: HighContrastModeDetector }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader };\n","import * as i0 from '@angular/core';\nimport { Version, InjectionToken, NgModule, Optional, Inject, inject, LOCALE_ID, Injectable, Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, EventEmitter, Output } from '@angular/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader } from '@angular/cdk/a11y';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { VERSION as VERSION$1 } from '@angular/cdk';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { _isTestEnvironment, normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { coerceBooleanProperty, coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';\nimport { Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Current version of Angular Material. */\nconst VERSION = new Version('14.2.5');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nclass AnimationCurves {\n}\nAnimationCurves.STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)';\nAnimationCurves.DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)';\nAnimationCurves.ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)';\nAnimationCurves.SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)';\n/** @docs-private */\nclass AnimationDurations {\n}\nAnimationDurations.COMPLEX = '375ms';\nAnimationDurations.ENTERING = '225ms';\nAnimationDurations.EXITING = '195ms';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nfunction MATERIAL_SANITY_CHECKS_FACTORY() {\n return true;\n}\n/** Injection token that configures whether the Material sanity checks are enabled. */\nconst MATERIAL_SANITY_CHECKS = new InjectionToken('mat-sanity-checks', {\n providedIn: 'root',\n factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\nclass MatCommonModule {\n constructor(highContrastModeDetector, _sanityChecks, _document) {\n this._sanityChecks = _sanityChecks;\n this._document = _document;\n /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n this._hasDoneGlobalChecks = false;\n // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n // in MatCommonModule.\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n if (!this._hasDoneGlobalChecks) {\n this._hasDoneGlobalChecks = true;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (this._checkIsEnabled('doctype')) {\n _checkDoctypeIsDefined(this._document);\n }\n if (this._checkIsEnabled('theme')) {\n _checkThemeIsPresent(this._document);\n }\n if (this._checkIsEnabled('version')) {\n _checkCdkVersionMatch();\n }\n }\n }\n }\n /** Gets whether a specific sanity check is enabled. */\n _checkIsEnabled(name) {\n if (_isTestEnvironment()) {\n return false;\n }\n if (typeof this._sanityChecks === 'boolean') {\n return this._sanityChecks;\n }\n return !!this._sanityChecks[name];\n }\n}\nMatCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCommonModule, deps: [{ token: i1.HighContrastModeDetector }, { token: MATERIAL_SANITY_CHECKS, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.NgModule });\nMatCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCommonModule, imports: [BidiModule], exports: [BidiModule] });\nMatCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCommonModule, imports: [BidiModule, BidiModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule],\n exports: [BidiModule],\n }]\n }], ctorParameters: function () { return [{ type: i1.HighContrastModeDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MATERIAL_SANITY_CHECKS]\n }] }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/** Checks that the page has a doctype. */\nfunction _checkDoctypeIsDefined(doc) {\n if (!doc.doctype) {\n console.warn('Current document does not have a doctype. This may cause ' +\n 'some Angular Material components not to behave as expected.');\n }\n}\n/** Checks that a theme has been included. */\nfunction _checkThemeIsPresent(doc) {\n // We need to assert that the `body` is defined, because these checks run very early\n // and the `body` won't be defined if the consumer put their scripts in the `head`.\n if (!doc.body || typeof getComputedStyle !== 'function') {\n return;\n }\n const testElement = doc.createElement('div');\n testElement.classList.add('mat-theme-loaded-marker');\n doc.body.appendChild(testElement);\n const computedStyle = getComputedStyle(testElement);\n // In some situations the computed style of the test element can be null. For example in\n // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n if (computedStyle && computedStyle.display !== 'none') {\n console.warn('Could not find Angular Material core theme. Most Material ' +\n 'components may not work as expected. For more info refer ' +\n 'to the theming guide: https://material.angular.io/guide/theming');\n }\n testElement.remove();\n}\n/** Checks whether the Material version matches the CDK version. */\nfunction _checkCdkVersionMatch() {\n if (VERSION.full !== VERSION$1.full) {\n console.warn('The Angular Material version (' +\n VERSION.full +\n ') does not match ' +\n 'the Angular CDK version (' +\n VERSION$1.full +\n ').\\n' +\n 'Please ensure the versions of these two packages exactly match.');\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction mixinDisabled(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this._disabled = false;\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction mixinColor(base, defaultColor) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this.defaultColor = defaultColor;\n // Set the default color that can be specified from the mixin.\n this.color = defaultColor;\n }\n get color() {\n return this._color;\n }\n set color(value) {\n const colorPalette = value || this.defaultColor;\n if (colorPalette !== this._color) {\n if (this._color) {\n this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n }\n if (colorPalette) {\n this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n }\n this._color = colorPalette;\n }\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction mixinDisableRipple(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this._disableRipple = false;\n }\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction mixinTabIndex(base, defaultTabIndex = 0) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this._tabIndex = defaultTabIndex;\n this.defaultTabIndex = defaultTabIndex;\n }\n get tabIndex() {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction mixinErrorState(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n /** Whether the component is in an error state. */\n this.errorState = false;\n }\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.errorStateMatcher || this._defaultErrorStateMatcher;\n const control = this.ngControl ? this.ngControl.control : null;\n const newState = matcher.isErrorState(control, parent);\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Mixin to augment a directive with an initialized property that will emits when ngOnInit ends. */\nfunction mixinInitialized(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n /** Whether this directive has been marked as initialized. */\n this._isInitialized = false;\n /**\n * List of subscribers that subscribed before the directive was initialized. Should be notified\n * during _markInitialized. Set to null after pending subscribers are notified, and should\n * not expect to be populated after.\n */\n this._pendingSubscribers = [];\n /**\n * Observable stream that emits when the directive initializes. If already initialized, the\n * subscriber is stored to be notified once _markInitialized is called.\n */\n this.initialized = new Observable(subscriber => {\n // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n // when _markInitialized is called.\n if (this._isInitialized) {\n this._notifySubscriber(subscriber);\n }\n else {\n this._pendingSubscribers.push(subscriber);\n }\n });\n }\n /**\n * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n * of ngOnInit.\n * @docs-private\n */\n _markInitialized() {\n if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This directive has already been marked as initialized and ' +\n 'should not be called twice.');\n }\n this._isInitialized = true;\n this._pendingSubscribers.forEach(this._notifySubscriber);\n this._pendingSubscribers = null;\n }\n /** Emits and completes the subscriber stream (should only emit once). */\n _notifySubscriber(subscriber) {\n subscriber.next();\n subscriber.complete();\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** InjectionToken for datepicker that can be used to override default locale code. */\nconst MAT_DATE_LOCALE = new InjectionToken('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n/** @docs-private */\nfunction MAT_DATE_LOCALE_FACTORY() {\n return inject(LOCALE_ID);\n}\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nclass DateAdapter {\n constructor() {\n this._localeChanges = new Subject();\n /** A stream that emits when the locale changes. */\n this.localeChanges = this._localeChanges;\n }\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj) {\n return this.isDateInstance(obj) && this.isValid(obj) ? obj : null;\n }\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value) {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale) {\n this.locale = locale;\n this._localeChanges.next();\n }\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first, second) {\n return (this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second));\n }\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first, second) {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date, min, max) {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAT_DATE_FORMATS = new InjectionToken('mat-date-formats');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\nclass NativeDateAdapter extends DateAdapter {\n constructor(matDateLocale, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\n _platform) {\n super();\n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\n this.useUtcForDisplay = false;\n super.setLocale(matDateLocale);\n }\n getYear(date) {\n return date.getFullYear();\n }\n getMonth(date) {\n return date.getMonth();\n }\n getDate(date) {\n return date.getDate();\n }\n getDayOfWeek(date) {\n return date.getDay();\n }\n getMonthNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n getDateNames() {\n const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getDayOfWeekNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getYearName(date) {\n const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n return this._format(dtf, date);\n }\n getFirstDayOfWeek() {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n }\n getNumDaysInMonth(date) {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value, parseFormat) {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n const dtf = new Intl.DateTimeFormat(this.locale, { ...displayFormat, timeZone: 'utc' });\n return this._format(dtf, date);\n }\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n addCalendarMonths(date, months) {\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n return newDate;\n }\n addCalendarDays(date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n toIso8601(date) {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value) {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return obj instanceof Date;\n }\n isValid(date) {\n return !isNaN(date.getTime());\n }\n invalid() {\n return new Date(NaN);\n }\n /** Creates a date but allows the month and date to overflow. */\n _createDateWithOverflow(year, month, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n _2digit(n) {\n return ('00' + n).slice(-2);\n }\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n _format(dtf, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n}\nNativeDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: NativeDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nNativeDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: NativeDateAdapter });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: NativeDateAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAT_NATIVE_DATE_FORMATS = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n },\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass NativeDateModule {\n}\nNativeDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: NativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNativeDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: NativeDateModule });\nNativeDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: NativeDateModule, providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: NativeDateModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }],\n }]\n }] });\nclass MatNativeDateModule {\n}\nMatNativeDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatNativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatNativeDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatNativeDateModule, imports: [NativeDateModule] });\nMatNativeDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatNativeDateModule, providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }], imports: [NativeDateModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatNativeDateModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NativeDateModule],\n providers: [{ provide: MAT_DATE_FORMATS, useValue: MAT_NATIVE_DATE_FORMATS }],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Error state matcher that matches when a control is invalid and dirty. */\nclass ShowOnDirtyErrorStateMatcher {\n isErrorState(control, form) {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n}\nShowOnDirtyErrorStateMatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nShowOnDirtyErrorStateMatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, decorators: [{\n type: Injectable\n }] });\n/** Provider that defines how form controls behave with regards to displaying error messages. */\nclass ErrorStateMatcher {\n isErrorState(control, form) {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n}\nErrorStateMatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nErrorStateMatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ErrorStateMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\nclass MatLine {\n}\nMatLine.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatLine, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatLine.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatLine, selector: \"[mat-line], [matLine]\", host: { classAttribute: \"mat-line\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatLine, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-line], [matLine]',\n host: { 'class': 'mat-line' },\n }]\n }] });\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nfunction setLines(lines, element, prefix = 'mat') {\n // Note: doesn't need to unsubscribe, because `changes`\n // gets completed by Angular when the view is destroyed.\n lines.changes.pipe(startWith(lines)).subscribe(({ length }) => {\n setClass(element, `${prefix}-2-line`, false);\n setClass(element, `${prefix}-3-line`, false);\n setClass(element, `${prefix}-multi-line`, false);\n if (length === 2 || length === 3) {\n setClass(element, `${prefix}-${length}-line`, true);\n }\n else if (length > 3) {\n setClass(element, `${prefix}-multi-line`, true);\n }\n });\n}\n/** Adds or removes a class from an element. */\nfunction setClass(element, className, isAdd) {\n element.nativeElement.classList.toggle(className, isAdd);\n}\nclass MatLineModule {\n}\nMatLineModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatLineModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatLineModule, declarations: [MatLine], imports: [MatCommonModule], exports: [MatLine, MatCommonModule] });\nMatLineModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatLineModule, imports: [MatCommonModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatLineModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [MatLine, MatCommonModule],\n declarations: [MatLine],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Reference to a previously launched ripple element.\n */\nclass RippleRef {\n constructor(_renderer, \n /** Reference to the ripple HTML element. */\n element, \n /** Ripple configuration used for the ripple. */\n config, \n /* Whether animations are forcibly disabled for ripples through CSS. */\n _animationForciblyDisabledThroughCss = false) {\n this._renderer = _renderer;\n this.element = element;\n this.config = config;\n this._animationForciblyDisabledThroughCss = _animationForciblyDisabledThroughCss;\n /** Current state of the ripple. */\n this.state = 3 /* RippleState.HIDDEN */;\n }\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\n }\n}\n\n// TODO: import these values from `@material/ripple` eventually.\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nconst defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150,\n};\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n/** Options that apply to all the event listeners that are bound by the ripple renderer. */\nconst passiveEventOptions = normalizePassiveListenerOptions({ passive: true });\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nclass RippleRenderer {\n constructor(_target, _ngZone, elementOrElementRef, platform) {\n this._target = _target;\n this._ngZone = _ngZone;\n /** Whether the pointer is currently down or not. */\n this._isPointerDown = false;\n /**\n * Map of currently active ripple references.\n * The ripple reference is mapped to its element event listeners.\n * The reason why `| null` is used is that event listeners are added only\n * when the condition is truthy (see the `_startFadeOutTransition` method).\n */\n this._activeRipples = new Map();\n /** Whether pointer-up event listeners have been registered. */\n this._pointerUpEventsRegistered = false;\n // Only do anything if we're on the browser.\n if (platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n }\n /**\n * Fades in a ripple at the given coordinates.\n * @param x Coordinate within the element, along the X axis at which to start the ripple.\n * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n * @param config Extra ripple options.\n */\n fadeInRipple(x, y, config = {}) {\n const containerRect = (this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect());\n const animationConfig = { ...defaultRippleAnimationConfig, ...config.animation };\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const enterDuration = animationConfig.enterDuration;\n const ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n // If a custom color has been specified, set it as inline style. If no color is\n // set, the default color will be applied through the ripple theme styles.\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n ripple.style.transitionDuration = `${enterDuration}ms`;\n this._containerElement.appendChild(ripple);\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical to ensure that the `scale` animates properly.\n // We enforce a style recalculation by calling `getComputedStyle` and *accessing* a property.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n const computedStyles = window.getComputedStyle(ripple);\n const userTransitionProperty = computedStyles.transitionProperty;\n const userTransitionDuration = computedStyles.transitionDuration;\n // Note: We detect whether animation is forcibly disabled through CSS by the use of\n // `transition: none`. This is technically unexpected since animations are controlled\n // through the animation config, but this exists for backwards compatibility. This logic does\n // not need to be super accurate since it covers some edge cases which can be easily avoided by users.\n const animationForciblyDisabledThroughCss = userTransitionProperty === 'none' ||\n // Note: The canonical unit for serialized CSS `
    \\n\\n\", styles: [\".mat-optgroup-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;-webkit-user-select:none;user-select:none;cursor:default}.mat-optgroup-label[disabled]{cursor:default}[dir=rtl] .mat-optgroup-label{text-align:right}.mat-optgroup-label .mat-icon{margin-right:16px;vertical-align:middle}.mat-optgroup-label .mat-icon svg{vertical-align:top}[dir=rtl] .mat-optgroup-label .mat-icon{margin-left:16px;margin-right:0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatOptgroup, decorators: [{\n type: Component,\n args: [{ selector: 'mat-optgroup', exportAs: 'matOptgroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['disabled'], host: {\n 'class': 'mat-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId',\n '[class.mat-optgroup-disabled]': 'disabled',\n }, providers: [{ provide: MAT_OPTGROUP, useExisting: MatOptgroup }], template: \"{{ label }} \\n\\n\", styles: [\".mat-optgroup-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;-webkit-user-select:none;user-select:none;cursor:default}.mat-optgroup-label[disabled]{cursor:default}[dir=rtl] .mat-optgroup-label{text-align:right}.mat-optgroup-label .mat-icon{margin-right:16px;vertical-align:middle}.mat-optgroup-label .mat-icon svg{vertical-align:top}[dir=rtl] .mat-optgroup-label .mat-icon{margin-left:16px;margin-right:0}\"] }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n/** Event object emitted by MatOption when selected or deselected. */\nclass MatOptionSelectionChange {\n constructor(\n /** Reference to the option that emitted the event. */\n source, \n /** Whether the change in the option's value was a result of a user action. */\n isUserInput = false) {\n this.source = source;\n this.isUserInput = isUserInput;\n }\n}\nclass _MatOptionBase {\n constructor(_element, _changeDetectorRef, _parent, group) {\n this._element = _element;\n this._changeDetectorRef = _changeDetectorRef;\n this._parent = _parent;\n this.group = group;\n this._selected = false;\n this._active = false;\n this._disabled = false;\n this._mostRecentViewValue = '';\n /** The unique ID of the option. */\n this.id = `mat-option-${_uniqueIdCounter++}`;\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n this.onSelectionChange = new EventEmitter();\n /** Emits when the state of the option changes and any parents have to be notified. */\n this._stateChanges = new Subject();\n }\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() {\n return this._parent && this._parent.multiple;\n }\n /** Whether or not the option is currently selected. */\n get selected() {\n return this._selected;\n }\n /** Whether the option is disabled. */\n get disabled() {\n return (this.group && this.group.disabled) || this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n /** Whether ripples for the option are disabled. */\n get disableRipple() {\n return !!(this._parent && this._parent.disableRipple);\n }\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active() {\n return this._active;\n }\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue() {\n // TODO(kara): Add input property alternative for node envs.\n return (this._getHostElement().textContent || '').trim();\n }\n /** Selects the option. */\n select() {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n /** Deselects the option. */\n deselect() {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent();\n }\n }\n /** Sets focus onto this option. */\n focus(_origin, options) {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles() {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles() {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n return this.viewValue;\n }\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction() {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n /**\n * Gets the `aria-selected` value for the option. We explicitly omit the `aria-selected`\n * attribute from single-selection, unselected options. Including the `aria-selected=\"false\"`\n * attributes adds a significant amount of noise to screen-reader users without providing useful\n * information.\n */\n _getAriaSelected() {\n return this.selected || (this.multiple ? false : null);\n }\n /** Returns the correct tabindex for the option depending on disabled state. */\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Gets the host DOM element. */\n _getHostElement() {\n return this._element.nativeElement;\n }\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n if (viewValue !== this._mostRecentViewValue) {\n this._mostRecentViewValue = viewValue;\n this._stateChanges.next();\n }\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n /** Emits the selection change event. */\n _emitSelectionChangeEvent(isUserInput = false) {\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n }\n}\n_MatOptionBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatOptionBase, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Directive });\n_MatOptionBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatOptionBase, inputs: { value: \"value\", id: \"id\", disabled: \"disabled\" }, outputs: { onSelectionChange: \"onSelectionChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatOptionBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined }, { type: _MatOptgroupBase }]; }, propDecorators: { value: [{\n type: Input\n }], id: [{\n type: Input\n }], disabled: [{\n type: Input\n }], onSelectionChange: [{\n type: Output\n }] } });\n/**\n * Single option inside of a `` element.\n */\nclass MatOption extends _MatOptionBase {\n constructor(element, changeDetectorRef, parent, group) {\n super(element, changeDetectorRef, parent, group);\n }\n}\nMatOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_OPTION_PARENT_COMPONENT, optional: true }, { token: MAT_OPTGROUP, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatOption, selector: \"mat-option\", host: { attributes: { \"role\": \"option\" }, listeners: { \"click\": \"_selectViaInteraction()\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"attr.tabindex\": \"_getTabIndex()\", \"class.mat-selected\": \"selected\", \"class.mat-option-multiple\": \"multiple\", \"class.mat-active\": \"active\", \"id\": \"id\", \"attr.aria-selected\": \"_getAriaSelected()\", \"attr.aria-disabled\": \"disabled.toString()\", \"class.mat-option-disabled\": \"disabled\" }, classAttribute: \"mat-option mat-focus-indicator\" }, exportAs: [\"matOption\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\\n\\n({{ group.label }})\\n\\n
    \\n
    \\n\", styles: [\".mat-option{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative;cursor:pointer;outline:none;display:flex;flex-direction:row;max-width:100%;box-sizing:border-box;align-items:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-option[disabled]{cursor:default}[dir=rtl] .mat-option{text-align:right}.mat-option .mat-icon{margin-right:16px;vertical-align:middle}.mat-option .mat-icon svg{vertical-align:top}[dir=rtl] .mat-option .mat-icon{margin-left:16px;margin-right:0}.mat-option[aria-disabled=true]{-webkit-user-select:none;user-select:none;cursor:default}.mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:32px}[dir=rtl] .mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:16px;padding-right:32px}.mat-option.mat-active::before{content:\\\"\\\"}.cdk-high-contrast-active .mat-option[aria-disabled=true]{opacity:.5}.cdk-high-contrast-active .mat-option.mat-selected:not(.mat-option-multiple)::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-option.mat-selected:not(.mat-option-multiple)::after{right:auto;left:16px}.mat-option-text{display:inline-block;flex-grow:1;overflow:hidden;text-overflow:ellipsis}.mat-option .mat-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-option-pseudo-checkbox{margin-right:8px}[dir=rtl] .mat-option-pseudo-checkbox{margin-left:8px;margin-right:0}\"], dependencies: [{ kind: \"directive\", type: MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: MatPseudoCheckbox, selector: \"mat-pseudo-checkbox\", inputs: [\"state\", \"disabled\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatOption, decorators: [{\n type: Component,\n args: [{ selector: 'mat-option', exportAs: 'matOption', host: {\n 'role': 'option',\n '[attr.tabindex]': '_getTabIndex()',\n '[class.mat-selected]': 'selected',\n '[class.mat-option-multiple]': 'multiple',\n '[class.mat-active]': 'active',\n '[id]': 'id',\n '[attr.aria-selected]': '_getAriaSelected()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[class.mat-option-disabled]': 'disabled',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-option mat-focus-indicator',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\n\\n\\n\\n\\n({{ group.label }})\\n\\n
    \\n
    \\n\", styles: [\".mat-option{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative;cursor:pointer;outline:none;display:flex;flex-direction:row;max-width:100%;box-sizing:border-box;align-items:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-option[disabled]{cursor:default}[dir=rtl] .mat-option{text-align:right}.mat-option .mat-icon{margin-right:16px;vertical-align:middle}.mat-option .mat-icon svg{vertical-align:top}[dir=rtl] .mat-option .mat-icon{margin-left:16px;margin-right:0}.mat-option[aria-disabled=true]{-webkit-user-select:none;user-select:none;cursor:default}.mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:32px}[dir=rtl] .mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:16px;padding-right:32px}.mat-option.mat-active::before{content:\\\"\\\"}.cdk-high-contrast-active .mat-option[aria-disabled=true]{opacity:.5}.cdk-high-contrast-active .mat-option.mat-selected:not(.mat-option-multiple)::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-option.mat-selected:not(.mat-option-multiple)::after{right:auto;left:16px}.mat-option-text{display:inline-block;flex-grow:1;overflow:hidden;text-overflow:ellipsis}.mat-option .mat-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-option-pseudo-checkbox{margin-right:8px}[dir=rtl] .mat-option-pseudo-checkbox{margin-left:8px;margin-right:0}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_OPTION_PARENT_COMPONENT]\n }] }, { type: MatOptgroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_OPTGROUP]\n }] }]; } });\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nfunction _countGroupLabelsBeforeOption(optionIndex, options, optionGroups) {\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n return groupCounter;\n }\n return 0;\n}\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nfunction _getOptionScrollPosition(optionOffset, optionHeight, currentScrollPosition, panelHeight) {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n return currentScrollPosition;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatOptionModule {\n}\nMatOptionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatOptionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatOptionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatOptionModule, declarations: [MatOption, MatOptgroup], imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule], exports: [MatOption, MatOptgroup] });\nMatOptionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatOptionModule, imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatOptionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, CommonModule, MatCommonModule, MatPseudoCheckboxModule],\n exports: [MatOption, MatOptgroup],\n declarations: [MatOption, MatOptgroup],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationCurves, AnimationDurations, DateAdapter, ErrorStateMatcher, MATERIAL_SANITY_CHECKS, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_DATE_LOCALE_FACTORY, MAT_NATIVE_DATE_FORMATS, MAT_OPTGROUP, MAT_OPTION_PARENT_COMPONENT, MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule, MatLine, MatLineModule, MatNativeDateModule, MatOptgroup, MatOption, MatOptionModule, MatOptionSelectionChange, MatPseudoCheckbox, MatPseudoCheckboxModule, MatRipple, MatRippleModule, NativeDateAdapter, NativeDateModule, RippleRef, RippleRenderer, ShowOnDirtyErrorStateMatcher, VERSION, _MatOptgroupBase, _MatOptionBase, _countGroupLabelsBeforeOption, _getOptionScrollPosition, defaultRippleAnimationConfig, mixinColor, mixinDisableRipple, mixinDisabled, mixinErrorState, mixinInitialized, mixinTabIndex, setLines };\n","import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n create(callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n}\nMutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n constructor(_mutationObserverFactory) {\n this._mutationObserverFactory = _mutationObserverFactory;\n /** Keeps track of the existing MutationObservers so they can be reused. */\n this._observedElements = new Map();\n }\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n }\n else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\nContentObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ContentObserver, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });\nContentObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ContentObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ContentObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n constructor(_contentObserver, _elementRef, _ngZone) {\n this._contentObserver = _contentObserver;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Event emitted for each change in the element's content. */\n this.event = new EventEmitter();\n this._disabled = false;\n this._currentSubscription = null;\n }\n /**\n * Whether observing content is disabled. This option can be used\n * to disconnect the underlying MutationObserver until it is needed.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n /** Debounce interval for emitting the changes. */\n get debounce() {\n return this._debounce;\n }\n set debounce(value) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n ngOnDestroy() {\n this._unsubscribe();\n }\n _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n // Consider brining it back inside the zone next time we're making breaking changes.\n // Bringing it back inside can cause things like infinite change detection loops and changed\n // after checked errors if people's code isn't handling it properly.\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n });\n }\n _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\nCdkObserveContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkObserveContent, deps: [{ token: ContentObserver }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkObserveContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\"], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkObserveContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent',\n }]\n }], ctorParameters: function () { return [{ type: ContentObserver }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { event: [{\n type: Output,\n args: ['cdkObserveContent']\n }], disabled: [{\n type: Input,\n args: ['cdkObserveContentDisabled']\n }], debounce: [{\n type: Input\n }] } });\nclass ObserversModule {\n}\nObserversModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nObserversModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: ObserversModule, declarations: [CdkObserveContent], exports: [CdkObserveContent] });\nObserversModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ObserversModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkObserveContent],\n declarations: [CdkObserveContent],\n providers: [MutationObserverFactory],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n","import * as i4 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Attribute, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject, merge, fromEvent } from 'rxjs';\nimport { startWith, takeUntil, take } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i2 from '@angular/cdk/platform';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextUniqueId$2 = 0;\n/**\n * Injection token that can be used to reference instances of `MatError`. It serves as\n * alternative token to the actual `MatError` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_ERROR = new InjectionToken('MatError');\n/** Single error message to be shown underneath the form field. */\nclass MatError {\n constructor(ariaLive, elementRef) {\n this.id = `mat-error-${nextUniqueId$2++}`;\n // If no aria-live value is set add 'polite' as a default. This is preferred over setting\n // role='alert' so that screen readers do not interrupt the current task to read this aloud.\n if (!ariaLive) {\n elementRef.nativeElement.setAttribute('aria-live', 'polite');\n }\n }\n}\nMatError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatError, deps: [{ token: 'aria-live', attribute: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatError.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatError, selector: \"mat-error\", inputs: { id: \"id\" }, host: { attributes: { \"aria-atomic\": \"true\" }, properties: { \"attr.id\": \"id\" }, classAttribute: \"mat-error\" }, providers: [{ provide: MAT_ERROR, useExisting: MatError }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatError, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-error',\n host: {\n 'class': 'mat-error',\n '[attr.id]': 'id',\n 'aria-atomic': 'true',\n },\n providers: [{ provide: MAT_ERROR, useExisting: MatError }],\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: i0.ElementRef }]; }, propDecorators: { id: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Animations used by the MatFormField.\n * @docs-private\n */\nconst matFormFieldAnimations = {\n /** Animation that transitions the form field's error and hint messages. */\n transitionMessages: trigger('transitionMessages', [\n // TODO(mmalerba): Use angular animations for label animation as well.\n state('enter', style({ opacity: 1, transform: 'translateY(0%)' })),\n transition('void => enter', [\n style({ opacity: 0, transform: 'translateY(-5px)' }),\n animate('300ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n ]),\n ]),\n};\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\nclass MatFormFieldControl {\n}\nMatFormFieldControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFormFieldControl, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatFormFieldControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatFormFieldControl, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFormFieldControl, decorators: [{\n type: Directive\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nfunction getMatFormFieldPlaceholderConflictError() {\n return Error('Placeholder attribute and child element were both specified.');\n}\n/** @docs-private */\nfunction getMatFormFieldDuplicatedHintError(align) {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n/** @docs-private */\nfunction getMatFormFieldMissingControlError() {\n return Error('mat-form-field must contain a MatFormFieldControl.');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextUniqueId$1 = 0;\n/**\n * Injection token that can be used to reference instances of `MatHint`. It serves as\n * alternative token to the actual `MatHint` class which could cause unnecessary\n * retention of the class and its directive metadata.\n *\n * *Note*: This is not part of the public API as the MDC-based form-field will not\n * need a lightweight token for `MatHint` and we want to reduce breaking changes.\n */\nconst _MAT_HINT = new InjectionToken('MatHint');\n/** Hint text to be shown underneath the form field control. */\nclass MatHint {\n constructor() {\n /** Whether to align the hint label at the start or end of the line. */\n this.align = 'start';\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n this.id = `mat-hint-${nextUniqueId$1++}`;\n }\n}\nMatHint.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHint, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatHint.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatHint, selector: \"mat-hint\", inputs: { align: \"align\", id: \"id\" }, host: { properties: { \"class.mat-form-field-hint-end\": \"align === \\\"end\\\"\", \"attr.id\": \"id\", \"attr.align\": \"null\" }, classAttribute: \"mat-hint\" }, providers: [{ provide: _MAT_HINT, useExisting: MatHint }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHint, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-hint',\n host: {\n 'class': 'mat-hint',\n '[class.mat-form-field-hint-end]': 'align === \"end\"',\n '[attr.id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n },\n providers: [{ provide: _MAT_HINT, useExisting: MatHint }],\n }]\n }], propDecorators: { align: [{\n type: Input\n }], id: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The floating label for a `mat-form-field`. */\nclass MatLabel {\n}\nMatLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatLabel, selector: \"mat-label\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatLabel, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-label',\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The placeholder text for an `MatFormField`.\n * @deprecated Use `` to specify the label and the `placeholder` attribute to specify the\n * placeholder.\n * @breaking-change 8.0.0\n */\nclass MatPlaceholder {\n}\nMatPlaceholder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatPlaceholder, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatPlaceholder.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatPlaceholder, selector: \"mat-placeholder\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatPlaceholder, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-placeholder',\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `MatPrefix`. It serves as\n * alternative token to the actual `MatPrefix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_PREFIX = new InjectionToken('MatPrefix');\n/** Prefix to be placed in front of the form field. */\nclass MatPrefix {\n}\nMatPrefix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatPrefix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatPrefix, selector: \"[matPrefix]\", providers: [{ provide: MAT_PREFIX, useExisting: MatPrefix }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatPrefix, decorators: [{\n type: Directive,\n args: [{\n selector: '[matPrefix]',\n providers: [{ provide: MAT_PREFIX, useExisting: MatPrefix }],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `MatSuffix`. It serves as\n * alternative token to the actual `MatSuffix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SUFFIX = new InjectionToken('MatSuffix');\n/** Suffix to be placed at the end of the form field. */\nclass MatSuffix {\n}\nMatSuffix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatSuffix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatSuffix, selector: \"[matSuffix]\", providers: [{ provide: MAT_SUFFIX, useExisting: MatSuffix }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSuffix, decorators: [{\n type: Directive,\n args: [{\n selector: '[matSuffix]',\n providers: [{ provide: MAT_SUFFIX, useExisting: MatSuffix }],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextUniqueId = 0;\nconst floatingLabelScale = 0.75;\nconst outlineGapPadding = 5;\n/**\n * Boilerplate for applying mixins to MatFormField.\n * @docs-private\n */\nconst _MatFormFieldBase = mixinColor(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}, 'primary');\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nconst MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken('MAT_FORM_FIELD_DEFAULT_OPTIONS');\n/**\n * Injection token that can be used to inject an instances of `MatFormField`. It serves\n * as alternative token to the actual `MatFormField` class which would cause unnecessary\n * retention of the `MatFormField` class and its component metadata.\n */\nconst MAT_FORM_FIELD = new InjectionToken('MatFormField');\n/** Container for form controls that applies Material Design styling and behavior. */\nclass MatFormField extends _MatFormFieldBase {\n constructor(elementRef, _changeDetectorRef, _dir, _defaults, _platform, _ngZone, _animationMode) {\n super(elementRef);\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._defaults = _defaults;\n this._platform = _platform;\n this._ngZone = _ngZone;\n /**\n * Whether the outline gap needs to be calculated\n * immediately on the next change detection run.\n */\n this._outlineGapCalculationNeededImmediately = false;\n /** Whether the outline gap needs to be calculated next time the zone has stabilized. */\n this._outlineGapCalculationNeededOnStable = false;\n this._destroyed = new Subject();\n this._hideRequiredMarker = false;\n /** Override for the logic that disables the label animation in certain cases. */\n this._showAlwaysAnimate = false;\n /** State of the mat-hint and mat-error animations. */\n this._subscriptAnimationState = '';\n this._hintLabel = '';\n // Unique id for the hint label.\n this._hintLabelId = `mat-hint-${nextUniqueId++}`;\n // Unique id for the label element.\n this._labelId = `mat-form-field-label-${nextUniqueId++}`;\n this.floatLabel = this._getDefaultFloatLabelState();\n this._animationsEnabled = _animationMode !== 'NoopAnimations';\n // Set the default through here so we invoke the setter on the first run.\n this.appearance = _defaults?.appearance || 'legacy';\n if (_defaults) {\n this._hideRequiredMarker = Boolean(_defaults.hideRequiredMarker);\n if (_defaults.color) {\n this.color = this.defaultColor = _defaults.color;\n }\n }\n }\n /** The form field appearance style. */\n get appearance() {\n return this._appearance;\n }\n set appearance(value) {\n const oldValue = this._appearance;\n this._appearance = value || this._defaults?.appearance || 'legacy';\n if (this._appearance === 'outline' && oldValue !== value) {\n this._outlineGapCalculationNeededOnStable = true;\n }\n }\n /** Whether the required marker should be hidden. */\n get hideRequiredMarker() {\n return this._hideRequiredMarker;\n }\n set hideRequiredMarker(value) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n /** Whether the floating label should always float or not. */\n _shouldAlwaysFloat() {\n return this.floatLabel === 'always' && !this._showAlwaysAnimate;\n }\n /** Whether the label can float or not. */\n _canLabelFloat() {\n return this.floatLabel !== 'never';\n }\n /** Text for the form field hint. */\n get hintLabel() {\n return this._hintLabel;\n }\n set hintLabel(value) {\n this._hintLabel = value;\n this._processHints();\n }\n /**\n * Whether the label should always float, never float or float as the user types.\n *\n * Note: only the legacy appearance supports the `never` option. `never` was originally added as a\n * way to make the floating label emulate the behavior of a standard input placeholder. However\n * the form field now supports both floating labels and placeholders. Therefore in the non-legacy\n * appearances the `never` option has been disabled in favor of just using the placeholder.\n */\n get floatLabel() {\n return this.appearance !== 'legacy' && this._floatLabel === 'never' ? 'auto' : this._floatLabel;\n }\n set floatLabel(value) {\n if (value !== this._floatLabel) {\n this._floatLabel = value || this._getDefaultFloatLabelState();\n this._changeDetectorRef.markForCheck();\n }\n }\n get _control() {\n // TODO(crisbeto): we need this workaround in order to support both Ivy and ViewEngine.\n // We should clean this up once Ivy is the default renderer.\n return this._explicitFormFieldControl || this._controlNonStatic || this._controlStatic;\n }\n set _control(value) {\n this._explicitFormFieldControl = value;\n }\n /**\n * Gets the id of the label element. If no label is present, returns `null`.\n */\n getLabelId() {\n return this._hasFloatingLabel() ? this._labelId : null;\n }\n /**\n * Gets an ElementRef for the element that a overlay attached to the form field should be\n * positioned relative to.\n */\n getConnectedOverlayOrigin() {\n return this._connectionContainerRef || this._elementRef;\n }\n ngAfterContentInit() {\n this._validateControlChild();\n const control = this._control;\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(`mat-form-field-type-${control.controlType}`);\n }\n // Subscribe to changes in the child control state in order to update the form field UI.\n control.stateChanges.pipe(startWith(null)).subscribe(() => {\n this._validatePlaceholders();\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n // Note that we have to run outside of the `NgZone` explicitly,\n // in order to avoid throwing users into an infinite loop\n // if `zone-patch-rxjs` is included.\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._outlineGapCalculationNeededOnStable) {\n this.updateOutlineGap();\n }\n });\n });\n // Run change detection and update the outline if the suffix or prefix changes.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._outlineGapCalculationNeededOnStable = true;\n this._changeDetectorRef.markForCheck();\n });\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.pipe(startWith(null)).subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.pipe(startWith(null)).subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n if (this._dir) {\n this._dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (typeof requestAnimationFrame === 'function') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => this.updateOutlineGap());\n });\n }\n else {\n this.updateOutlineGap();\n }\n });\n }\n }\n ngAfterContentChecked() {\n this._validateControlChild();\n if (this._outlineGapCalculationNeededImmediately) {\n this.updateOutlineGap();\n }\n }\n ngAfterViewInit() {\n // Avoid animations on load.\n this._subscriptAnimationState = 'enter';\n this._changeDetectorRef.detectChanges();\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Determines whether a class from the AbstractControlDirective\n * should be forwarded to the host element.\n */\n _shouldForward(prop) {\n const control = this._control ? this._control.ngControl : null;\n return control && control[prop];\n }\n _hasPlaceholder() {\n return !!((this._control && this._control.placeholder) || this._placeholderChild);\n }\n _hasLabel() {\n return !!(this._labelChildNonStatic || this._labelChildStatic);\n }\n _shouldLabelFloat() {\n return (this._canLabelFloat() &&\n ((this._control && this._control.shouldLabelFloat) || this._shouldAlwaysFloat()));\n }\n _hideControlPlaceholder() {\n // In the legacy appearance the placeholder is promoted to a label if no label is given.\n return ((this.appearance === 'legacy' && !this._hasLabel()) ||\n (this._hasLabel() && !this._shouldLabelFloat()));\n }\n _hasFloatingLabel() {\n // In the legacy appearance the placeholder is promoted to a label if no label is given.\n return this._hasLabel() || (this.appearance === 'legacy' && this._hasPlaceholder());\n }\n /** Determines whether to display hints or errors. */\n _getDisplayedMessages() {\n return this._errorChildren && this._errorChildren.length > 0 && this._control.errorState\n ? 'error'\n : 'hint';\n }\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel() {\n if (this._hasFloatingLabel() && this._canLabelFloat()) {\n // If animations are disabled, we shouldn't go in here,\n // because the `transitionend` will never fire.\n if (this._animationsEnabled && this._label) {\n this._showAlwaysAnimate = true;\n fromEvent(this._label.nativeElement, 'transitionend')\n .pipe(take(1))\n .subscribe(() => {\n this._showAlwaysAnimate = false;\n });\n }\n this.floatLabel = 'always';\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Ensure that there is only one placeholder (either `placeholder` attribute on the child control\n * or child element with the `mat-placeholder` directive).\n */\n _validatePlaceholders() {\n if (this._control.placeholder &&\n this._placeholderChild &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatFormFieldPlaceholderConflictError();\n }\n }\n /** Does any extra processing that is required when handling the hints. */\n _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n /**\n * Ensure that there is a maximum of one of each `` alignment specified, with the\n * attribute being considered as `align=\"start\"`.\n */\n _validateHints() {\n if (this._hintChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n let startHint;\n let endHint;\n this._hintChildren.forEach((hint) => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n }\n else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n /** Gets the default float label state. */\n _getDefaultFloatLabelState() {\n return (this._defaults && this._defaults.floatLabel) || 'auto';\n }\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n _syncDescribedByIds() {\n if (this._control) {\n let ids = [];\n // TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.\n if (this._control.userAriaDescribedBy &&\n typeof this._control.userAriaDescribedBy === 'string') {\n ids.push(...this._control.userAriaDescribedBy.split(' '));\n }\n if (this._getDisplayedMessages() === 'hint') {\n const startHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'start')\n : null;\n const endHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'end')\n : null;\n if (startHint) {\n ids.push(startHint.id);\n }\n else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n if (endHint) {\n ids.push(endHint.id);\n }\n }\n else if (this._errorChildren) {\n ids.push(...this._errorChildren.map(error => error.id));\n }\n this._control.setDescribedByIds(ids);\n }\n }\n /** Throws an error if the form field's control is missing. */\n _validateControlChild() {\n if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatFormFieldMissingControlError();\n }\n }\n /**\n * Updates the width and position of the gap in the outline. Only relevant for the outline\n * appearance.\n */\n updateOutlineGap() {\n const labelEl = this._label ? this._label.nativeElement : null;\n const container = this._connectionContainerRef.nativeElement;\n const outlineStartSelector = '.mat-form-field-outline-start';\n const outlineGapSelector = '.mat-form-field-outline-gap';\n // getBoundingClientRect isn't available on the server.\n if (this.appearance !== 'outline' || !this._platform.isBrowser) {\n return;\n }\n // If there is no content, set the gap elements to zero.\n if (!labelEl || !labelEl.children.length || !labelEl.textContent.trim()) {\n const gapElements = container.querySelectorAll(`${outlineStartSelector}, ${outlineGapSelector}`);\n for (let i = 0; i < gapElements.length; i++) {\n gapElements[i].style.width = '0';\n }\n return;\n }\n // If the element is not present in the DOM, the outline gap will need to be calculated\n // the next time it is checked and in the DOM.\n if (!this._isAttachedToDOM()) {\n this._outlineGapCalculationNeededImmediately = true;\n return;\n }\n let startWidth = 0;\n let gapWidth = 0;\n const startEls = container.querySelectorAll(outlineStartSelector);\n const gapEls = container.querySelectorAll(outlineGapSelector);\n if (this._label && this._label.nativeElement.children.length) {\n const containerRect = container.getBoundingClientRect();\n // If the container's width and height are zero, it means that the element is\n // invisible and we can't calculate the outline gap. Mark the element as needing\n // to be checked the next time the zone stabilizes. We can't do this immediately\n // on the next change detection, because even if the element becomes visible,\n // the `ClientRect` won't be recalculated immediately. We reset the\n // `_outlineGapCalculationNeededImmediately` flag some we don't run the checks twice.\n if (containerRect.width === 0 && containerRect.height === 0) {\n this._outlineGapCalculationNeededOnStable = true;\n this._outlineGapCalculationNeededImmediately = false;\n return;\n }\n const containerStart = this._getStartEnd(containerRect);\n const labelChildren = labelEl.children;\n const labelStart = this._getStartEnd(labelChildren[0].getBoundingClientRect());\n let labelWidth = 0;\n for (let i = 0; i < labelChildren.length; i++) {\n labelWidth += labelChildren[i].offsetWidth;\n }\n startWidth = Math.abs(labelStart - containerStart) - outlineGapPadding;\n gapWidth = labelWidth > 0 ? labelWidth * floatingLabelScale + outlineGapPadding * 2 : 0;\n }\n for (let i = 0; i < startEls.length; i++) {\n startEls[i].style.width = `${startWidth}px`;\n }\n for (let i = 0; i < gapEls.length; i++) {\n gapEls[i].style.width = `${gapWidth}px`;\n }\n this._outlineGapCalculationNeededOnStable = this._outlineGapCalculationNeededImmediately =\n false;\n }\n /** Gets the start end of the rect considering the current directionality. */\n _getStartEnd(rect) {\n return this._dir && this._dir.value === 'rtl' ? rect.right : rect.left;\n }\n /** Checks whether the form field is attached to the DOM. */\n _isAttachedToDOM() {\n const element = this._elementRef.nativeElement;\n if (element.getRootNode) {\n const rootNode = element.getRootNode();\n // If the element is inside the DOM the root node will be either the document\n // or the closest shadow root, otherwise it'll be the element itself.\n return rootNode && rootNode !== element;\n }\n // Otherwise fall back to checking if it's in the document. This doesn't account for\n // shadow DOM, however browser that support shadow DOM should support `getRootNode` as well.\n return document.documentElement.contains(element);\n }\n}\nMatFormField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFormField, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Directionality, optional: true }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS, optional: true }, { token: i2.Platform }, { token: i0.NgZone }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatFormField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatFormField, selector: \"mat-form-field\", inputs: { color: \"color\", appearance: \"appearance\", hideRequiredMarker: \"hideRequiredMarker\", hintLabel: \"hintLabel\", floatLabel: \"floatLabel\" }, host: { properties: { \"class.mat-form-field-appearance-standard\": \"appearance == \\\"standard\\\"\", \"class.mat-form-field-appearance-fill\": \"appearance == \\\"fill\\\"\", \"class.mat-form-field-appearance-outline\": \"appearance == \\\"outline\\\"\", \"class.mat-form-field-appearance-legacy\": \"appearance == \\\"legacy\\\"\", \"class.mat-form-field-invalid\": \"_control.errorState\", \"class.mat-form-field-can-float\": \"_canLabelFloat()\", \"class.mat-form-field-should-float\": \"_shouldLabelFloat()\", \"class.mat-form-field-has-label\": \"_hasFloatingLabel()\", \"class.mat-form-field-hide-placeholder\": \"_hideControlPlaceholder()\", \"class.mat-form-field-disabled\": \"_control.disabled\", \"class.mat-form-field-autofilled\": \"_control.autofilled\", \"class.mat-focused\": \"_control.focused\", \"class.ng-untouched\": \"_shouldForward(\\\"untouched\\\")\", \"class.ng-touched\": \"_shouldForward(\\\"touched\\\")\", \"class.ng-pristine\": \"_shouldForward(\\\"pristine\\\")\", \"class.ng-dirty\": \"_shouldForward(\\\"dirty\\\")\", \"class.ng-valid\": \"_shouldForward(\\\"valid\\\")\", \"class.ng-invalid\": \"_shouldForward(\\\"invalid\\\")\", \"class.ng-pending\": \"_shouldForward(\\\"pending\\\")\", \"class._mat-animation-noopable\": \"!_animationsEnabled\" }, classAttribute: \"mat-form-field\" }, providers: [{ provide: MAT_FORM_FIELD, useExisting: MatFormField }], queries: [{ propertyName: \"_controlNonStatic\", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: \"_controlStatic\", first: true, predicate: MatFormFieldControl, descendants: true, static: true }, { propertyName: \"_labelChildNonStatic\", first: true, predicate: MatLabel, descendants: true }, { propertyName: \"_labelChildStatic\", first: true, predicate: MatLabel, descendants: true, static: true }, { propertyName: \"_placeholderChild\", first: true, predicate: MatPlaceholder, descendants: true }, { propertyName: \"_errorChildren\", predicate: MAT_ERROR, descendants: true }, { propertyName: \"_hintChildren\", predicate: _MAT_HINT, descendants: true }, { propertyName: \"_prefixChildren\", predicate: MAT_PREFIX, descendants: true }, { propertyName: \"_suffixChildren\", predicate: MAT_SUFFIX, descendants: true }], viewQueries: [{ propertyName: \"_connectionContainerRef\", first: true, predicate: [\"connectionContainer\"], descendants: true, static: true }, { propertyName: \"_inputContainerRef\", first: true, predicate: [\"inputContainer\"], descendants: true }, { propertyName: \"_label\", first: true, predicate: [\"label\"], descendants: true }], exportAs: [\"matFormField\"], usesInheritance: true, ngImport: i0, template: \"
    \\n
    \\n\\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n \\n \\n
    \\n\\n
    \\n \\n\\n \\n \\n \\n \\n \\n
    \\n\\n
    \\n \\n
    \\n
    \\n\\n \\n
    \\n \\n
    \\n\\n
    \\n
    \\n \\n
    \\n\\n
    \\n \\n
    {{hintLabel}}
    \\n \\n
    \\n \\n
    \\n
    \\n\\n\", styles: [\".mat-form-field{display:inline-block;position:relative;text-align:left}[dir=rtl] .mat-form-field{text-align:right}.mat-form-field-wrapper{position:relative}.mat-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-form-field-prefix,.mat-form-field-suffix{white-space:nowrap;flex:none;position:relative}.mat-form-field-infix{display:block;position:relative;flex:auto;min-width:0;width:180px}.cdk-high-contrast-active .mat-form-field-infix{border-image:linear-gradient(transparent, transparent)}.mat-form-field-label-wrapper{position:absolute;left:0;box-sizing:content-box;width:100%;height:100%;overflow:hidden;pointer-events:none}[dir=rtl] .mat-form-field-label-wrapper{left:auto;right:0}.mat-form-field-label{position:absolute;left:0;font:inherit;pointer-events:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),width 400ms cubic-bezier(0.25, 0.8, 0.25, 1);display:none}[dir=rtl] .mat-form-field-label{transform-origin:100% 0;left:auto;right:0}.cdk-high-contrast-active .mat-form-field-disabled .mat-form-field-label{color:GrayText}.mat-form-field-empty.mat-form-field-label,.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label{display:block}.mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:block;transition:none}.mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-form-field-can-float .mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:block}.mat-form-field-label:not(.mat-form-field-empty){transition:none}.mat-form-field-underline{position:absolute;width:100%;pointer-events:none;transform:scale3d(1, 1.0001, 1)}.mat-form-field-ripple{position:absolute;left:0;width:100%;transform-origin:50%;transform:scaleX(0.5);opacity:0;transition:background-color 300ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-form-field.mat-focused .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple{opacity:1;transform:none;transition:transform 300ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 300ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-subscript-wrapper{position:absolute;box-sizing:border-box;width:100%;overflow:hidden}.mat-form-field-subscript-wrapper .mat-icon,.mat-form-field-label-wrapper .mat-icon{width:1em;height:1em;font-size:inherit;vertical-align:baseline}.mat-form-field-hint-wrapper{display:flex}.mat-form-field-hint-spacer{flex:1 0 1em}.mat-error{display:block}.mat-form-field-control-wrapper{position:relative}.mat-form-field-hint-end{order:1}.mat-form-field._mat-animation-noopable .mat-form-field-label,.mat-form-field._mat-animation-noopable .mat-form-field-ripple{transition:none}\", \".mat-form-field-appearance-fill .mat-form-field-flex{border-radius:4px 4px 0 0;padding:.75em .75em 0 .75em}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-flex{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-form-field-flex{outline:dashed 3px}.mat-form-field-appearance-fill .mat-form-field-underline::before{content:\\\"\\\";display:block;position:absolute;bottom:0;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-ripple{height:0}.mat-form-field-appearance-fill:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-fill._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}.mat-form-field-appearance-fill .mat-form-field-subscript-wrapper{padding:0 1em}\", \".mat-input-element{font:inherit;background:rgba(0,0,0,0);color:currentColor;border:none;outline:none;padding:0;margin:0;width:100%;max-width:100%;vertical-align:bottom;text-align:inherit;box-sizing:content-box}.mat-input-element:-moz-ui-invalid{box-shadow:none}.mat-input-element,.mat-input-element::-webkit-search-cancel-button,.mat-input-element::-webkit-search-decoration,.mat-input-element::-webkit-search-results-button,.mat-input-element::-webkit-search-results-decoration{-webkit-appearance:none}.mat-input-element::-webkit-contacts-auto-fill-button,.mat-input-element::-webkit-caps-lock-indicator,.mat-input-element:not([type=password])::-webkit-credentials-auto-fill-button{visibility:hidden}.mat-input-element[type=date],.mat-input-element[type=datetime],.mat-input-element[type=datetime-local],.mat-input-element[type=month],.mat-input-element[type=week],.mat-input-element[type=time]{line-height:1}.mat-input-element[type=date]::after,.mat-input-element[type=datetime]::after,.mat-input-element[type=datetime-local]::after,.mat-input-element[type=month]::after,.mat-input-element[type=week]::after,.mat-input-element[type=time]::after{content:\\\" \\\";white-space:pre;width:1px}.mat-input-element::-webkit-inner-spin-button,.mat-input-element::-webkit-calendar-picker-indicator,.mat-input-element::-webkit-clear-button{font-size:.75em}.mat-input-element::placeholder{-webkit-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-moz-placeholder{-webkit-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-webkit-input-placeholder{-webkit-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element:-ms-input-placeholder{-webkit-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-hide-placeholder .mat-input-element::placeholder{color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{opacity:0}._mat-animation-noopable .mat-input-element::placeholder{transition:none}._mat-animation-noopable .mat-input-element::-moz-placeholder{transition:none}._mat-animation-noopable .mat-input-element::-webkit-input-placeholder{transition:none}._mat-animation-noopable .mat-input-element:-ms-input-placeholder{transition:none}textarea.mat-input-element{resize:vertical;overflow:auto}textarea.mat-input-element.cdk-textarea-autosize{resize:none}textarea.mat-input-element{padding:2px 0;margin:-2px 0}select.mat-input-element{-moz-appearance:none;-webkit-appearance:none;position:relative;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box;padding-top:1em;top:-1em;margin-bottom:-1em}select.mat-input-element::-moz-focus-inner{border:0}select.mat-input-element:not(:disabled){cursor:pointer}.mat-form-field-type-mat-native-select .mat-form-field-infix::after{content:\\\"\\\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;top:50%;right:0;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-form-field-type-mat-native-select .mat-form-field-infix::after{right:auto;left:0}.mat-form-field-type-mat-native-select .mat-input-element{padding-right:15px}[dir=rtl] .mat-form-field-type-mat-native-select .mat-input-element{padding-right:0;padding-left:15px}.mat-form-field-type-mat-native-select .mat-form-field-label-wrapper{max-width:calc(100% - 10px)}.mat-form-field-type-mat-native-select.mat-form-field-appearance-outline .mat-form-field-infix::after{margin-top:-5px}.mat-form-field-type-mat-native-select.mat-form-field-appearance-fill .mat-form-field-infix::after{margin-top:-10px}\", \".mat-form-field-appearance-legacy .mat-form-field-label{transform:perspective(100px)}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon{width:1em}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button{font:inherit;vertical-align:baseline}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button .mat-icon{font-size:inherit}.mat-form-field-appearance-legacy .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-legacy .mat-form-field-ripple{top:0;height:2px;overflow:hidden}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:rgba(0,0,0,0)}.cdk-high-contrast-active .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px;border-top-color:GrayText}.mat-form-field-appearance-legacy.mat-form-field-invalid:not(.mat-focused) .mat-form-field-ripple{height:1px}\", \".mat-form-field-appearance-outline .mat-form-field-wrapper{margin:.25em 0}.mat-form-field-appearance-outline .mat-form-field-flex{padding:0 .75em 0 .75em;margin-top:-0.25em;position:relative}.mat-form-field-appearance-outline .mat-form-field-prefix,.mat-form-field-appearance-outline .mat-form-field-suffix{top:.25em}.mat-form-field-appearance-outline .mat-form-field-outline{display:flex;position:absolute;top:.25em;left:0;right:0;bottom:0;pointer-events:none}.mat-form-field-appearance-outline .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-end{border:1px solid currentColor;min-width:5px}.mat-form-field-appearance-outline .mat-form-field-outline-start{border-radius:5px 0 0 5px;border-right-style:none}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-start{border-right-style:solid;border-left-style:none;border-radius:0 5px 5px 0}.mat-form-field-appearance-outline .mat-form-field-outline-end{border-radius:0 5px 5px 0;border-left-style:none;flex-grow:1}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-end{border-left-style:solid;border-right-style:none;border-radius:5px 0 0 5px}.mat-form-field-appearance-outline .mat-form-field-outline-gap{border-radius:.000001px;border:1px solid currentColor;border-left-style:none;border-right-style:none}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-outline-gap{border-top-color:rgba(0,0,0,0)}.mat-form-field-appearance-outline .mat-form-field-outline-thick{opacity:0}.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-end,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-gap{border-width:2px}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline{opacity:0;transition:opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline-thick{opacity:1}.cdk-high-contrast-active .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick{border:3px dashed}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline{opacity:0;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline .mat-form-field-subscript-wrapper{padding:0 1em}.cdk-high-contrast-active .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{color:GrayText}.mat-form-field-appearance-outline._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-start,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-end,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-gap{transition:none}\", \".mat-form-field-appearance-standard .mat-form-field-flex{padding-top:.75em}.mat-form-field-appearance-standard .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-standard .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:rgba(0,0,0,0)}.cdk-high-contrast-active .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}.mat-form-field-appearance-standard:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-standard._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}\"], dependencies: [{ kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i3.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"directive\", type: i4.CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: [\"cdkObserveContentDisabled\", \"debounce\"], outputs: [\"cdkObserveContent\"], exportAs: [\"cdkObserveContent\"] }], animations: [matFormFieldAnimations.transitionMessages], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFormField, decorators: [{\n type: Component,\n args: [{ selector: 'mat-form-field', exportAs: 'matFormField', animations: [matFormFieldAnimations.transitionMessages], host: {\n 'class': 'mat-form-field',\n '[class.mat-form-field-appearance-standard]': 'appearance == \"standard\"',\n '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n '[class.mat-form-field-appearance-legacy]': 'appearance == \"legacy\"',\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-can-float]': '_canLabelFloat()',\n '[class.mat-form-field-should-float]': '_shouldLabelFloat()',\n '[class.mat-form-field-has-label]': '_hasFloatingLabel()',\n '[class.mat-form-field-hide-placeholder]': '_hideControlPlaceholder()',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-form-field-autofilled]': '_control.autofilled',\n '[class.mat-focused]': '_control.focused',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n '[class._mat-animation-noopable]': '!_animationsEnabled',\n }, inputs: ['color'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MAT_FORM_FIELD, useExisting: MatFormField }], template: \"
    \\n
    \\n\\n \\n \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n\\n \\n \\n
    \\n\\n
    \\n \\n\\n \\n \\n \\n \\n \\n
    \\n\\n
    \\n \\n
    \\n
    \\n\\n \\n
    \\n \\n
    \\n\\n
    \\n
    \\n \\n
    \\n\\n
    \\n \\n
    {{hintLabel}}
    \\n \\n
    \\n \\n
    \\n
    \\n\\n\", styles: [\".mat-form-field{display:inline-block;position:relative;text-align:left}[dir=rtl] .mat-form-field{text-align:right}.mat-form-field-wrapper{position:relative}.mat-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-form-field-prefix,.mat-form-field-suffix{white-space:nowrap;flex:none;position:relative}.mat-form-field-infix{display:block;position:relative;flex:auto;min-width:0;width:180px}.cdk-high-contrast-active .mat-form-field-infix{border-image:linear-gradient(transparent, transparent)}.mat-form-field-label-wrapper{position:absolute;left:0;box-sizing:content-box;width:100%;height:100%;overflow:hidden;pointer-events:none}[dir=rtl] .mat-form-field-label-wrapper{left:auto;right:0}.mat-form-field-label{position:absolute;left:0;font:inherit;pointer-events:none;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;transform-origin:0 0;transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1),color 400ms cubic-bezier(0.25, 0.8, 0.25, 1),width 400ms cubic-bezier(0.25, 0.8, 0.25, 1);display:none}[dir=rtl] .mat-form-field-label{transform-origin:100% 0;left:auto;right:0}.cdk-high-contrast-active .mat-form-field-disabled .mat-form-field-label{color:GrayText}.mat-form-field-empty.mat-form-field-label,.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label{display:block}.mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-form-field-autofill-control:-webkit-autofill+.mat-form-field-label-wrapper .mat-form-field-label{display:block;transition:none}.mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:none}.mat-form-field-can-float .mat-input-server:focus+.mat-form-field-label-wrapper .mat-form-field-label,.mat-form-field-can-float .mat-input-server[placeholder]:not(:placeholder-shown)+.mat-form-field-label-wrapper .mat-form-field-label{display:block}.mat-form-field-label:not(.mat-form-field-empty){transition:none}.mat-form-field-underline{position:absolute;width:100%;pointer-events:none;transform:scale3d(1, 1.0001, 1)}.mat-form-field-ripple{position:absolute;left:0;width:100%;transform-origin:50%;transform:scaleX(0.5);opacity:0;transition:background-color 300ms cubic-bezier(0.55, 0, 0.55, 0.2)}.mat-form-field.mat-focused .mat-form-field-ripple,.mat-form-field.mat-form-field-invalid .mat-form-field-ripple{opacity:1;transform:none;transition:transform 300ms cubic-bezier(0.25, 0.8, 0.25, 1),opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1),background-color 300ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-subscript-wrapper{position:absolute;box-sizing:border-box;width:100%;overflow:hidden}.mat-form-field-subscript-wrapper .mat-icon,.mat-form-field-label-wrapper .mat-icon{width:1em;height:1em;font-size:inherit;vertical-align:baseline}.mat-form-field-hint-wrapper{display:flex}.mat-form-field-hint-spacer{flex:1 0 1em}.mat-error{display:block}.mat-form-field-control-wrapper{position:relative}.mat-form-field-hint-end{order:1}.mat-form-field._mat-animation-noopable .mat-form-field-label,.mat-form-field._mat-animation-noopable .mat-form-field-ripple{transition:none}\", \".mat-form-field-appearance-fill .mat-form-field-flex{border-radius:4px 4px 0 0;padding:.75em .75em 0 .75em}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-flex{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-form-field-flex{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-form-field-flex{outline:dashed 3px}.mat-form-field-appearance-fill .mat-form-field-underline::before{content:\\\"\\\";display:block;position:absolute;bottom:0;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-form-field-ripple{height:0}.mat-form-field-appearance-fill:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-fill._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}.mat-form-field-appearance-fill .mat-form-field-subscript-wrapper{padding:0 1em}\", \".mat-input-element{font:inherit;background:rgba(0,0,0,0);color:currentColor;border:none;outline:none;padding:0;margin:0;width:100%;max-width:100%;vertical-align:bottom;text-align:inherit;box-sizing:content-box}.mat-input-element:-moz-ui-invalid{box-shadow:none}.mat-input-element,.mat-input-element::-webkit-search-cancel-button,.mat-input-element::-webkit-search-decoration,.mat-input-element::-webkit-search-results-button,.mat-input-element::-webkit-search-results-decoration{-webkit-appearance:none}.mat-input-element::-webkit-contacts-auto-fill-button,.mat-input-element::-webkit-caps-lock-indicator,.mat-input-element:not([type=password])::-webkit-credentials-auto-fill-button{visibility:hidden}.mat-input-element[type=date],.mat-input-element[type=datetime],.mat-input-element[type=datetime-local],.mat-input-element[type=month],.mat-input-element[type=week],.mat-input-element[type=time]{line-height:1}.mat-input-element[type=date]::after,.mat-input-element[type=datetime]::after,.mat-input-element[type=datetime-local]::after,.mat-input-element[type=month]::after,.mat-input-element[type=week]::after,.mat-input-element[type=time]::after{content:\\\" \\\";white-space:pre;width:1px}.mat-input-element::-webkit-inner-spin-button,.mat-input-element::-webkit-calendar-picker-indicator,.mat-input-element::-webkit-clear-button{font-size:.75em}.mat-input-element::placeholder{-webkit-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-moz-placeholder{-webkit-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element::-webkit-input-placeholder{-webkit-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-input-element:-ms-input-placeholder{-webkit-user-select:none;user-select:none;transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-hide-placeholder .mat-input-element::placeholder{color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::-moz-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element::-webkit-input-placeholder{opacity:0}.mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}.cdk-high-contrast-active .mat-form-field-hide-placeholder .mat-input-element:-ms-input-placeholder{opacity:0}._mat-animation-noopable .mat-input-element::placeholder{transition:none}._mat-animation-noopable .mat-input-element::-moz-placeholder{transition:none}._mat-animation-noopable .mat-input-element::-webkit-input-placeholder{transition:none}._mat-animation-noopable .mat-input-element:-ms-input-placeholder{transition:none}textarea.mat-input-element{resize:vertical;overflow:auto}textarea.mat-input-element.cdk-textarea-autosize{resize:none}textarea.mat-input-element{padding:2px 0;margin:-2px 0}select.mat-input-element{-moz-appearance:none;-webkit-appearance:none;position:relative;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box;padding-top:1em;top:-1em;margin-bottom:-1em}select.mat-input-element::-moz-focus-inner{border:0}select.mat-input-element:not(:disabled){cursor:pointer}.mat-form-field-type-mat-native-select .mat-form-field-infix::after{content:\\\"\\\";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;top:50%;right:0;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-form-field-type-mat-native-select .mat-form-field-infix::after{right:auto;left:0}.mat-form-field-type-mat-native-select .mat-input-element{padding-right:15px}[dir=rtl] .mat-form-field-type-mat-native-select .mat-input-element{padding-right:0;padding-left:15px}.mat-form-field-type-mat-native-select .mat-form-field-label-wrapper{max-width:calc(100% - 10px)}.mat-form-field-type-mat-native-select.mat-form-field-appearance-outline .mat-form-field-infix::after{margin-top:-5px}.mat-form-field-type-mat-native-select.mat-form-field-appearance-fill .mat-form-field-infix::after{margin-top:-10px}\", \".mat-form-field-appearance-legacy .mat-form-field-label{transform:perspective(100px)}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon{width:1em}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button{font:inherit;vertical-align:baseline}.mat-form-field-appearance-legacy .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mat-icon-button .mat-icon{font-size:inherit}.mat-form-field-appearance-legacy .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-legacy .mat-form-field-ripple{top:0;height:2px;overflow:hidden}.cdk-high-contrast-active .mat-form-field-appearance-legacy .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:rgba(0,0,0,0)}.cdk-high-contrast-active .mat-form-field-appearance-legacy.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px;border-top-color:GrayText}.mat-form-field-appearance-legacy.mat-form-field-invalid:not(.mat-focused) .mat-form-field-ripple{height:1px}\", \".mat-form-field-appearance-outline .mat-form-field-wrapper{margin:.25em 0}.mat-form-field-appearance-outline .mat-form-field-flex{padding:0 .75em 0 .75em;margin-top:-0.25em;position:relative}.mat-form-field-appearance-outline .mat-form-field-prefix,.mat-form-field-appearance-outline .mat-form-field-suffix{top:.25em}.mat-form-field-appearance-outline .mat-form-field-outline{display:flex;position:absolute;top:.25em;left:0;right:0;bottom:0;pointer-events:none}.mat-form-field-appearance-outline .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-end{border:1px solid currentColor;min-width:5px}.mat-form-field-appearance-outline .mat-form-field-outline-start{border-radius:5px 0 0 5px;border-right-style:none}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-start{border-right-style:solid;border-left-style:none;border-radius:0 5px 5px 0}.mat-form-field-appearance-outline .mat-form-field-outline-end{border-radius:0 5px 5px 0;border-left-style:none;flex-grow:1}[dir=rtl] .mat-form-field-appearance-outline .mat-form-field-outline-end{border-left-style:solid;border-right-style:none;border-radius:5px 0 0 5px}.mat-form-field-appearance-outline .mat-form-field-outline-gap{border-radius:.000001px;border:1px solid currentColor;border-left-style:none;border-right-style:none}.mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-outline-gap{border-top-color:rgba(0,0,0,0)}.mat-form-field-appearance-outline .mat-form-field-outline-thick{opacity:0}.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-start,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-end,.mat-form-field-appearance-outline .mat-form-field-outline-thick .mat-form-field-outline-gap{border-width:2px}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline{opacity:0;transition:opacity 100ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick,.mat-form-field-appearance-outline.mat-form-field-invalid .mat-form-field-outline-thick{opacity:1}.cdk-high-contrast-active .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick{border:3px dashed}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline{opacity:0;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-outline:not(.mat-form-field-disabled) .mat-form-field-flex:hover .mat-form-field-outline-thick{opacity:1}.mat-form-field-appearance-outline .mat-form-field-subscript-wrapper{padding:0 1em}.cdk-high-contrast-active .mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{color:GrayText}.mat-form-field-appearance-outline._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-start,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-end,.mat-form-field-appearance-outline._mat-animation-noopable .mat-form-field-outline-gap{transition:none}\", \".mat-form-field-appearance-standard .mat-form-field-flex{padding-top:.75em}.mat-form-field-appearance-standard .mat-form-field-underline{height:1px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-underline{height:0;border-top:solid 1px}.mat-form-field-appearance-standard .mat-form-field-ripple{bottom:0;height:2px}.cdk-high-contrast-active .mat-form-field-appearance-standard .mat-form-field-ripple{height:0;border-top:solid 2px}.mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{background-position:0;background-color:rgba(0,0,0,0)}.cdk-high-contrast-active .mat-form-field-appearance-standard.mat-form-field-disabled .mat-form-field-underline{border-top-style:dotted;border-top-width:2px}.mat-form-field-appearance-standard:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{opacity:1;transform:none;transition:opacity 600ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-form-field-appearance-standard._mat-animation-noopable:not(.mat-form-field-disabled) .mat-form-field-flex:hover~.mat-form-field-underline .mat-form-field-ripple{transition:none}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD_DEFAULT_OPTIONS]\n }] }, { type: i2.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { appearance: [{\n type: Input\n }], hideRequiredMarker: [{\n type: Input\n }], hintLabel: [{\n type: Input\n }], floatLabel: [{\n type: Input\n }], _connectionContainerRef: [{\n type: ViewChild,\n args: ['connectionContainer', { static: true }]\n }], _inputContainerRef: [{\n type: ViewChild,\n args: ['inputContainer']\n }], _label: [{\n type: ViewChild,\n args: ['label']\n }], _controlNonStatic: [{\n type: ContentChild,\n args: [MatFormFieldControl]\n }], _controlStatic: [{\n type: ContentChild,\n args: [MatFormFieldControl, { static: true }]\n }], _labelChildNonStatic: [{\n type: ContentChild,\n args: [MatLabel]\n }], _labelChildStatic: [{\n type: ContentChild,\n args: [MatLabel, { static: true }]\n }], _placeholderChild: [{\n type: ContentChild,\n args: [MatPlaceholder]\n }], _errorChildren: [{\n type: ContentChildren,\n args: [MAT_ERROR, { descendants: true }]\n }], _hintChildren: [{\n type: ContentChildren,\n args: [_MAT_HINT, { descendants: true }]\n }], _prefixChildren: [{\n type: ContentChildren,\n args: [MAT_PREFIX, { descendants: true }]\n }], _suffixChildren: [{\n type: ContentChildren,\n args: [MAT_SUFFIX, { descendants: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatFormFieldModule {\n}\nMatFormFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatFormFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFormFieldModule, declarations: [MatError, MatFormField, MatHint, MatLabel, MatPlaceholder, MatPrefix, MatSuffix], imports: [CommonModule, MatCommonModule, ObserversModule], exports: [MatCommonModule,\n MatError,\n MatFormField,\n MatHint,\n MatLabel,\n MatPlaceholder,\n MatPrefix,\n MatSuffix] });\nMatFormFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFormFieldModule, imports: [CommonModule, MatCommonModule, ObserversModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFormFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [MatError, MatFormField, MatHint, MatLabel, MatPlaceholder, MatPrefix, MatSuffix],\n imports: [CommonModule, MatCommonModule, ObserversModule],\n exports: [\n MatCommonModule,\n MatError,\n MatFormField,\n MatHint,\n MatLabel,\n MatPlaceholder,\n MatPrefix,\n MatSuffix,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_ERROR, MAT_FORM_FIELD, MAT_FORM_FIELD_DEFAULT_OPTIONS, MAT_PREFIX, MAT_SUFFIX, MatError, MatFormField, MatFormFieldControl, MatFormFieldModule, MatHint, MatLabel, MatPlaceholder, MatPrefix, MatSuffix, _MAT_HINT, getMatFormFieldDuplicatedHintError, getMatFormFieldMissingControlError, getMatFormFieldPlaceholderConflictError, matFormFieldAnimations };\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\nimport * as i4 from '@angular/cdk/text-field';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Optional, Self, Inject, Input, NgModule } from '@angular/core';\nimport * as i2 from '@angular/forms';\nimport { Validators } from '@angular/forms';\nimport * as i3 from '@angular/material/core';\nimport { mixinErrorState, MatCommonModule, ErrorStateMatcher } from '@angular/material/core';\nimport * as i5 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport { Subject } from 'rxjs';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nfunction getMatInputUnsupportedTypeError(type) {\n return Error(`Input type \"${type}\" isn't supported by matInput.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This token is used to inject the object whose value should be set into `MatInput`. If none is\n * provided, the native `HTMLInputElement` is used. Directives like `MatDatepickerInput` can provide\n * themselves for this token, in order to make `MatInput` delegate the getting and setting of the\n * value to them.\n */\nconst MAT_INPUT_VALUE_ACCESSOR = new InjectionToken('MAT_INPUT_VALUE_ACCESSOR');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Invalid input type. Using one of these will throw an MatInputUnsupportedTypeError.\nconst MAT_INPUT_INVALID_TYPES = [\n 'button',\n 'checkbox',\n 'file',\n 'hidden',\n 'image',\n 'radio',\n 'range',\n 'reset',\n 'submit',\n];\nlet nextUniqueId = 0;\n// Boilerplate for applying mixins to MatInput.\n/** @docs-private */\nconst _MatInputBase = mixinErrorState(class {\n constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, \n /**\n * Form control bound to the component.\n * Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n ngControl) {\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n /**\n * Emits whenever the component state changes and should cause the parent\n * form field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n this.stateChanges = new Subject();\n }\n});\n/** Directive that allows a native input to work inside a `MatFormField`. */\nclass MatInput extends _MatInputBase {\n constructor(_elementRef, _platform, ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher, inputValueAccessor, _autofillMonitor, ngZone, \n // TODO: Remove this once the legacy appearance has been removed. We only need\n // to inject the form field for determining whether the placeholder has been promoted.\n _formField) {\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._autofillMonitor = _autofillMonitor;\n this._formField = _formField;\n this._uid = `mat-input-${nextUniqueId++}`;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.focused = false;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.stateChanges = new Subject();\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.controlType = 'mat-input';\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.autofilled = false;\n this._disabled = false;\n this._type = 'text';\n this._readonly = false;\n this._neverEmptyInputTypes = [\n 'date',\n 'datetime',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n ].filter(t => getSupportedInputTypes().has(t));\n this._iOSKeyupListener = (event) => {\n const el = event.target;\n // Note: We specifically check for 0, rather than `!el.selectionStart`, because the two\n // indicate different things. If the value is 0, it means that the caret is at the start\n // of the input, whereas a value of `null` means that the input doesn't support\n // manipulating the selection range. Inputs that don't support setting the selection range\n // will throw an error so we want to avoid calling `setSelectionRange` on them. See:\n // https://html.spec.whatwg.org/multipage/input.html#do-not-apply\n if (!el.value && el.selectionStart === 0 && el.selectionEnd === 0) {\n // Note: Just setting `0, 0` doesn't fix the issue. Setting\n // `1, 1` fixes it for the first time that you type text and\n // then hold delete. Toggling to `1, 1` and then back to\n // `0, 0` seems to completely fix it.\n el.setSelectionRange(1, 1);\n el.setSelectionRange(0, 0);\n }\n };\n const element = this._elementRef.nativeElement;\n const nodeName = element.nodeName.toLowerCase();\n // If no input value accessor was explicitly specified, use the element as the input value\n // accessor.\n this._inputValueAccessor = inputValueAccessor || element;\n this._previousNativeValue = this.value;\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n // On some versions of iOS the caret gets stuck in the wrong place when holding down the delete\n // key. In order to get around this we need to \"jiggle\" the caret loose. Since this bug only\n // exists on iOS, we only bother to install the listener on iOS.\n if (_platform.IOS) {\n ngZone.runOutsideAngular(() => {\n _elementRef.nativeElement.addEventListener('keyup', this._iOSKeyupListener);\n });\n }\n this._isServer = !this._platform.isBrowser;\n this._isNativeSelect = nodeName === 'select';\n this._isTextarea = nodeName === 'textarea';\n this._isInFormField = !!_formField;\n if (this._isNativeSelect) {\n this.controlType = element.multiple\n ? 'mat-native-select-multiple'\n : 'mat-native-select';\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get disabled() {\n if (this.ngControl && this.ngControl.disabled !== null) {\n return this.ngControl.disabled;\n }\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n // Browsers may not fire the blur event if the input is disabled too quickly.\n // Reset from here to ensure that the element doesn't become stuck.\n if (this.focused) {\n this.focused = false;\n this.stateChanges.next();\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id() {\n return this._id;\n }\n set id(value) {\n this._id = value || this._uid;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get required() {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n }\n /** Input type of the element. */\n get type() {\n return this._type;\n }\n set type(value) {\n this._type = value || 'text';\n this._validateType();\n // When using Angular inputs, developers are no longer able to set the properties on the native\n // input element. To ensure that bindings for `type` work, we need to sync the setter\n // with the native property. Textarea elements don't support the type property or attribute.\n if (!this._isTextarea && getSupportedInputTypes().has(this._type)) {\n this._elementRef.nativeElement.type = this._type;\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get value() {\n return this._inputValueAccessor.value;\n }\n set value(value) {\n if (value !== this.value) {\n this._inputValueAccessor.value = value;\n this.stateChanges.next();\n }\n }\n /** Whether the element is readonly. */\n get readonly() {\n return this._readonly;\n }\n set readonly(value) {\n this._readonly = coerceBooleanProperty(value);\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(event => {\n this.autofilled = event.isAutofilled;\n this.stateChanges.next();\n });\n }\n }\n ngOnChanges() {\n this.stateChanges.next();\n }\n ngOnDestroy() {\n this.stateChanges.complete();\n if (this._platform.isBrowser) {\n this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n if (this._platform.IOS) {\n this._elementRef.nativeElement.removeEventListener('keyup', this._iOSKeyupListener);\n }\n }\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n // We need to dirty-check the native element's value, because there are some cases where\n // we won't be notified when it changes (e.g. the consumer isn't using forms or they're\n // updating the value using `emitEvent: false`).\n this._dirtyCheckNativeValue();\n // We need to dirty-check and set the placeholder attribute ourselves, because whether it's\n // present or not depends on a query which is prone to \"changed after checked\" errors.\n this._dirtyCheckPlaceholder();\n }\n /** Focuses the input. */\n focus(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Callback for the cases where the focused state of the input changes. */\n _focusChanged(isFocused) {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.stateChanges.next();\n }\n }\n _onInput() {\n // This is a noop function and is used to let Angular know whenever the value changes.\n // Angular will run a new change detection each time the `input` event has been dispatched.\n // It's necessary that Angular recognizes the value change, because when floatingLabel\n // is set to false and Angular forms aren't used, the placeholder won't recognize the\n // value changes and will not disappear.\n // Listening to the input event wouldn't be necessary when the input is using the\n // FormsModule or ReactiveFormsModule, because Angular forms also listens to input events.\n }\n /** Does some manual dirty checking on the native input `placeholder` attribute. */\n _dirtyCheckPlaceholder() {\n // If we're hiding the native placeholder, it should also be cleared from the DOM, otherwise\n // screen readers will read it out twice: once from the label and once from the attribute.\n // TODO: can be removed once we get rid of the `legacy` style for the form field, because it's\n // the only one that supports promoting the placeholder to a label.\n const formField = this._formField;\n const placeholder = formField && formField.appearance === 'legacy' && !formField._hasLabel?.()\n ? null\n : this.placeholder;\n if (placeholder !== this._previousPlaceholder) {\n const element = this._elementRef.nativeElement;\n this._previousPlaceholder = placeholder;\n placeholder\n ? element.setAttribute('placeholder', placeholder)\n : element.removeAttribute('placeholder');\n }\n }\n /** Does some manual dirty checking on the native input `value` property. */\n _dirtyCheckNativeValue() {\n const newValue = this._elementRef.nativeElement.value;\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this.stateChanges.next();\n }\n }\n /** Make sure the input is a supported type. */\n _validateType() {\n if (MAT_INPUT_INVALID_TYPES.indexOf(this._type) > -1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatInputUnsupportedTypeError(this._type);\n }\n }\n /** Checks whether the input type is one of the types that are never empty. */\n _isNeverEmpty() {\n return this._neverEmptyInputTypes.indexOf(this._type) > -1;\n }\n /** Checks whether the input is invalid based on the native validation. */\n _isBadInput() {\n // The `validity` property won't be present on platform-server.\n let validity = this._elementRef.nativeElement.validity;\n return validity && validity.badInput;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty() {\n return (!this._isNeverEmpty() &&\n !this._elementRef.nativeElement.value &&\n !this._isBadInput() &&\n !this.autofilled);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n if (this._isNativeSelect) {\n // For a single-selection ``, the label *always* floats to avoid\n // overlapping the label with the options.\n const selectElement = this._elementRef.nativeElement;\n const firstOption = selectElement.options[0];\n // On most browsers the `selectedIndex` will always be 0, however on IE and Edge it'll be\n // -1 if the `value` is set to something, that isn't in the list of options, at a later point.\n return (this.focused ||\n selectElement.multiple ||\n !this.empty ||\n !!(selectElement.selectedIndex > -1 && firstOption && firstOption.label));\n }\n else {\n return this.focused || !this.empty;\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n }\n else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n // Do not re-focus the input element if the element is already focused. Otherwise it can happen\n // that someone clicks on a time input and the cursor resets to the \"hours\" field while the\n // \"minutes\" field was actually clicked. See: https://github.com/angular/components/issues/12849\n if (!this.focused) {\n this.focus();\n }\n }\n /** Whether the form control is a native select that is displayed inline. */\n _isInlineSelect() {\n const element = this._elementRef.nativeElement;\n return this._isNativeSelect && (element.multiple || element.size > 1);\n }\n}\nMatInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatInput, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i2.NgControl, optional: true, self: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: MAT_INPUT_VALUE_ACCESSOR, optional: true, self: true }, { token: i4.AutofillMonitor }, { token: i0.NgZone }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl],\\n input[matNativeControl], textarea[matNativeControl]\", inputs: { disabled: \"disabled\", id: \"id\", placeholder: \"placeholder\", name: \"name\", required: \"required\", type: \"type\", errorStateMatcher: \"errorStateMatcher\", userAriaDescribedBy: [\"aria-describedby\", \"userAriaDescribedBy\"], value: \"value\", readonly: \"readonly\" }, host: { listeners: { \"focus\": \"_focusChanged(true)\", \"blur\": \"_focusChanged(false)\", \"input\": \"_onInput()\" }, properties: { \"class.mat-input-server\": \"_isServer\", \"attr.id\": \"id\", \"attr.data-placeholder\": \"placeholder\", \"disabled\": \"disabled\", \"required\": \"required\", \"attr.name\": \"name || null\", \"attr.readonly\": \"readonly && !_isNativeSelect || null\", \"class.mat-native-select-inline\": \"_isInlineSelect()\", \"attr.aria-invalid\": \"(empty && required) ? null : errorState\", \"attr.aria-required\": \"required\" }, classAttribute: \"mat-input-element mat-form-field-autofill-control\" }, providers: [{ provide: MatFormFieldControl, useExisting: MatInput }], exportAs: [\"matInput\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatInput, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matInput], textarea[matInput], select[matNativeControl],\n input[matNativeControl], textarea[matNativeControl]`,\n exportAs: 'matInput',\n host: {\n /**\n * @breaking-change 8.0.0 remove .mat-form-field-autofill-control in favor of AutofillMonitor.\n */\n 'class': 'mat-input-element mat-form-field-autofill-control',\n '[class.mat-input-server]': '_isServer',\n // Native input properties that are overwritten by Angular inputs need to be synced with\n // the native input element. Otherwise property bindings for those don't work.\n '[attr.id]': 'id',\n // At the time of writing, we have a lot of customer tests that look up the input based on its\n // placeholder. Since we sometimes omit the placeholder attribute from the DOM to prevent screen\n // readers from reading it twice, we have to keep it somewhere in the DOM for the lookup.\n '[attr.data-placeholder]': 'placeholder',\n '[disabled]': 'disabled',\n '[required]': 'required',\n '[attr.name]': 'name || null',\n '[attr.readonly]': 'readonly && !_isNativeSelect || null',\n '[class.mat-native-select-inline]': '_isInlineSelect()',\n // Only mark the input as invalid for assistive technology if it has a value since the\n // state usually overlaps with `aria-required` when the input is empty and can be redundant.\n '[attr.aria-invalid]': '(empty && required) ? null : errorState',\n '[attr.aria-required]': 'required',\n '(focus)': '_focusChanged(true)',\n '(blur)': '_focusChanged(false)',\n '(input)': '_onInput()',\n },\n providers: [{ provide: MatFormFieldControl, useExisting: MatInput }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i2.NgControl, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: i2.NgForm, decorators: [{\n type: Optional\n }] }, { type: i2.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i3.ErrorStateMatcher }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [MAT_INPUT_VALUE_ACCESSOR]\n }] }, { type: i4.AutofillMonitor }, { type: i0.NgZone }, { type: i5.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }]; }, propDecorators: { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], name: [{\n type: Input\n }], required: [{\n type: Input\n }], type: [{\n type: Input\n }], errorStateMatcher: [{\n type: Input\n }], userAriaDescribedBy: [{\n type: Input,\n args: ['aria-describedby']\n }], value: [{\n type: Input\n }], readonly: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatInputModule {\n}\nMatInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatInputModule, declarations: [MatInput], imports: [TextFieldModule, MatFormFieldModule, MatCommonModule], exports: [TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput] });\nMatInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatInputModule, providers: [ErrorStateMatcher], imports: [TextFieldModule, MatFormFieldModule, MatCommonModule, TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatInputModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [MatInput],\n imports: [TextFieldModule, MatFormFieldModule, MatCommonModule],\n exports: [\n TextFieldModule,\n // We re-export the `MatFormFieldModule` since `MatInput` will almost always\n // be used together with `MatFormField`.\n MatFormFieldModule,\n MatInput,\n ],\n providers: [ErrorStateMatcher],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_INPUT_VALUE_ACCESSOR, MatInput, MatInputModule, getMatInputUnsupportedTypeError };\n","import { Subscription } from '../Subscription';\nexport const animationFrameProvider = {\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel === null || cancel === void 0 ? void 0 : cancel(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AnimationFrameScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nexport class AnimationFrameAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n if (!scheduler.actions.some((action) => action.id === id)) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n }\n}\n","let nextHandle = 1;\nlet resolved;\nconst activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport const Immediate = {\n setImmediate(cb) {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n clearImmediate(handle) {\n findAndClearHandle(handle);\n },\n};\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nconst { setImmediate, clearImmediate } = Immediate;\nexport const immediateProvider = {\n setImmediate(...args) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate)(...args);\n },\n clearImmediate(handle) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport const asapScheduler = new AsapScheduler(AsapAction);\nexport const asap = asapScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AsapScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nexport class AsapAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n if (!scheduler.actions.some((action) => action.id === id)) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n }\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = asyncScheduler) {\n return audit(() => timer(duration, scheduler));\n}\n","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n let isComplete = false;\n const endDuration = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n","import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, ElementRef, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n}\nCdkFixedSizeVirtualScroll.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkFixedSizeVirtualScroll.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ],\n }]\n }], propDecorators: { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * De-registers a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0\n ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while ((element = element.parentElement));\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n}\nScrollDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollDispatcher, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* RtlScrollAxisType.NORMAL */) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* RtlScrollAxisType.INVERTED */) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == 1 /* RtlScrollAxisType.NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* RtlScrollAxisType.INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == 1 /* RtlScrollAxisType.NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n}\nCdkScrollable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkScrollable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkScrollable, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = (event) => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => (this._viewportSize = null));\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top ||\n document.body.scrollTop ||\n window.scrollY ||\n documentElement.scrollTop ||\n 0;\n const left = -documentRect.left ||\n document.body.scrollLeft ||\n window.scrollX ||\n documentElement.scrollLeft ||\n 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser\n ? { width: window.innerWidth, height: window.innerHeight }\n : { width: 0, height: 0 };\n }\n}\nViewportRuler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nViewportRuler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ViewportRuler, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ViewportRuler, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst VIRTUAL_SCROLLABLE = new InjectionToken('VIRTUAL_SCROLLABLE');\n/**\n * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.\n */\nclass CdkVirtualScrollable extends CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n /**\n * Measure the viewport size for the provided orientation.\n *\n * @param orientation The orientation to measure the size from.\n */\n measureViewportSize(orientation) {\n const viewportEl = this.elementRef.nativeElement;\n return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n}\nCdkVirtualScrollable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualScrollable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkVirtualScrollable, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualScrollable, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkVirtualScrollable {\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler, scrollable) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n this.scrollable = scrollable;\n this._platform = inject(Platform);\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n this._appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n if (!this.scrollable) {\n // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable\n this.elementRef.nativeElement.classList.add('cdk-virtual-scrollable');\n this.scrollable = this;\n }\n }\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n get appendOnly() {\n return this._appendOnly;\n }\n set appendOnly(value) {\n this._appendOnly = coerceBooleanProperty(value);\n }\n ngOnInit() {\n // Scrolling depends on the element dimensions which we can't get during SSR.\n if (!this._platform.isBrowser) {\n return;\n }\n if (this.scrollable === this) {\n super.ngOnInit();\n }\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.scrollable\n .elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next((this._renderedRange = range));\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // In appendOnly, we always start from the top\n offset = this.appendOnly && to === 'to-start' ? 0 : offset;\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollable.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the scrollable (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n // This is to break the call cycle\n let measureScrollOffset;\n if (this.scrollable == this) {\n measureScrollOffset = (_from) => super.measureScrollOffset(_from);\n }\n else {\n measureScrollOffset = (_from) => this.scrollable.measureScrollOffset(_from);\n }\n return Math.max(0, measureScrollOffset(from ?? (this.orientation === 'horizontal' ? 'start' : 'top')) -\n this.measureViewportOffset());\n }\n /**\n * Measures the offset of the viewport from the scrolling container\n * @param from The edge to measure from.\n */\n measureViewportOffset(from) {\n let fromRect;\n const LEFT = 'left';\n const RIGHT = 'right';\n const isRtl = this.dir?.value == 'rtl';\n if (from == 'start') {\n fromRect = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n fromRect = isRtl ? LEFT : RIGHT;\n }\n else if (from) {\n fromRect = from;\n }\n else {\n fromRect = this.orientation === 'horizontal' ? 'left' : 'top';\n }\n const scrollerClientRect = this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);\n const viewportClientRect = this.elementRef.nativeElement.getBoundingClientRect()[fromRect];\n return viewportClientRect - scrollerClientRect;\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n this._viewportSize = this.scrollable.measureViewportSize(this.orientation);\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n}\nCdkVirtualScrollViewport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: VIRTUAL_SCROLL_STRATEGY, optional: true }, { token: i2.Directionality, optional: true }, { token: ScrollDispatcher }, { token: ViewportRuler }, { token: VIRTUAL_SCROLLABLE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkVirtualScrollViewport.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n {\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [CdkVirtualScrollable, CdkVirtualScrollViewport],\n },\n ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"\\n
    \\n \\n
    \\n\\n
    \\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [CdkVirtualScrollable, CdkVirtualScrollViewport],\n },\n ], template: \"\\n
    \\n \\n
    \\n\\n
    \\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: ScrollDispatcher }, { type: ViewportRuler }, { type: CdkVirtualScrollable, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLLABLE]\n }] }]; }, propDecorators: { orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input\n }], scrolledIndexChange: [{\n type: Output\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n constructor(\n /** The view container to add items to. */\n _viewContainerRef, \n /** The template to use when stamping out new items. */\n _template, \n /** The set of available differs. */\n _differs, \n /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, \n /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n if (this.viewChange.observers.length) {\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n }\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn\n ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n : undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode\n ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false,\n },\n index,\n };\n }\n}\nCdkVirtualForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2$1._RecycleViewRepeaterStrategy, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: CdkVirtualScrollViewport, decorators: [{\n type: SkipSelf\n }] }, { type: i0.NgZone }]; }, propDecorators: { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides a virtual scrollable for the element it is attached to.\n */\nclass CdkVirtualScrollableElement extends CdkVirtualScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return (this.getElementRef().nativeElement.getBoundingClientRect()[from] -\n this.measureScrollOffset(from));\n }\n}\nCdkVirtualScrollableElement.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualScrollableElement, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualScrollableElement.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkVirtualScrollableElement, selector: \"[cdkVirtualScrollingElement]\", host: { classAttribute: \"cdk-virtual-scrollable\" }, providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualScrollableElement, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualScrollingElement]',\n providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement }],\n host: {\n 'class': 'cdk-virtual-scrollable',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides as virtual scrollable for the global / window scrollbar.\n */\nclass CdkVirtualScrollableWindow extends CdkVirtualScrollable {\n constructor(scrollDispatcher, ngZone, dir) {\n super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir);\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n}\nCdkVirtualScrollableWindow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualScrollableWindow, deps: [{ token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualScrollableWindow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkVirtualScrollableWindow, selector: \"cdk-virtual-scroll-viewport[scrollWindow]\", providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkVirtualScrollableWindow, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[scrollWindow]',\n providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow }],\n }]\n }], ctorParameters: function () { return [{ type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkScrollableModule {\n}\nCdkScrollableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkScrollableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkScrollableModule, declarations: [CdkScrollable], exports: [CdkScrollable] });\nCdkScrollableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkScrollableModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n declarations: [CdkScrollable],\n }]\n }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n}\nScrollingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nScrollingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollingModule, declarations: [CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement], imports: [BidiModule, CdkScrollableModule], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement] });\nScrollingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollingModule, imports: [BidiModule, CdkScrollableModule, BidiModule, CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, CdkScrollableModule],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement,\n ],\n declarations: [\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollable, CdkVirtualScrollableElement, CdkVirtualScrollableWindow, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLLABLE, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n","import * as i0 from '@angular/core';\nimport { ElementRef, Injector, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor(\n /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef, \n /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef, \n /** Contextual data to be passed in to the embedded view. */\n context, \n /** The injector to use for the embedded view. */\n injector) {\n super();\n this.templateRef = templateRef;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n this.injector = injector;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n /**\n * @param outletElement Element into which the content is projected.\n * @param _componentFactoryResolver Used to resolve the component factory.\n * Only required when attaching component portals.\n * @param _appRef Reference to the application. Only used in component portals when there\n * is no `ViewContainerRef` available.\n * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't\n * have one. Only used for component portals.\n * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually\n * become a required parameter.\n */\n constructor(\n /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = (portal.componentFactoryResolver || this._componentFactoryResolver);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {\n throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');\n }\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {\n throw Error('Cannot attach component portal to outlet without an ApplicationRef.');\n }\n componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n // Verify that the ApplicationRef has registered views before trying to detach a host view.\n // This check also protects the `detachView` from being called on a destroyed ApplicationRef.\n if (this._appRef.viewCount > 0) {\n this._appRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector,\n });\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\nCdkPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkPortal, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n}\nTemplatePortalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTemplatePortalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: TemplatePortalDirective, selector: \"[cdk-portal], [portal]\", providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ],\n }]\n }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef, \n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
    `\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal || null;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector,\n });\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n ? nativeElement\n : nativeElement.parentNode);\n }\n}\nCdkPortalOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortalOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet'],\n }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { attached: [{\n type: Output\n }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n}\nPortalHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPortalHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: PortalHostDirective, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: PortalHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ],\n }]\n }] });\nclass PortalModule {\n}\nPortalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPortalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: PortalModule, declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] });\nPortalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: PortalModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: PortalModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n","import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, Optional, ElementRef, ApplicationRef, ANIMATION_MODULE_TYPE, InjectionToken, Directive, EventEmitter, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = { top: '', left: '' };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() { }\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0);\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n }\n else {\n this._overlayRef.updatePosition();\n }\n });\n }\n else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n}\nScrollStrategyOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollStrategyOptions, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollStrategyOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the possible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, \n /** Offset along the X axis. */\n offsetX, \n /** Offset along the Y axis. */\n offsetY, \n /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor(\n /** The position used as a result of this change. */\n connectionPair, \n /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n}\nBaseOverlayDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BaseOverlayDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBaseOverlayDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._ngZone = _ngZone;\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = (event) => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n const keydownEvents = overlays[i]._keydownEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => keydownEvents.next(event));\n }\n else {\n keydownEvents.next(event);\n }\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));\n }\n else {\n this._document.body.addEventListener('keydown', this._keydownListener);\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n}\nOverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayKeyboardDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = (event) => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = (event) => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget\n ? this._pointerDownEventTarget\n : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (overlayRef.overlayElement.contains(target) ||\n overlayRef.overlayElement.contains(origin)) {\n break;\n }\n const outsidePointerEvents = overlayRef._outsidePointerEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => outsidePointerEvents.next(event));\n }\n else {\n outsidePointerEvents.next(event);\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._addEventListeners(body));\n }\n else {\n this._addEventListeners(body);\n }\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n _addEventListeners(body) {\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n }\n}\nOverlayOutsideClickDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayOutsideClickDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n this._containerElement?.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n }\n else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher, _animationsDisabled = false) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsDisabled = _animationsDisabled;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = (event) => this._backdropClick.next(event);\n this._backdropTransitionendHandler = (event) => {\n this._disposeBackdrop(event.target);\n };\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n // Insert the host into the DOM before attaching the portal, otherwise\n // the animations module will skip animations on repeat attachments.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n const attachResult = this._portalOutlet.attach(portal);\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // Update the position once the zone is stable so that the overlay will be fully rendered\n // before attempting to position it, as the position may depend on the size of the rendered\n // content.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n // The overlay could've been detached before the zone has stabilized.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n // TODO(crisbeto): the null check is here, because the portal outlet returns `any`.\n // We should be guaranteed for the result to be `ComponentRef | EmbeddedViewRef`, but\n // `instanceof EmbeddedViewRef` doesn't appear to work at the moment.\n if (typeof attachResult?.onDestroy === 'function') {\n // In most cases we control the portal and we know when it is being detached so that\n // we can finish the disposal process. The exception is if the user passes in a custom\n // `ViewContainerRef` that isn't destroyed through the overlay API. Note that we use\n // `detach` here instead of `dispose`, because we don't know if the user intends to\n // reattach the overlay at a later point. It also has the advantage of waiting for animations.\n attachResult.onDestroy(() => {\n if (this.hasAttached()) {\n // We have to delay the `detach` call, because detaching immediately prevents\n // other destroy hooks from running. This is likely a framework bug similar to\n // https://github.com/angular/angular/issues/46119\n this._ngZone.runOutsideAngular(() => Promise.resolve().then(() => this.detach()));\n }\n });\n }\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenStable();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n this._host?.remove();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = { ...this._config, ...sizeConfig };\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = { ...this._config, direction: dir };\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._animationsDisabled) {\n this._backdropElement.classList.add('cdk-overlay-backdrop-noop-animation');\n }\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (!this._animationsDisabled && typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n }\n else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n if (this._animationsDisabled) {\n this._disposeBackdrop(backdropToDetach);\n return;\n }\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {\n this._disposeBackdrop(backdropToDetach);\n }, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenStable() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._ngZone.onStable\n .pipe(takeUntil(merge(this._attachments, this._detachments)))\n .subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.removeEventListener('click', this._backdropClickHandler);\n backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n if (this._backdropTimeout) {\n clearTimeout(this._backdropTimeout);\n this._backdropTimeout = undefined;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = { width: 0, height: 0 };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef &&\n overlayRef !== this._overlayRef &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satisfies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin, the overlay and the container to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n const containerRect = this._containerRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, containerRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n const lastPosition = this._lastPosition;\n if (lastPosition) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n }\n else {\n this.apply();\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, containerRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n }\n else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n // When zooming in Safari the container rectangle contains negative values for the position\n // and we need to re-add them to the calculated coordinates.\n if (containerRect.left < 0) {\n x -= containerRect.left;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n // Normally the containerRect's top value would be zero, however when the overlay is attached to an input\n // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n // Additionally, when zooming in Safari this fixes the vertical position.\n if (containerRect.top < 0) {\n y -= containerRect.top;\n }\n return { x, y };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY,\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let { x, y } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width,\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlay at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occurring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param rawOverlayRect Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y,\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n }\n else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n }\n else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = { x: pushX, y: pushY };\n return {\n x: start.x + pushX,\n y: start.y + pushY,\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollableViewProperties = this._getScrollVisibility();\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n this._positionChanges.next(changeEvent);\n }\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n }\n else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n }\n else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n }\n else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n }\n else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin;\n width = origin.x - this._viewportMargin;\n }\n else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n }\n else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return { top: top, left: left, bottom: bottom, right: right, width, height };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stretches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n }\n else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n }\n else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n }\n else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: '',\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n }\n else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n }\n else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n }\n else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = { top: '', bottom: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n }\n else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = { left: '', right: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n }\n else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin,\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breaking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the ClientRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width,\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height),\n };\n}\nconst STANDARD_DROPDOWN_BELOW_POSITIONS = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\nconst STANDARD_DROPDOWN_ADJACENT_POSITIONS = [\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._alignItems = '';\n this._xPosition = '';\n this._xOffset = '';\n this._width = '';\n this._height = '';\n this._isDisposed = false;\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({ width: this._width });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({ height: this._height });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._xOffset = value;\n this._xPosition = 'left';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._xOffset = value;\n this._xPosition = 'right';\n return this;\n }\n /**\n * Sets the overlay to the start of the viewport, depending on the overlay direction.\n * This will be to the left in LTR layouts and to the right in RTL.\n * @param offset Offset from the edge of the screen.\n */\n start(value = '') {\n this._xOffset = value;\n this._xPosition = 'start';\n return this;\n }\n /**\n * Sets the overlay to the end of the viewport, depending on the overlay direction.\n * This will be to the right in LTR layouts and to the left in RTL.\n * @param offset Offset from the edge of the screen.\n */\n end(value = '') {\n this._xOffset = value;\n this._xPosition = 'end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ width: value });\n }\n else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ height: value });\n }\n else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._xPosition = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const { width, height, maxWidth, maxHeight } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n const xPosition = this._xPosition;\n const xOffset = this._xOffset;\n const isRtl = this._overlayRef.getConfig().direction === 'rtl';\n let marginLeft = '';\n let marginRight = '';\n let justifyContent = '';\n if (shouldBeFlushHorizontally) {\n justifyContent = 'flex-start';\n }\n else if (xPosition === 'center') {\n justifyContent = 'center';\n if (isRtl) {\n marginRight = xOffset;\n }\n else {\n marginLeft = xOffset;\n }\n }\n else if (isRtl) {\n if (xPosition === 'left' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginLeft = xOffset;\n }\n else if (xPosition === 'right' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginRight = xOffset;\n }\n }\n else if (xPosition === 'left' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginLeft = xOffset;\n }\n else if (xPosition === 'right' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginRight = xOffset;\n }\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight;\n parentStyles.justifyContent = justifyContent;\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent =\n parentStyles.alignItems =\n styles.marginTop =\n styles.marginBottom =\n styles.marginLeft =\n styles.marginRight =\n styles.position =\n '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n}\nOverlayPositionBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayPositionBuilder, deps: [{ token: i1.ViewportRuler }, { token: DOCUMENT }, { token: i1$1.Platform }, { token: OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayPositionBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: OverlayContainer }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(\n /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher, _animationsModuleType) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsModuleType = _animationsModuleType;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher, this._animationsModuleType === 'NoopAnimations');\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Overlay, deps: [{ token: ScrollStrategyOptions }, { token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: OverlayPositionBuilder }, { token: OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i5.Directionality }, { token: i6.Location }, { token: OverlayOutsideClickDispatcher }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlay.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Overlay });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i5.Directionality }, { type: i6.Location }, { type: OverlayOutsideClickDispatcher }, { type: undefined, decorators: [{\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\nCdkOverlayOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkOverlayOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkOverlayOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._hasBackdrop = false;\n this._lockPosition = false;\n this._growAfterOpen = false;\n this._flexibleDimensions = false;\n this._push = false;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether or not the overlay should attach a backdrop. */\n get hasBackdrop() {\n return this._hasBackdrop;\n }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n /** Whether or not the overlay should be locked when scrolling. */\n get lockPosition() {\n return this._lockPosition;\n }\n set lockPosition(value) {\n this._lockPosition = coerceBooleanProperty(value);\n }\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n get flexibleDimensions() {\n return this._flexibleDimensions;\n }\n set flexibleDimensions(value) {\n this._flexibleDimensions = coerceBooleanProperty(value);\n }\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n get growAfterOpen() {\n return this._growAfterOpen;\n }\n set growAfterOpen(value) {\n this._growAfterOpen = coerceBooleanProperty(value);\n }\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n get push() {\n return this._push;\n }\n set push(value) {\n this._push = coerceBooleanProperty(value);\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight,\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe((event) => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe((event) => {\n this.overlayOutsideClick.next(event);\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = (this._position =\n this.positionStrategy || this._createPositionStrategy());\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined,\n }));\n return positionStrategy\n .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())\n .withPositions(positions)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withPush(this.push)\n .withGrowAfterOpen(this.growAfterOpen)\n .withViewportMargin(this.viewportMargin)\n .withLockedPosition(this.lockPosition)\n .withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getFlexibleConnectedPositionStrategyOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n }\n else {\n return this.origin;\n }\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n }\n else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n }\n else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges\n .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n .subscribe(position => {\n this.positionChange.emit(position);\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n}\nCdkConnectedOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkConnectedOverlay, deps: [{ token: Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkConnectedOverlay.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"], push: [\"cdkConnectedOverlayPush\", \"push\"] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n }]\n }], ctorParameters: function () { return [{ type: Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }] }, { type: i5.Directionality, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }], positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }], positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }], offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }], offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }], width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }], height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }], minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }], minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }], backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }], panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }], viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }], scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }], open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }], disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }], transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }], hasBackdrop: [{\n type: Input,\n args: ['cdkConnectedOverlayHasBackdrop']\n }], lockPosition: [{\n type: Input,\n args: ['cdkConnectedOverlayLockPosition']\n }], flexibleDimensions: [{\n type: Input,\n args: ['cdkConnectedOverlayFlexibleDimensions']\n }], growAfterOpen: [{\n type: Input,\n args: ['cdkConnectedOverlayGrowAfterOpen']\n }], push: [{\n type: Input,\n args: ['cdkConnectedOverlayPush']\n }], backdropClick: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], attach: [{\n type: Output\n }], detach: [{\n type: Output\n }], overlayKeydown: [{\n type: Output\n }], overlayOutsideClick: [{\n type: Output\n }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass OverlayModule {\n}\nOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayModule, declarations: [CdkConnectedOverlay, CdkOverlayOrigin], imports: [BidiModule, PortalModule, ScrollingModule], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] });\nOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [BidiModule, PortalModule, ScrollingModule, ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: OverlayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n }\n else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n }\n else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n }\n else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return (_document.fullscreenElement ||\n _document.webkitFullscreenElement ||\n _document.mozFullScreenElement ||\n _document.msFullscreenElement ||\n null);\n }\n}\nFullscreenOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FullscreenOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nFullscreenOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getEventTarget } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, TemplateRef, Directive, Inject, ViewChild, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, forwardRef, Optional, Host, NgModule } from '@angular/core';\nimport { mixinDisableRipple, MAT_OPTION_PARENT_COMPONENT, MAT_OPTGROUP, MatOption, MatOptionSelectionChange, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport { Subscription, Subject, defer, merge, of, fromEvent } from 'rxjs';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i2$1 from '@angular/cdk/bidi';\nimport { hasModifierKey, ESCAPE, ENTER, UP_ARROW, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport * as i4 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD } from '@angular/material/form-field';\nimport { startWith, switchMap, take, filter, map, tap, delay } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n/** Event object that is emitted when an autocomplete option is selected. */\nclass MatAutocompleteSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n source, \n /** Option that was selected. */\n option) {\n this.source = source;\n this.option = option;\n }\n}\n// Boilerplate for applying mixins to MatAutocomplete.\n/** @docs-private */\nconst _MatAutocompleteMixinBase = mixinDisableRipple(class {\n});\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nconst MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {\n return { autoActiveFirstOption: false, autoSelectActiveOption: false };\n}\n/** Base class with all of the `MatAutocomplete` functionality. */\nclass _MatAutocompleteBase extends _MatAutocompleteMixinBase {\n constructor(_changeDetectorRef, _elementRef, defaults, platform) {\n super();\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._activeOptionChanges = Subscription.EMPTY;\n /** Whether the autocomplete panel should be visible, depending on option length. */\n this.showPanel = false;\n this._isOpen = false;\n /** Function that maps an option's control value to its display value in the trigger. */\n this.displayWith = null;\n /** Event that is emitted whenever an option from the list is selected. */\n this.optionSelected = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is opened. */\n this.opened = new EventEmitter();\n /** Event that is emitted when the autocomplete panel is closed. */\n this.closed = new EventEmitter();\n /** Emits whenever an option is activated. */\n this.optionActivated = new EventEmitter();\n this._classList = {};\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n this.id = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = platform?.SAFARI || false;\n this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n this._autoSelectActiveOption = !!defaults.autoSelectActiveOption;\n }\n /** Whether the autocomplete panel is open. */\n get isOpen() {\n return this._isOpen && this.showPanel;\n }\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n get autoActiveFirstOption() {\n return this._autoActiveFirstOption;\n }\n set autoActiveFirstOption(value) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n /** Whether the active option should be selected as the user is navigating. */\n get autoSelectActiveOption() {\n return this._autoSelectActiveOption;\n }\n set autoSelectActiveOption(value) {\n this._autoSelectActiveOption = coerceBooleanProperty(value);\n }\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n set classList(value) {\n if (value && value.length) {\n this._classList = coerceStringArray(value).reduce((classList, className) => {\n classList[className] = true;\n return classList;\n }, {});\n }\n else {\n this._classList = {};\n }\n this._setVisibilityClasses(this._classList);\n this._elementRef.nativeElement.className = '';\n }\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager(this.options).withWrap();\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n if (this.isOpen) {\n this.optionActivated.emit({ source: this, option: this.options.toArray()[index] || null });\n }\n });\n // Set the initial visibility state.\n this._setVisibility();\n }\n ngOnDestroy() {\n this._activeOptionChanges.unsubscribe();\n }\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop) {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n /** Returns the panel's scrollTop. */\n _getScrollTop() {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._setVisibilityClasses(this._classList);\n this._changeDetectorRef.markForCheck();\n }\n /** Emits the `select` event. */\n _emitSelectEvent(option) {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId) {\n if (this.ariaLabel) {\n return null;\n }\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Sets the autocomplete visibility classes on a classlist based on the panel is visible. */\n _setVisibilityClasses(classList) {\n classList[this._visibleClass] = this.showPanel;\n classList[this._hiddenClass] = !this.showPanel;\n }\n}\n_MatAutocompleteBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteBase, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Directive });\n_MatAutocompleteBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatAutocompleteBase, inputs: { ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], displayWith: \"displayWith\", autoActiveFirstOption: \"autoActiveFirstOption\", autoSelectActiveOption: \"autoSelectActiveOption\", panelWidth: \"panelWidth\", classList: [\"class\", \"classList\"] }, outputs: { optionSelected: \"optionSelected\", opened: \"opened\", closed: \"closed\", optionActivated: \"optionActivated\" }, viewQueries: [{ propertyName: \"template\", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }, { type: i1.Platform }]; }, propDecorators: { template: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], displayWith: [{\n type: Input\n }], autoActiveFirstOption: [{\n type: Input\n }], autoSelectActiveOption: [{\n type: Input\n }], panelWidth: [{\n type: Input\n }], optionSelected: [{\n type: Output\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], optionActivated: [{\n type: Output\n }], classList: [{\n type: Input,\n args: ['class']\n }] } });\nclass MatAutocomplete extends _MatAutocompleteBase {\n constructor() {\n super(...arguments);\n this._visibleClass = 'mat-autocomplete-visible';\n this._hiddenClass = 'mat-autocomplete-hidden';\n }\n}\nMatAutocomplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocomplete, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatAutocomplete, selector: \"mat-autocomplete\", inputs: { disableRipple: \"disableRipple\" }, host: { classAttribute: \"mat-autocomplete\" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: \"optionGroups\", predicate: MAT_OPTGROUP, descendants: true }, { propertyName: \"options\", predicate: MatOption, descendants: true }], exportAs: [\"matAutocomplete\"], usesInheritance: true, ngImport: i0, template: \"\\n
    \\n \\n
    \\n
    \\n\", styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocomplete, decorators: [{\n type: Component,\n args: [{ selector: 'mat-autocomplete', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'matAutocomplete', inputs: ['disableRipple'], host: {\n 'class': 'mat-autocomplete',\n }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], template: \"\\n
    \\n \\n
    \\n
    \\n\", styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\"] }]\n }], propDecorators: { optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Base class containing all of the functionality for `MatAutocompleteOrigin`. */\nclass _MatAutocompleteOriginBase {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\n_MatAutocompleteOriginBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteOriginBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatAutocompleteOriginBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatAutocompleteOriginBase, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteOriginBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nclass MatAutocompleteOrigin extends _MatAutocompleteOriginBase {\n}\nMatAutocompleteOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteOrigin, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatAutocompleteOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatAutocompleteOrigin, selector: \"[matAutocompleteOrigin]\", exportAs: [\"matAutocompleteOrigin\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true,\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\");\n}\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nclass _MatAutocompleteTriggerBase {\n constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, scrollStrategy, _dir, _formField, _document, _viewportRuler, _defaults) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n this._defaults = _defaults;\n this._componentDestroyed = false;\n this._autocompleteDisabled = false;\n /** Whether or not the label state is being overridden. */\n this._manuallyFloatingLabel = false;\n /** Subscription to viewport size changes. */\n this._viewportSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n this._canOpenOnNextFocus = true;\n /** Stream of keyboard events that can close the panel. */\n this._closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n this._windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n this._onChange = () => { };\n /** `View -> model callback called when autocomplete has been touched` */\n this._onTouched = () => { };\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n this.position = 'auto';\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n this.autocompleteAttribute = 'off';\n this._overlayAttached = false;\n /** Stream of changes to the selection state of the autocomplete options. */\n this.optionSelections = defer(() => {\n const options = this.autocomplete ? this.autocomplete.options : null;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable.pipe(take(1), switchMap(() => this.optionSelections));\n });\n this._scrollStrategy = scrollStrategy;\n }\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n get autocompleteDisabled() {\n return this._autocompleteDisabled;\n }\n set autocompleteDisabled(value) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n ngAfterViewInit() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._attachOverlay();\n this._floatLabel();\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n // The `NgZone.onStable` always emits outside of the Angular zone,\n // so all the subscriptions from `_subscribeToClosingActions()` are also outside of the Angular zone.\n // We should manually run in Angular zone to update UI after panel closing.\n this._zone.run(() => {\n this.autocomplete.closed.emit();\n });\n }\n this.autocomplete._isOpen = this._overlayAttached = false;\n this._pendingAutoselectedOption = null;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef\n ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached))\n : of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof MatOptionSelectionChange ? event : null)));\n }\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend')).pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event);\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n return (this._overlayAttached &&\n clickTarget !== this._element.nativeElement &&\n // Normally focus moves inside `mousedown` so this condition will almost always be\n // true. Its main purpose is to handle the case where the input is focused from an\n // outside click which propagates up to the `body` listener within the same sequence\n // and causes the panel to close immediately (see #3106).\n this._document.activeElement !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n !!this._overlayRef &&\n !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve(null).then(() => this._assignOptionValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const hasModifier = hasModifierKey(event);\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifier) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (keyCode === TAB || (isArrowKey && !hasModifier && this.panelOpen)) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey && this._canOpen()) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n if (this.autocomplete.autoSelectActiveOption && this.activeOption) {\n if (!this._pendingAutoselectedOption) {\n this._valueBeforeAutoSelection = this._element.nativeElement.value;\n }\n this._pendingAutoselectedOption = this.activeOption;\n this._assignOptionValue(this.activeOption.value);\n }\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._pendingAutoselectedOption = null;\n this._onChange(value);\n if (this._canOpen() && this._document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n }\n else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay();\n this._floatLabel(true);\n }\n }\n _handleClick() {\n if (this._canOpen() && !this.panelOpen) {\n this.openPanel();\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n }\n else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n this._formField.floatLabel = 'auto';\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const firstStable = this._zone.onStable.pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()), \n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the zone is stable initially, and when the option list changes...\n return (merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n // The `NgZone.onStable` always emits outside of the Angular zone, thus we have to re-enter\n // the Angular zone. This will lead to change detection being called outside of the Angular\n // zone and the `autocomplete.opened` will also emit outside of the Angular.\n this._zone.run(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this.autocomplete._setVisibility();\n this._changeDetectorRef.detectChanges();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n if (wasOpen !== this.panelOpen) {\n // If the `panelOpen` state changed, we need to make sure to emit the `opened` or\n // `closed` event, because we may not have emitted it. This can happen\n // - if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing,\n // - if the panel is closed after the user entered a string that did not match any\n // of the available options,\n // - if a valid string is entered after an invalid one.\n if (this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n else {\n this.autocomplete.closed.emit();\n }\n }\n });\n return this.panelClosingActions;\n }), \n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event)));\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n _assignOptionValue(value) {\n const toDisplay = this.autocomplete && this.autocomplete.displayWith\n ? this.autocomplete.displayWith(value)\n : value;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n this._updateNativeInputValue(toDisplay != null ? toDisplay : '');\n }\n _updateNativeInputValue(value) {\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = value;\n }\n else {\n this._element.nativeElement.value = value;\n }\n this._previousValue = value;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n const toSelect = event ? event.source : this._pendingAutoselectedOption;\n if (toSelect) {\n this._clearPreviousSelectedOption(toSelect);\n this._assignOptionValue(toSelect.value);\n this._onChange(toSelect.value);\n this.autocomplete._emitSelectEvent(toSelect);\n this._element.nativeElement.focus();\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip) {\n this.autocomplete.options.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n _attachOverlay() {\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, {\n id: this._formField?.getLabelId(),\n });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n this._handleOverlayEvents(overlayRef);\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n });\n }\n else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._overlayAttached = true;\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir,\n panelClass: this._defaults?.overlayPanelClass,\n });\n }\n _getOverlayPosition() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n ];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass },\n ];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n }\n else if (this.position === 'below') {\n positions = belowPositions;\n }\n else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Resets the active item to -1 so arrow events will activate the\n * correct options, or to 0 if the consumer opted into it.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Note that we go through `setFirstItemActive`, rather than `setActiveItem(0)`, because\n // the former will find the next enabled option, if the first one is disabled.\n autocomplete._keyManager.setFirstItemActive();\n }\n else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document?.defaultView || window;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n }\n else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n /** Handles keyboard events coming from the overlay panel. */\n _handleOverlayEvents(overlayRef) {\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {\n // If the user had typed something in before we autoselected an option, and they decided\n // to cancel the selection, restore the input value to the one they had typed in.\n if (this._pendingAutoselectedOption) {\n this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');\n this._pendingAutoselectedOption = null;\n }\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n // Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.\n // TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,\n // but the behvior isn't exactly the same and it ends up breaking some internal tests.\n overlayRef.outsidePointerEvents().subscribe();\n }\n}\n_MatAutocompleteTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteTriggerBase, deps: [{ token: i0.ElementRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: MAT_AUTOCOMPLETE_SCROLL_STRATEGY }, { token: i2$1.Directionality, optional: true }, { token: MAT_FORM_FIELD, host: true, optional: true }, { token: DOCUMENT, optional: true }, { token: i3.ViewportRuler }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatAutocompleteTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatAutocompleteTriggerBase, inputs: { autocomplete: [\"matAutocomplete\", \"autocomplete\"], position: [\"matAutocompletePosition\", \"position\"], connectedTo: [\"matAutocompleteConnectedTo\", \"connectedTo\"], autocompleteAttribute: [\"autocomplete\", \"autocompleteAttribute\"], autocompleteDisabled: [\"matAutocompleteDisabled\", \"autocompleteDisabled\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteTriggerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY]\n }] }, { type: i2$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i4.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }, {\n type: Host\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { autocomplete: [{\n type: Input,\n args: ['matAutocomplete']\n }], position: [{\n type: Input,\n args: ['matAutocompletePosition']\n }], connectedTo: [{\n type: Input,\n args: ['matAutocompleteConnectedTo']\n }], autocompleteAttribute: [{\n type: Input,\n args: ['autocomplete']\n }], autocompleteDisabled: [{\n type: Input,\n args: ['matAutocompleteDisabled']\n }] } });\nclass MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {\n constructor() {\n super(...arguments);\n this._aboveClass = 'mat-autocomplete-panel-above';\n }\n}\nMatAutocompleteTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatAutocompleteTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", host: { listeners: { \"focusin\": \"_handleFocus()\", \"blur\": \"_onTouched()\", \"input\": \"_handleInput($event)\", \"keydown\": \"_handleKeydown($event)\", \"click\": \"_handleClick()\" }, properties: { \"attr.autocomplete\": \"autocompleteAttribute\", \"attr.role\": \"autocompleteDisabled ? null : \\\"combobox\\\"\", \"attr.aria-autocomplete\": \"autocompleteDisabled ? null : \\\"list\\\"\", \"attr.aria-activedescendant\": \"(panelOpen && activeOption) ? activeOption.id : null\", \"attr.aria-expanded\": \"autocompleteDisabled ? null : panelOpen.toString()\", \"attr.aria-owns\": \"(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id\", \"attr.aria-haspopup\": \"autocompleteDisabled ? null : \\\"listbox\\\"\" }, classAttribute: \"mat-autocomplete-trigger\" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: [\"matAutocompleteTrigger\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': 'autocompleteDisabled ? null : \"listbox\"',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick()',\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatAutocompleteModule {\n}\nMatAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteModule, declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule], exports: [MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] });\nMatAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule, CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule],\n exports: [\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n CdkScrollableModule,\n MatOptionModule,\n MatCommonModule,\n ],\n declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, _MatAutocompleteBase, _MatAutocompleteOriginBase, _MatAutocompleteTriggerBase, getMatAutocompleteMissingPanelError };\n","import * as i8 from '@angular/cdk/overlay';\nimport { Overlay, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport * as i7 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, EventEmitter, Optional, Inject, Self, Attribute, Input, ViewChild, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport * as i2 from '@angular/material/core';\nimport { mixinDisableRipple, mixinTabIndex, mixinDisabled, mixinErrorState, _countGroupLabelsBeforeOption, _getOptionScrollPosition, MAT_OPTION_PARENT_COMPONENT, MatOption, MAT_OPTGROUP, MatOptionModule, MatCommonModule } from '@angular/material/core';\nimport * as i6 from '@angular/material/form-field';\nimport { MAT_FORM_FIELD, MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';\nimport * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i5 from '@angular/cdk/a11y';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport * as i3 from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { DOWN_ARROW, UP_ARROW, LEFT_ARROW, RIGHT_ARROW, ENTER, SPACE, hasModifierKey, A } from '@angular/cdk/keycodes';\nimport * as i4 from '@angular/forms';\nimport { Validators } from '@angular/forms';\nimport { Subject, defer, merge } from 'rxjs';\nimport { startWith, switchMap, take, filter, map, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { trigger, transition, query, animateChild, state, style, animate } from '@angular/animations';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The following are all the animations for the mat-select component, with each\n * const containing the metadata for one animation.\n *\n * The values below match the implementation of the AngularJS Material mat-select animation.\n * @docs-private\n */\nconst matSelectAnimations = {\n /**\n * This animation ensures the select's overlay panel animation (transformPanel) is called when\n * closing the select.\n * This is needed due to https://github.com/angular/angular/issues/23302\n */\n transformPanelWrap: trigger('transformPanelWrap', [\n transition('* => void', query('@transformPanel', [animateChild()], { optional: true })),\n ]),\n /**\n * This animation transforms the select's overlay panel on and off the page.\n *\n * When the panel is attached to the DOM, it expands its width by the amount of padding, scales it\n * up to 100% on the Y axis, fades in its border, and translates slightly up and to the\n * side to ensure the option text correctly overlaps the trigger text.\n *\n * When the panel is removed from the DOM, it simply fades out linearly.\n */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n transform: 'scaleY(0.8)',\n minWidth: '100%',\n opacity: 0,\n })),\n state('showing', style({\n opacity: 1,\n minWidth: 'calc(100% + 32px)',\n transform: 'scaleY(1)',\n })),\n state('showing-multiple', style({\n opacity: 1,\n minWidth: 'calc(100% + 64px)',\n transform: 'scaleY(1)',\n })),\n transition('void => *', animate('120ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 }))),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an exception to be thrown when attempting to change a select's `multiple` option\n * after initialization.\n * @docs-private\n */\nfunction getMatSelectDynamicMultipleError() {\n return Error('Cannot change `multiple` mode of select after initialization.');\n}\n/**\n * Returns an exception to be thrown when attempting to assign a non-array value to a select\n * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for\n * resetting the value.\n * @docs-private\n */\nfunction getMatSelectNonArrayValueError() {\n return Error('Value must be an array in multiple-selection mode.');\n}\n/**\n * Returns an exception to be thrown when assigning a non-function value to the comparator\n * used to determine if a value corresponds to an option. Note that whether the function\n * actually takes two values and returns a boolean is not checked.\n */\nfunction getMatSelectNonFunctionValueError() {\n return Error('`compareWith` must be a function.');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet nextUniqueId = 0;\n/**\n * The following style constants are necessary to save here in order\n * to properly calculate the alignment of the selected option over\n * the trigger element.\n */\n/** The max height of the select's overlay panel. */\nconst SELECT_PANEL_MAX_HEIGHT = 256;\n/** The panel's padding on the x-axis. */\nconst SELECT_PANEL_PADDING_X = 16;\n/** The panel's x axis padding if it is indented (e.g. there is an option group). */\nconst SELECT_PANEL_INDENT_PADDING_X = SELECT_PANEL_PADDING_X * 2;\n/** The height of the select items in `em` units. */\nconst SELECT_ITEM_HEIGHT_EM = 3;\n// TODO(josephperrott): Revert to a constant after 2018 spec updates are fully merged.\n/**\n * Distance between the panel edge and the option text in\n * multi-selection mode.\n *\n * Calculated as:\n * (SELECT_PANEL_PADDING_X * 1.5) + 16 = 40\n * The padding is multiplied by 1.5 because the checkbox's margin is half the padding.\n * The checkbox width is 16px.\n */\nconst SELECT_MULTIPLE_PANEL_PADDING_X = SELECT_PANEL_PADDING_X * 1.5 + 16;\n/**\n * The select panel will only \"fit\" inside the viewport if it is positioned at\n * this value or more away from the viewport boundary.\n */\nconst SELECT_PANEL_VIEWPORT_PADDING = 8;\n/** Injection token that determines the scroll handling while a select is open. */\nconst MAT_SELECT_SCROLL_STRATEGY = new InjectionToken('mat-select-scroll-strategy');\n/** @docs-private */\nfunction MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** Injection token that can be used to provide the default options the select module. */\nconst MAT_SELECT_CONFIG = new InjectionToken('MAT_SELECT_CONFIG');\n/** @docs-private */\nconst MAT_SELECT_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_SELECT_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n/** Change event object that is emitted when the select value has changed. */\nclass MatSelectChange {\n constructor(\n /** Reference to the select that emitted the change event. */\n source, \n /** Current value of the select that emitted the event. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n// Boilerplate for applying mixins to MatSelect.\n/** @docs-private */\nconst _MatSelectMixinBase = mixinDisableRipple(mixinTabIndex(mixinDisabled(mixinErrorState(class {\n constructor(_elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, \n /**\n * Form control bound to the component.\n * Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n ngControl) {\n this._elementRef = _elementRef;\n this._defaultErrorStateMatcher = _defaultErrorStateMatcher;\n this._parentForm = _parentForm;\n this._parentFormGroup = _parentFormGroup;\n this.ngControl = ngControl;\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n this.stateChanges = new Subject();\n }\n}))));\n/**\n * Injection token that can be used to reference instances of `MatSelectTrigger`. It serves as\n * alternative token to the actual `MatSelectTrigger` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_SELECT_TRIGGER = new InjectionToken('MatSelectTrigger');\n/**\n * Allows the user to customize the trigger that is displayed when the select has a value.\n */\nclass MatSelectTrigger {\n}\nMatSelectTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSelectTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatSelectTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatSelectTrigger, selector: \"mat-select-trigger\", providers: [{ provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSelectTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-select-trigger',\n providers: [{ provide: MAT_SELECT_TRIGGER, useExisting: MatSelectTrigger }],\n }]\n }] });\n/** Base class with all of the `MatSelect` functionality. */\nclass _MatSelectBase extends _MatSelectMixinBase {\n constructor(_viewportRuler, _changeDetectorRef, _ngZone, _defaultErrorStateMatcher, elementRef, _dir, _parentForm, _parentFormGroup, _parentFormField, ngControl, tabIndex, scrollStrategyFactory, _liveAnnouncer, _defaultOptions) {\n super(elementRef, _defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\n this._viewportRuler = _viewportRuler;\n this._changeDetectorRef = _changeDetectorRef;\n this._ngZone = _ngZone;\n this._dir = _dir;\n this._parentFormField = _parentFormField;\n this._liveAnnouncer = _liveAnnouncer;\n this._defaultOptions = _defaultOptions;\n /** Whether or not the overlay panel is open. */\n this._panelOpen = false;\n /** Comparison function to specify which option is displayed. Defaults to object equality. */\n this._compareWith = (o1, o2) => o1 === o2;\n /** Unique id for this input. */\n this._uid = `mat-select-${nextUniqueId++}`;\n /** Current `aria-labelledby` value for the select trigger. */\n this._triggerAriaLabelledBy = null;\n /** Emits whenever the component is destroyed. */\n this._destroy = new Subject();\n /** `View -> model callback called when value changes` */\n this._onChange = () => { };\n /** `View -> model callback called when select has been touched` */\n this._onTouched = () => { };\n /** ID for the DOM node containing the select's value. */\n this._valueId = `mat-select-value-${nextUniqueId++}`;\n /** Emits when the panel element is finished transforming in. */\n this._panelDoneAnimatingStream = new Subject();\n this._overlayPanelClass = this._defaultOptions?.overlayPanelClass || '';\n this._focused = false;\n /** A name for this control that can be used by `mat-form-field`. */\n this.controlType = 'mat-select';\n this._multiple = false;\n this._disableOptionCentering = this._defaultOptions?.disableOptionCentering ?? false;\n /** Aria label of the select. */\n this.ariaLabel = '';\n /** Combined stream of all of the child options' change events. */\n this.optionSelectionChanges = defer(() => {\n const options = this.options;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n return this._ngZone.onStable.pipe(take(1), switchMap(() => this.optionSelectionChanges));\n });\n /** Event emitted when the select panel has been toggled. */\n this.openedChange = new EventEmitter();\n /** Event emitted when the select has been opened. */\n this._openedStream = this.openedChange.pipe(filter(o => o), map(() => { }));\n /** Event emitted when the select has been closed. */\n this._closedStream = this.openedChange.pipe(filter(o => !o), map(() => { }));\n /** Event emitted when the selected value has been changed by the user. */\n this.selectionChange = new EventEmitter();\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n // Note that we only want to set this when the defaults pass it in, otherwise it should\n // stay as `undefined` so that it falls back to the default in the key manager.\n if (_defaultOptions?.typeaheadDebounceInterval != null) {\n this._typeaheadDebounceInterval = _defaultOptions.typeaheadDebounceInterval;\n }\n this._scrollStrategyFactory = scrollStrategyFactory;\n this._scrollStrategy = this._scrollStrategyFactory();\n this.tabIndex = parseInt(tabIndex) || 0;\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n }\n /** Whether the select is focused. */\n get focused() {\n return this._focused || this._panelOpen;\n }\n /** Placeholder to be shown if no value has been selected. */\n get placeholder() {\n return this._placeholder;\n }\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n /** Whether the component is required. */\n get required() {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n /** Whether the user should be allowed to select multiple options. */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n if (this._selectionModel && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectDynamicMultipleError();\n }\n this._multiple = coerceBooleanProperty(value);\n }\n /** Whether to center the active option over the trigger. */\n get disableOptionCentering() {\n return this._disableOptionCentering;\n }\n set disableOptionCentering(value) {\n this._disableOptionCentering = coerceBooleanProperty(value);\n }\n /**\n * Function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn) {\n if (typeof fn !== 'function' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonFunctionValueError();\n }\n this._compareWith = fn;\n if (this._selectionModel) {\n // A different comparator means the selection could change.\n this._initializeSelection();\n }\n }\n /** Value of the select control. */\n get value() {\n return this._value;\n }\n set value(newValue) {\n const hasAssigned = this._assignValue(newValue);\n if (hasAssigned) {\n this._onChange(newValue);\n }\n }\n /** Time to wait in milliseconds after the last keystroke before moving focus to an item. */\n get typeaheadDebounceInterval() {\n return this._typeaheadDebounceInterval;\n }\n set typeaheadDebounceInterval(value) {\n this._typeaheadDebounceInterval = coerceNumberProperty(value);\n }\n /** Unique id of the element. */\n get id() {\n return this._id;\n }\n set id(value) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n ngOnInit() {\n this._selectionModel = new SelectionModel(this.multiple);\n this.stateChanges.next();\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this._panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntil(this._destroy))\n .subscribe(() => this._panelDoneAnimating(this.panelOpen));\n }\n ngAfterContentInit() {\n this._initKeyManager();\n this._selectionModel.changed.pipe(takeUntil(this._destroy)).subscribe(event => {\n event.added.forEach(option => option.select());\n event.removed.forEach(option => option.deselect());\n });\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy)).subscribe(() => {\n this._resetOptions();\n this._initializeSelection();\n });\n }\n ngDoCheck() {\n const newAriaLabelledby = this._getTriggerAriaLabelledby();\n const ngControl = this.ngControl;\n // We have to manage setting the `aria-labelledby` ourselves, because part of its value\n // is computed as a result of a content query which can cause this binding to trigger a\n // \"changed after checked\" error.\n if (newAriaLabelledby !== this._triggerAriaLabelledBy) {\n const element = this._elementRef.nativeElement;\n this._triggerAriaLabelledBy = newAriaLabelledby;\n if (newAriaLabelledby) {\n element.setAttribute('aria-labelledby', newAriaLabelledby);\n }\n else {\n element.removeAttribute('aria-labelledby');\n }\n }\n if (ngControl) {\n // The disabled state might go out of sync if the form group is swapped out. See #17860.\n if (this._previousControl !== ngControl.control) {\n if (this._previousControl !== undefined &&\n ngControl.disabled !== null &&\n ngControl.disabled !== this.disabled) {\n this.disabled = ngControl.disabled;\n }\n this._previousControl = ngControl.control;\n }\n this.updateErrorState();\n }\n }\n ngOnChanges(changes) {\n // Updating the disabled state is handled by `mixinDisabled`, but we need to additionally let\n // the parent form field know to run change detection when the disabled state changes.\n if (changes['disabled'] || changes['userAriaDescribedBy']) {\n this.stateChanges.next();\n }\n if (changes['typeaheadDebounceInterval'] && this._keyManager) {\n this._keyManager.withTypeAhead(this._typeaheadDebounceInterval);\n }\n }\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n this.stateChanges.complete();\n }\n /** Toggles the overlay panel open or closed. */\n toggle() {\n this.panelOpen ? this.close() : this.open();\n }\n /** Opens the overlay panel. */\n open() {\n if (this._canOpen()) {\n this._panelOpen = true;\n this._keyManager.withHorizontalOrientation(null);\n this._highlightCorrectOption();\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Closes the overlay panel and focuses the host element. */\n close() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._keyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value) {\n this._assignValue(value);\n }\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n /** Whether or not the overlay panel is open. */\n get panelOpen() {\n return this._panelOpen;\n }\n /** The currently selected option. */\n get selected() {\n return this.multiple ? this._selectionModel?.selected || [] : this._selectionModel?.selected[0];\n }\n /** The value displayed in the trigger. */\n get triggerValue() {\n if (this.empty) {\n return '';\n }\n if (this._multiple) {\n const selectedOptions = this._selectionModel.selected.map(option => option.viewValue);\n if (this._isRtl()) {\n selectedOptions.reverse();\n }\n // TODO(crisbeto): delimiter should be configurable for proper localization.\n return selectedOptions.join(', ');\n }\n return this._selectionModel.selected[0].viewValue;\n }\n /** Whether the element is in RTL mode. */\n _isRtl() {\n return this._dir ? this._dir.value === 'rtl' : false;\n }\n /** Handles all keydown events on the select. */\n _handleKeydown(event) {\n if (!this.disabled) {\n this.panelOpen ? this._handleOpenKeydown(event) : this._handleClosedKeydown(event);\n }\n }\n /** Handles keyboard events while the select is closed. */\n _handleClosedKeydown(event) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW ||\n keyCode === UP_ARROW ||\n keyCode === LEFT_ARROW ||\n keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n const manager = this._keyManager;\n // Open the select on ALT + arrow key to match the native \n event.preventDefault();\n this.close();\n // Don't do anything in this case if the user is typing,\n // because the typing sequence can include the space key.\n }\n else if (!isTyping &&\n (keyCode === ENTER || keyCode === SPACE) &&\n manager.activeItem &&\n !hasModifierKey(event)) {\n event.preventDefault();\n manager.activeItem._selectViaInteraction();\n }\n else if (!isTyping && this._multiple && keyCode === A && event.ctrlKey) {\n event.preventDefault();\n const hasDeselectedOptions = this.options.some(opt => !opt.disabled && !opt.selected);\n this.options.forEach(option => {\n if (!option.disabled) {\n hasDeselectedOptions ? option.select() : option.deselect();\n }\n });\n }\n else {\n const previouslyFocusedIndex = manager.activeItemIndex;\n manager.onKeydown(event);\n if (this._multiple &&\n isArrowKey &&\n event.shiftKey &&\n manager.activeItem &&\n manager.activeItemIndex !== previouslyFocusedIndex) {\n manager.activeItem._selectViaInteraction();\n }\n }\n }\n _onFocus() {\n if (!this.disabled) {\n this._focused = true;\n this.stateChanges.next();\n }\n }\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n _onBlur() {\n this._focused = false;\n if (!this.disabled && !this.panelOpen) {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n /**\n * Callback that is invoked when the overlay panel has been attached.\n */\n _onAttached() {\n this._overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this._changeDetectorRef.detectChanges();\n this._positioningSettled();\n });\n }\n /** Returns the theme to be used on the panel. */\n _getPanelTheme() {\n return this._parentFormField ? `mat-${this._parentFormField.color}` : '';\n }\n /** Whether the select has a value. */\n get empty() {\n return !this._selectionModel || this._selectionModel.isEmpty();\n }\n _initializeSelection() {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n if (this.ngControl) {\n this._value = this.ngControl.value;\n }\n this._setSelectionByValue(this._value);\n this.stateChanges.next();\n });\n }\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n _setSelectionByValue(value) {\n this._selectionModel.selected.forEach(option => option.setInactiveStyles());\n this._selectionModel.clear();\n if (this.multiple && value) {\n if (!Array.isArray(value) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatSelectNonArrayValueError();\n }\n value.forEach((currentValue) => this._selectOptionByValue(currentValue));\n this._sortValues();\n }\n else {\n const correspondingOption = this._selectOptionByValue(value);\n // Shift focus to the active item. Note that we shouldn't do this in multiple\n // mode, because we don't know what option the user interacted with last.\n if (correspondingOption) {\n this._keyManager.updateActiveItem(correspondingOption);\n }\n else if (!this.panelOpen) {\n // Otherwise reset the highlighted option. Note that we only want to do this while\n // closed, because doing it while open can shift the user's focus unnecessarily.\n this._keyManager.updateActiveItem(-1);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n _selectOptionByValue(value) {\n const correspondingOption = this.options.find((option) => {\n // Skip options that are already in the model. This allows us to handle cases\n // where the same primitive value is selected multiple times.\n if (this._selectionModel.isSelected(option)) {\n return false;\n }\n try {\n // Treat null as a special reset value.\n return option.value != null && this._compareWith(option.value, value);\n }\n catch (error) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Notify developers of errors in their comparator.\n console.warn(error);\n }\n return false;\n }\n });\n if (correspondingOption) {\n this._selectionModel.select(correspondingOption);\n }\n return correspondingOption;\n }\n /** Assigns a specific value to the select. Returns whether the value has changed. */\n _assignValue(newValue) {\n // Always re-assign an array, because it might have been mutated.\n if (newValue !== this._value || (this._multiple && Array.isArray(newValue))) {\n if (this.options) {\n this._setSelectionByValue(newValue);\n }\n this._value = newValue;\n return true;\n }\n return false;\n }\n /** Sets up a key manager to listen to keyboard events on the overlay panel. */\n _initKeyManager() {\n this._keyManager = new ActiveDescendantKeyManager(this.options)\n .withTypeAhead(this._typeaheadDebounceInterval)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr')\n .withHomeAndEnd()\n .withAllowedModifierKeys(['shiftKey']);\n this._keyManager.tabOut.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this.panelOpen) {\n // Select the active item when tabbing away. This is consistent with how the native\n // select behaves. Note that we only want to do this in single selection mode.\n if (!this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n // Restore focus to the trigger before closing. Ensures that the focus\n // position won't be lost if the user got focus into the overlay.\n this.focus();\n this.close();\n }\n });\n this._keyManager.change.pipe(takeUntil(this._destroy)).subscribe(() => {\n if (this._panelOpen && this.panel) {\n this._scrollOptionIntoView(this._keyManager.activeItemIndex || 0);\n }\n else if (!this._panelOpen && !this.multiple && this._keyManager.activeItem) {\n this._keyManager.activeItem._selectViaInteraction();\n }\n });\n }\n /** Drops current option subscriptions and IDs and resets from scratch. */\n _resetOptions() {\n const changedOrDestroyed = merge(this.options.changes, this._destroy);\n this.optionSelectionChanges.pipe(takeUntil(changedOrDestroyed)).subscribe(event => {\n this._onSelect(event.source, event.isUserInput);\n if (event.isUserInput && !this.multiple && this._panelOpen) {\n this.close();\n this.focus();\n }\n });\n // Listen to changes in the internal state of the options and react accordingly.\n // Handles cases like the labels of the selected options changing.\n merge(...this.options.map(option => option._stateChanges))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(() => {\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n /** Invoked when an option is clicked. */\n _onSelect(option, isUserInput) {\n const wasSelected = this._selectionModel.isSelected(option);\n if (option.value == null && !this._multiple) {\n option.deselect();\n this._selectionModel.clear();\n if (this.value != null) {\n this._propagateChanges(option.value);\n }\n }\n else {\n if (wasSelected !== option.selected) {\n option.selected\n ? this._selectionModel.select(option)\n : this._selectionModel.deselect(option);\n }\n if (isUserInput) {\n this._keyManager.setActiveItem(option);\n }\n if (this.multiple) {\n this._sortValues();\n if (isUserInput) {\n // In case the user selected the option with their mouse, we\n // want to restore focus back to the trigger, in order to\n // prevent the select keyboard controls from clashing with\n // the ones from `mat-option`.\n this.focus();\n }\n }\n }\n if (wasSelected !== this._selectionModel.isSelected(option)) {\n this._propagateChanges();\n }\n this.stateChanges.next();\n }\n /** Sorts the selected values in the selected based on their order in the panel. */\n _sortValues() {\n if (this.multiple) {\n const options = this.options.toArray();\n this._selectionModel.sort((a, b) => {\n return this.sortComparator\n ? this.sortComparator(a, b, options)\n : options.indexOf(a) - options.indexOf(b);\n });\n this.stateChanges.next();\n }\n }\n /** Emits change event to set the model value. */\n _propagateChanges(fallbackValue) {\n let valueToEmit = null;\n if (this.multiple) {\n valueToEmit = this.selected.map(option => option.value);\n }\n else {\n valueToEmit = this.selected ? this.selected.value : fallbackValue;\n }\n this._value = valueToEmit;\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this.selectionChange.emit(this._getChangeEvent(valueToEmit));\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n _highlightCorrectOption() {\n if (this._keyManager) {\n if (this.empty) {\n this._keyManager.setFirstItemActive();\n }\n else {\n this._keyManager.setActiveItem(this._selectionModel.selected[0]);\n }\n }\n }\n /** Whether the panel is allowed to open. */\n _canOpen() {\n return !this._panelOpen && !this.disabled && this.options?.length > 0;\n }\n /** Focuses the select element. */\n focus(options) {\n this._elementRef.nativeElement.focus(options);\n }\n /** Gets the aria-labelledby for the select panel. */\n _getPanelAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n const labelId = this._parentFormField?.getLabelId();\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n /** Determines the `aria-activedescendant` to be set on the host. */\n _getAriaActiveDescendant() {\n if (this.panelOpen && this._keyManager && this._keyManager.activeItem) {\n return this._keyManager.activeItem.id;\n }\n return null;\n }\n /** Gets the aria-labelledby of the select component trigger. */\n _getTriggerAriaLabelledby() {\n if (this.ariaLabel) {\n return null;\n }\n const labelId = this._parentFormField?.getLabelId();\n let value = (labelId ? labelId + ' ' : '') + this._valueId;\n if (this.ariaLabelledby) {\n value += ' ' + this.ariaLabelledby;\n }\n return value;\n }\n /** Called when the overlay panel is done animating. */\n _panelDoneAnimating(isOpen) {\n this.openedChange.emit(isOpen);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n if (ids.length) {\n this._elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));\n }\n else {\n this._elementRef.nativeElement.removeAttribute('aria-describedby');\n }\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n this.open();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n return this._panelOpen || !this.empty || (this._focused && !!this._placeholder);\n }\n}\n_MatSelectBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatSelectBase, deps: [{ token: i1.ViewportRuler }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i2.ErrorStateMatcher }, { token: i0.ElementRef }, { token: i3.Directionality, optional: true }, { token: i4.NgForm, optional: true }, { token: i4.FormGroupDirective, optional: true }, { token: MAT_FORM_FIELD, optional: true }, { token: i4.NgControl, optional: true, self: true }, { token: 'tabindex', attribute: true }, { token: MAT_SELECT_SCROLL_STRATEGY }, { token: i5.LiveAnnouncer }, { token: MAT_SELECT_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatSelectBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatSelectBase, inputs: { userAriaDescribedBy: [\"aria-describedby\", \"userAriaDescribedBy\"], panelClass: \"panelClass\", placeholder: \"placeholder\", required: \"required\", multiple: \"multiple\", disableOptionCentering: \"disableOptionCentering\", compareWith: \"compareWith\", value: \"value\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], errorStateMatcher: \"errorStateMatcher\", typeaheadDebounceInterval: \"typeaheadDebounceInterval\", sortComparator: \"sortComparator\", id: \"id\" }, outputs: { openedChange: \"openedChange\", _openedStream: \"opened\", _closedStream: \"closed\", selectionChange: \"selectionChange\", valueChange: \"valueChange\" }, viewQueries: [{ propertyName: \"trigger\", first: true, predicate: [\"trigger\"], descendants: true }, { propertyName: \"panel\", first: true, predicate: [\"panel\"], descendants: true }, { propertyName: \"_overlayDir\", first: true, predicate: CdkConnectedOverlay, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatSelectBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i1.ViewportRuler }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i2.ErrorStateMatcher }, { type: i0.ElementRef }, { type: i3.Directionality, decorators: [{\n type: Optional\n }] }, { type: i4.NgForm, decorators: [{\n type: Optional\n }] }, { type: i4.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i6.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }, { type: i4.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_SELECT_SCROLL_STRATEGY]\n }] }, { type: i5.LiveAnnouncer }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_SELECT_CONFIG]\n }] }]; }, propDecorators: { userAriaDescribedBy: [{\n type: Input,\n args: ['aria-describedby']\n }], trigger: [{\n type: ViewChild,\n args: ['trigger']\n }], panel: [{\n type: ViewChild,\n args: ['panel']\n }], _overlayDir: [{\n type: ViewChild,\n args: [CdkConnectedOverlay]\n }], panelClass: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], required: [{\n type: Input\n }], multiple: [{\n type: Input\n }], disableOptionCentering: [{\n type: Input\n }], compareWith: [{\n type: Input\n }], value: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], errorStateMatcher: [{\n type: Input\n }], typeaheadDebounceInterval: [{\n type: Input\n }], sortComparator: [{\n type: Input\n }], id: [{\n type: Input\n }], openedChange: [{\n type: Output\n }], _openedStream: [{\n type: Output,\n args: ['opened']\n }], _closedStream: [{\n type: Output,\n args: ['closed']\n }], selectionChange: [{\n type: Output\n }], valueChange: [{\n type: Output\n }] } });\nclass MatSelect extends _MatSelectBase {\n constructor() {\n super(...arguments);\n /** The scroll position of the overlay panel, calculated to center the selected option. */\n this._scrollTop = 0;\n /** The cached font-size of the trigger element. */\n this._triggerFontSize = 0;\n /** The value of the select panel's transform-origin property. */\n this._transformOrigin = 'top';\n /**\n * The y-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text.\n * when the panel opens. Will change based on the y-position of the selected option.\n */\n this._offsetY = 0;\n this._positions = [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ];\n }\n /**\n * Calculates the scroll position of the select's overlay panel.\n *\n * Attempts to center the selected option in the panel. If the option is\n * too high or too low in the panel to be scrolled to the center, it clamps the\n * scroll position to the min or max scroll positions respectively.\n */\n _calculateOverlayScroll(selectedIndex, scrollBuffer, maxScroll) {\n const itemHeight = this._getItemHeight();\n const optionOffsetFromScrollTop = itemHeight * selectedIndex;\n const halfOptionHeight = itemHeight / 2;\n // Starts at the optionOffsetFromScrollTop, which scrolls the option to the top of the\n // scroll container, then subtracts the scroll buffer to scroll the option down to\n // the center of the overlay panel. Half the option height must be re-added to the\n // scrollTop so the option is centered based on its middle, not its top edge.\n const optimalScrollPosition = optionOffsetFromScrollTop - scrollBuffer + halfOptionHeight;\n return Math.min(Math.max(0, optimalScrollPosition), maxScroll);\n }\n ngOnInit() {\n super.ngOnInit();\n this._viewportRuler\n .change()\n .pipe(takeUntil(this._destroy))\n .subscribe(() => {\n if (this.panelOpen) {\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n open() {\n if (super._canOpen()) {\n super.open();\n this._triggerRect = this.trigger.nativeElement.getBoundingClientRect();\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this._triggerFontSize = parseInt(getComputedStyle(this.trigger.nativeElement).fontSize || '0');\n this._calculateOverlayPosition();\n // Set the font size on the panel element once it exists.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n if (this._triggerFontSize &&\n this._overlayDir.overlayRef &&\n this._overlayDir.overlayRef.overlayElement) {\n this._overlayDir.overlayRef.overlayElement.style.fontSize = `${this._triggerFontSize}px`;\n }\n });\n }\n }\n /** Scrolls the active option into view. */\n _scrollOptionIntoView(index) {\n const labelCount = _countGroupLabelsBeforeOption(index, this.options, this.optionGroups);\n const itemHeight = this._getItemHeight();\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n this.panel.nativeElement.scrollTop = 0;\n }\n else {\n this.panel.nativeElement.scrollTop = _getOptionScrollPosition((index + labelCount) * itemHeight, itemHeight, this.panel.nativeElement.scrollTop, SELECT_PANEL_MAX_HEIGHT);\n }\n }\n _positioningSettled() {\n this._calculateOverlayOffsetX();\n this.panel.nativeElement.scrollTop = this._scrollTop;\n }\n _panelDoneAnimating(isOpen) {\n if (this.panelOpen) {\n this._scrollTop = 0;\n }\n else {\n this._overlayDir.offsetX = 0;\n this._changeDetectorRef.markForCheck();\n }\n super._panelDoneAnimating(isOpen);\n }\n _getChangeEvent(value) {\n return new MatSelectChange(this, value);\n }\n /**\n * Sets the x-offset of the overlay panel in relation to the trigger's top start corner.\n * This must be adjusted to align the selected option text over the trigger text when\n * the panel opens. Will change based on LTR or RTL text direction. Note that the offset\n * can't be calculated until the panel has been attached, because we need to know the\n * content width in order to constrain the panel within the viewport.\n */\n _calculateOverlayOffsetX() {\n const overlayRect = this._overlayDir.overlayRef.overlayElement.getBoundingClientRect();\n const viewportSize = this._viewportRuler.getViewportSize();\n const isRtl = this._isRtl();\n const paddingWidth = this.multiple\n ? SELECT_MULTIPLE_PANEL_PADDING_X + SELECT_PANEL_PADDING_X\n : SELECT_PANEL_PADDING_X * 2;\n let offsetX;\n // Adjust the offset, depending on the option padding.\n if (this.multiple) {\n offsetX = SELECT_MULTIPLE_PANEL_PADDING_X;\n }\n else if (this.disableOptionCentering) {\n offsetX = SELECT_PANEL_PADDING_X;\n }\n else {\n let selected = this._selectionModel.selected[0] || this.options.first;\n offsetX = selected && selected.group ? SELECT_PANEL_INDENT_PADDING_X : SELECT_PANEL_PADDING_X;\n }\n // Invert the offset in LTR.\n if (!isRtl) {\n offsetX *= -1;\n }\n // Determine how much the select overflows on each side.\n const leftOverflow = 0 - (overlayRect.left + offsetX - (isRtl ? paddingWidth : 0));\n const rightOverflow = overlayRect.right + offsetX - viewportSize.width + (isRtl ? 0 : paddingWidth);\n // If the element overflows on either side, reduce the offset to allow it to fit.\n if (leftOverflow > 0) {\n offsetX += leftOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n else if (rightOverflow > 0) {\n offsetX -= rightOverflow + SELECT_PANEL_VIEWPORT_PADDING;\n }\n // Set the offset directly in order to avoid having to go through change detection and\n // potentially triggering \"changed after it was checked\" errors. Round the value to avoid\n // blurry content in some browsers.\n this._overlayDir.offsetX = Math.round(offsetX);\n this._overlayDir.overlayRef.updatePosition();\n }\n /**\n * Calculates the y-offset of the select's overlay panel in relation to the\n * top start corner of the trigger. It has to be adjusted in order for the\n * selected option to be aligned over the trigger when the panel opens.\n */\n _calculateOverlayOffsetY(selectedIndex, scrollBuffer, maxScroll) {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const maxOptionsDisplayed = Math.floor(SELECT_PANEL_MAX_HEIGHT / itemHeight);\n let optionOffsetFromPanelTop;\n // Disable offset if requested by user by returning 0 as value to offset\n if (this.disableOptionCentering) {\n return 0;\n }\n if (this._scrollTop === 0) {\n optionOffsetFromPanelTop = selectedIndex * itemHeight;\n }\n else if (this._scrollTop === maxScroll) {\n const firstDisplayedIndex = this._getItemCount() - maxOptionsDisplayed;\n const selectedDisplayIndex = selectedIndex - firstDisplayedIndex;\n // The first item is partially out of the viewport. Therefore we need to calculate what\n // portion of it is shown in the viewport and account for it in our offset.\n let partialItemHeight = itemHeight - ((this._getItemCount() * itemHeight - SELECT_PANEL_MAX_HEIGHT) % itemHeight);\n // Because the panel height is longer than the height of the options alone,\n // there is always extra padding at the top or bottom of the panel. When\n // scrolled to the very bottom, this padding is at the top of the panel and\n // must be added to the offset.\n optionOffsetFromPanelTop = selectedDisplayIndex * itemHeight + partialItemHeight;\n }\n else {\n // If the option was scrolled to the middle of the panel using a scroll buffer,\n // its offset will be the scroll buffer minus the half height that was added to\n // center it.\n optionOffsetFromPanelTop = scrollBuffer - itemHeight / 2;\n }\n // The final offset is the option's offset from the top, adjusted for the height difference,\n // multiplied by -1 to ensure that the overlay moves in the correct direction up the page.\n // The value is rounded to prevent some browsers from blurring the content.\n return Math.round(optionOffsetFromPanelTop * -1 - optionHeightAdjustment);\n }\n /**\n * Checks that the attempted overlay position will fit within the viewport.\n * If it will not fit, tries to adjust the scroll position and the associated\n * y-offset so the panel can open fully on-screen. If it still won't fit,\n * sets the offset back to 0 to allow the fallback position to take over.\n */\n _checkOverlayWithinViewport(maxScroll) {\n const itemHeight = this._getItemHeight();\n const viewportSize = this._viewportRuler.getViewportSize();\n const topSpaceAvailable = this._triggerRect.top - SELECT_PANEL_VIEWPORT_PADDING;\n const bottomSpaceAvailable = viewportSize.height - this._triggerRect.bottom - SELECT_PANEL_VIEWPORT_PADDING;\n const panelHeightTop = Math.abs(this._offsetY);\n const totalPanelHeight = Math.min(this._getItemCount() * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const panelHeightBottom = totalPanelHeight - panelHeightTop - this._triggerRect.height;\n if (panelHeightBottom > bottomSpaceAvailable) {\n this._adjustPanelUp(panelHeightBottom, bottomSpaceAvailable);\n }\n else if (panelHeightTop > topSpaceAvailable) {\n this._adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll);\n }\n else {\n this._transformOrigin = this._getOriginBasedOnOption();\n }\n }\n /** Adjusts the overlay panel up to fit in the viewport. */\n _adjustPanelUp(panelHeightBottom, bottomSpaceAvailable) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceBelowViewport = Math.round(panelHeightBottom - bottomSpaceAvailable);\n // Scrolls the panel up by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel up into the viewport.\n this._scrollTop -= distanceBelowViewport;\n this._offsetY -= distanceBelowViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very top, it won't be able to fit the panel\n // by scrolling, so set the offset to 0 to allow the fallback position to take\n // effect.\n if (this._scrollTop <= 0) {\n this._scrollTop = 0;\n this._offsetY = 0;\n this._transformOrigin = `50% bottom 0px`;\n }\n }\n /** Adjusts the overlay panel down to fit in the viewport. */\n _adjustPanelDown(panelHeightTop, topSpaceAvailable, maxScroll) {\n // Browsers ignore fractional scroll offsets, so we need to round.\n const distanceAboveViewport = Math.round(panelHeightTop - topSpaceAvailable);\n // Scrolls the panel down by the distance it was extending past the boundary, then\n // adjusts the offset by that amount to move the panel down into the viewport.\n this._scrollTop += distanceAboveViewport;\n this._offsetY += distanceAboveViewport;\n this._transformOrigin = this._getOriginBasedOnOption();\n // If the panel is scrolled to the very bottom, it won't be able to fit the\n // panel by scrolling, so set the offset to 0 to allow the fallback position\n // to take effect.\n if (this._scrollTop >= maxScroll) {\n this._scrollTop = maxScroll;\n this._offsetY = 0;\n this._transformOrigin = `50% top 0px`;\n return;\n }\n }\n /** Calculates the scroll position and x- and y-offsets of the overlay panel. */\n _calculateOverlayPosition() {\n const itemHeight = this._getItemHeight();\n const items = this._getItemCount();\n const panelHeight = Math.min(items * itemHeight, SELECT_PANEL_MAX_HEIGHT);\n const scrollContainerHeight = items * itemHeight;\n // The farthest the panel can be scrolled before it hits the bottom\n const maxScroll = scrollContainerHeight - panelHeight;\n // If no value is selected we open the popup to the first item.\n let selectedOptionOffset;\n if (this.empty) {\n selectedOptionOffset = 0;\n }\n else {\n selectedOptionOffset = Math.max(this.options.toArray().indexOf(this._selectionModel.selected[0]), 0);\n }\n selectedOptionOffset += _countGroupLabelsBeforeOption(selectedOptionOffset, this.options, this.optionGroups);\n // We must maintain a scroll buffer so the selected option will be scrolled to the\n // center of the overlay panel rather than the top.\n const scrollBuffer = panelHeight / 2;\n this._scrollTop = this._calculateOverlayScroll(selectedOptionOffset, scrollBuffer, maxScroll);\n this._offsetY = this._calculateOverlayOffsetY(selectedOptionOffset, scrollBuffer, maxScroll);\n this._checkOverlayWithinViewport(maxScroll);\n }\n /** Sets the transform origin point based on the selected option. */\n _getOriginBasedOnOption() {\n const itemHeight = this._getItemHeight();\n const optionHeightAdjustment = (itemHeight - this._triggerRect.height) / 2;\n const originY = Math.abs(this._offsetY) - optionHeightAdjustment + itemHeight / 2;\n return `50% ${originY}px 0px`;\n }\n /** Calculates the height of the select's options. */\n _getItemHeight() {\n return this._triggerFontSize * SELECT_ITEM_HEIGHT_EM;\n }\n /** Calculates the amount of items in the select. This includes options and group labels. */\n _getItemCount() {\n return this.options.length + this.optionGroups.length;\n }\n}\nMatSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSelect, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatSelect, selector: \"mat-select\", inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", tabIndex: \"tabIndex\" }, host: { attributes: { \"role\": \"combobox\", \"aria-autocomplete\": \"none\", \"aria-haspopup\": \"true\" }, listeners: { \"keydown\": \"_handleKeydown($event)\", \"focus\": \"_onFocus()\", \"blur\": \"_onBlur()\" }, properties: { \"attr.id\": \"id\", \"attr.tabindex\": \"tabIndex\", \"attr.aria-controls\": \"panelOpen ? id + \\\"-panel\\\" : null\", \"attr.aria-expanded\": \"panelOpen\", \"attr.aria-label\": \"ariaLabel || null\", \"attr.aria-required\": \"required.toString()\", \"attr.aria-disabled\": \"disabled.toString()\", \"attr.aria-invalid\": \"errorState\", \"attr.aria-activedescendant\": \"_getAriaActiveDescendant()\", \"class.mat-select-disabled\": \"disabled\", \"class.mat-select-invalid\": \"errorState\", \"class.mat-select-required\": \"required\", \"class.mat-select-empty\": \"empty\", \"class.mat-select-multiple\": \"multiple\" }, classAttribute: \"mat-select\" }, providers: [\n { provide: MatFormFieldControl, useExisting: MatSelect },\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect },\n ], queries: [{ propertyName: \"customTrigger\", first: true, predicate: MAT_SELECT_TRIGGER, descendants: true }, { propertyName: \"options\", predicate: MatOption, descendants: true }, { propertyName: \"optionGroups\", predicate: MAT_OPTGROUP, descendants: true }], exportAs: [\"matSelect\"], usesInheritance: true, ngImport: i0, template: \"\\n
    \\n
    \\n {{placeholder}}\\n \\n {{triggerValue}}\\n \\n \\n
    \\n\\n
    \\n
    \\n\\n\\n
    \\n \\n \\n
    \\n
    \\n\\n\", styles: [\".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{height:16px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;margin:0 4px}.mat-form-field.mat-focused .mat-select-arrow{transform:translateX(0)}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px;outline:0}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px;display:inline-block;visibility:hidden}\"], dependencies: [{ kind: \"directive\", type: i7.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i7.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { kind: \"directive\", type: i7.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }, { kind: \"directive\", type: i7.NgSwitchDefault, selector: \"[ngSwitchDefault]\" }, { kind: \"directive\", type: i8.CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: [\"cdkConnectedOverlayOrigin\", \"cdkConnectedOverlayPositions\", \"cdkConnectedOverlayPositionStrategy\", \"cdkConnectedOverlayOffsetX\", \"cdkConnectedOverlayOffsetY\", \"cdkConnectedOverlayWidth\", \"cdkConnectedOverlayHeight\", \"cdkConnectedOverlayMinWidth\", \"cdkConnectedOverlayMinHeight\", \"cdkConnectedOverlayBackdropClass\", \"cdkConnectedOverlayPanelClass\", \"cdkConnectedOverlayViewportMargin\", \"cdkConnectedOverlayScrollStrategy\", \"cdkConnectedOverlayOpen\", \"cdkConnectedOverlayDisableClose\", \"cdkConnectedOverlayTransformOriginOn\", \"cdkConnectedOverlayHasBackdrop\", \"cdkConnectedOverlayLockPosition\", \"cdkConnectedOverlayFlexibleDimensions\", \"cdkConnectedOverlayGrowAfterOpen\", \"cdkConnectedOverlayPush\"], outputs: [\"backdropClick\", \"positionChange\", \"attach\", \"detach\", \"overlayKeydown\", \"overlayOutsideClick\"], exportAs: [\"cdkConnectedOverlay\"] }, { kind: \"directive\", type: i8.CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"] }], animations: [matSelectAnimations.transformPanelWrap, matSelectAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSelect, decorators: [{\n type: Component,\n args: [{ selector: 'mat-select', exportAs: 'matSelect', inputs: ['disabled', 'disableRipple', 'tabIndex'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n 'role': 'combobox',\n 'aria-autocomplete': 'none',\n // TODO(crisbeto): the value for aria-haspopup should be `listbox`, but currently it's difficult\n // to sync into Google, because of an outdated automated a11y check which flags it as an invalid\n // value. At some point we should try to switch it back to being `listbox`.\n 'aria-haspopup': 'true',\n 'class': 'mat-select',\n '[attr.id]': 'id',\n '[attr.tabindex]': 'tabIndex',\n '[attr.aria-controls]': 'panelOpen ? id + \"-panel\" : null',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.aria-required]': 'required.toString()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[attr.aria-activedescendant]': '_getAriaActiveDescendant()',\n '[class.mat-select-disabled]': 'disabled',\n '[class.mat-select-invalid]': 'errorState',\n '[class.mat-select-required]': 'required',\n '[class.mat-select-empty]': 'empty',\n '[class.mat-select-multiple]': 'multiple',\n '(keydown)': '_handleKeydown($event)',\n '(focus)': '_onFocus()',\n '(blur)': '_onBlur()',\n }, animations: [matSelectAnimations.transformPanelWrap, matSelectAnimations.transformPanel], providers: [\n { provide: MatFormFieldControl, useExisting: MatSelect },\n { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatSelect },\n ], template: \"\\n
    \\n
    \\n {{placeholder}}\\n \\n {{triggerValue}}\\n \\n \\n
    \\n\\n
    \\n
    \\n\\n\\n
    \\n \\n \\n
    \\n \\n\\n\", styles: [\".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{height:16px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;margin:0 4px}.mat-form-field.mat-focused .mat-select-arrow{transform:translateX(0)}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px;outline:0}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-select-min-line:empty::before{content:\\\" \\\";white-space:pre;width:1px;display:inline-block;visibility:hidden}\"] }]\n }], propDecorators: { options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }], optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], customTrigger: [{\n type: ContentChild,\n args: [MAT_SELECT_TRIGGER]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSelectModule {\n}\nMatSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSelectModule, declarations: [MatSelect, MatSelectTrigger], imports: [CommonModule, OverlayModule, MatOptionModule, MatCommonModule], exports: [CdkScrollableModule,\n MatFormFieldModule,\n MatSelect,\n MatSelectTrigger,\n MatOptionModule,\n MatCommonModule] });\nMatSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSelectModule, providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER], imports: [CommonModule, OverlayModule, MatOptionModule, MatCommonModule, CdkScrollableModule,\n MatFormFieldModule,\n MatOptionModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSelectModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, OverlayModule, MatOptionModule, MatCommonModule],\n exports: [\n CdkScrollableModule,\n MatFormFieldModule,\n MatSelect,\n MatSelectTrigger,\n MatOptionModule,\n MatCommonModule,\n ],\n declarations: [MatSelect, MatSelectTrigger],\n providers: [MAT_SELECT_SCROLL_STRATEGY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SELECT_CONFIG, MAT_SELECT_SCROLL_STRATEGY, MAT_SELECT_SCROLL_STRATEGY_PROVIDER, MAT_SELECT_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_SELECT_TRIGGER, MatSelect, MatSelectChange, MatSelectModule, MatSelectTrigger, _MatSelectBase, matSelectAnimations };\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule, Meta } from '@angular/platform-browser';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { HeaderComponent } from './components/header/header.component';\r\nimport { FooterComponent } from './components/footer/footer.component';\r\nimport { LatestnewsComponent } from './components/latestnews/latestnews.component';\r\nimport { RelatedlinksComponent } from './components/relatedlinks/relatedlinks.component';\r\nimport { StatisticsComponent } from './components/statistics/statistics.component';\r\nimport { CarouselComponent } from './components/carousel/carousel.component';\r\nimport { SurvayComponent } from './components/survay/survay.component';\r\nimport { AuthInterceptorInterceptor } from './auth-interceptor.interceptor';\r\nimport { HomeComponent } from './components/home/home.component';\r\nimport { CentersComponent } from './components/centers/centers.component';\r\nimport { AboutCenterComponent } from './components/centers/about-center/about-center.component';\r\nimport { ProductsComponent } from './components/products/products.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Ng2SearchPipeModule } from 'ng2-search-filter';\r\n\r\nimport { ProductsonhomeComponent } from './components/productsonhome/productsonhome.component';\r\n\r\nimport { CenterLeaderComponent } from './components/center-leader/center-leader.component';\r\nimport { CenterServicesComponent } from './components/center-services/center-services.component';\r\nimport { QiyasComponent } from './components/eteccenters/qiyas/qiyas.component';\r\nimport { NcaaComponent } from './components/eteccenters/ncaa/ncaa.component';\r\nimport { NcseeComponent } from './components/eteccenters/ncsee/ncsee.component';\r\nimport { MasarComponent } from './components/eteccenters/masar/masar.component';\r\n\r\nimport { AboutComponent } from './components/about/about.component';\r\nimport { EstablishingComponent } from './components/establishing/establishing.component';\r\nimport { BoardComponent } from './components/board/board.component';\r\nimport { OrganizationalchartComponent } from './components/organizationalchart/organizationalchart.component';\r\nimport { VisionComponent } from './components/vision/vision.component';\r\nimport { EtecComponent } from './components/eteccenters/etec/etec.component';\r\nimport { NewsComponent } from './components/news/news.component';\r\nimport { ContactUsComponent } from './components/contact-us/contact-us.component';\r\n\r\nimport { MediacenterComponent } from './components/mediacenter/mediacenter.component';\r\nimport { InfographicComponent } from './components/infographic/infographic.component';\r\nimport { VideolibraryComponent } from './components/videolibrary/videolibrary.component';\r\nimport { NgHttpLoaderModule } from 'ng-http-loader';\r\n \r\nimport { IdentityguidelineComponent } from './components/identityguideline/identityguideline.component';\r\nimport { AllnewsComponent } from './components/allnews/allnews.component';\r\nimport { ProductAccreditationComponent } from './components/product-accreditation/product-accreditation.component';\r\nimport { ProductQiyasComponent } from './components/product-qiyas/product-qiyas.component';\r\nimport { PartnersComponent } from './components/partners/partners.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ServiceDetailsComponent } from './components/service-details/service-details.component';\r\n\r\nimport {NgxPrintModule} from 'ngx-print';\r\n\r\nimport { BrowserAnimationsModule } from'@angular/platform-browser/animations';\r\nimport { DataComponent } from './components/reports/data/data.component';\r\nimport { PublicResearchComponent } from './components/reports/public-research/public-research.component';\r\nimport { ReportsResearchComponent } from './components/reports/reports-research/reports-research.component';\r\nimport { ReportsComponent } from './components/reports/reports/reports.component';\r\nimport { ScientificActivityComponent } from './components/reports/scientific-activity/scientific-activity.component';\r\nimport { ShareiconsComponent } from './components/shareicons/shareicons.component';\r\nimport { AccreditationresultComponent } from './components/accreditationresult/accreditationresult.component';\r\nimport { ProgramsaccrediationComponent } from './components/programsaccrediation/programsaccrediation.component';\r\nimport { InstitutionaccrediationComponent } from './components/institutionaccrediation/institutionaccrediation.component';\r\nimport { NotfoundComponent } from './components/shared/notfound/notfound.component';\r\nimport { PrivcayComponent } from './components/shared/privcay/privcay.component';\r\nimport { ConferenceComponent } from './components/reports/conference/conference.component';\r\nimport { WorkshopComponent } from './components/reports/workshop/workshop.component';\r\nimport { FAQComponent } from './components/shared/faq/faq.component';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { SwiperModule } from \"swiper/angular\";\r\nimport { ImportantlinksComponent } from './components/importantlinks/importantlinks.component';\r\nimport { PublicationsandreleasesComponent } from './components/publicationsandreleases/publicationsandreleases.component'\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { RelatednewsComponent } from './components/relatednews/relatednews.component';\r\nimport { ShareButtonsModule } from 'ngx-sharebuttons/buttons';\r\nimport { ShareIconsModule } from 'ngx-sharebuttons/icons';\r\n//import { QRCodeModule } from 'angularx-qrcode';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\r\nimport { MatFormFieldModule} from '@angular/material/form-field';\r\nimport {MatSelectModule} from '@angular/material/select';\r\n\r\nimport { CenterDetailsComponent } from './components/center-details/center-details.component';\r\nimport { NcmaaComponent } from './components/eteccenters/ncmaa/ncmaa.component';\r\n//import { NgxSpinnerModule } from \"ngx-spinner\";\r\n//import { NgxLoadingXModule } from 'ngx-loading-x';\r\nimport { ConnectComponent } from './components/connect/connect.component';\r\n//import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\nimport { SpinnerComponent } from './components/spinner/spinner.component';\r\nimport { ComboboxComponent } from './components/combobox/combobox.component';\r\nimport { LightgalleryModule } from 'lightgallery/angular';\r\nimport { PageComponent } from './page/page.component';\r\nimport { ServicecatalogComponent } from './components/service-catalog/servicecatalog/servicecatalog.component';\r\nimport { ServicecatalogdetailsComponent } from './components/service-catalog/servicecatalogdetails/servicecatalogdetails.component';\r\nimport { CenterServiceCatalogComponent } from './components/center-service-catalog/center-service-catalog.component';\r\nimport { LightgalleryComponent } from './lightgallery/lightgallery.component';\r\nimport { ScrollTotopComponent } from './components/scroll-totop/scroll-totop.component';\r\nimport { DynamicnavComponent } from './components/dynamicnav/dynamicnav.component';\r\nimport { DynamicCenterComponent } from './components/dynamic-center/dynamic-center.component';\r\nimport { GreatingsComponent } from './components/greatings/greatings.component';\r\nimport { ThemeMenuComponent } from './components/theme-menu/theme-menu.component';\r\nimport { GoalsComponent } from './components/service/goals/goals.component';\r\nimport { AudienceComponent } from './components/service/audience/audience.component';\r\nimport { TargetedSectorComponent } from './components/service/targeted-sector/targeted-sector.component';\r\nimport { StepsComponent } from './components/service/steps/steps.component';\r\nimport { ContentComponent } from './components/service/content/content.component';\r\nimport { NotesComponent } from './components/service/notes/notes.component';\r\nimport { PrerequirementsComponent } from './components/service/prerequirements/prerequirements.component';\r\nimport { DocumentComponent } from './components/service/document/document.component';\r\nimport { TestTimetableComponent } from './components/service/test-timetable/test-timetable.component';\r\n// import { FaqComponent } from './components/service/faq/faq.component';\r\nimport { RelatedserviceGuidComponent } from './components/service/relatedservice-guid/relatedservice-guid.component';\r\nimport { FaqListComponent } from './components/service/faq-list/faq-list.component';\r\nimport { DynamicDocumentComponent } from './components/dynamic-document/dynamic-document.component';\r\nimport { CustomServiceComponent } from './custom-service/custom-service.component';\r\nimport { ResearchPrizeComponent } from './forms/research-prize/research-prize.component';\r\nimport { ReactiveFormComponent } from './forms/reactive-form/reactive-form.component';\r\nimport { ResearcherComponent } from './forms/researcher/researcher.component';\r\nimport { ResearcherListComponent } from './forms/researcher-list/researcher-list.component';\r\nimport { ResearchDetailsComponent } from './forms/research-details/research-details.component';\r\nimport { TranscriptsComponent } from './components/transcripts/transcripts.component';\r\nimport { OpenDataAllComponent } from './components/reports/open-data-all/open-data-all.component';\r\nimport { OdatagroupComponent } from './components/reports/odatagroup/odatagroup.component';\r\nimport { CeoComponent } from './components/ceo/ceo.component';\r\nimport { OdatarequestComponent } from './components/reports/odatarequest/odatarequest.component';\r\nimport { SecComponent } from './components/sec/sec.component';\r\nimport { SecRegistrationComponent } from './components/sec-registration/sec-registration.component';\r\nimport { SEFComponent } from './components/sef/sef.component';\r\nimport { SEFRegistrationComponent } from './components/sefregistration/sefregistration.component';\r\nimport { SEFBadgeComponent } from './components/sefbadge/sefbadge.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HeaderComponent,\r\n FooterComponent,\r\n HomeComponent,\r\n LatestnewsComponent,\r\n RelatedlinksComponent,\r\n StatisticsComponent,\r\n CarouselComponent,\r\n SurvayComponent,\r\n CentersComponent,\r\n AboutCenterComponent,\r\n ProductsComponent,\r\n ProductsonhomeComponent,\r\n CenterLeaderComponent,\r\n CenterServicesComponent,\r\n QiyasComponent,\r\n NcaaComponent,\r\n NcseeComponent,\r\n MasarComponent,\r\n AboutComponent,\r\n EstablishingComponent,\r\n BoardComponent,\r\n OrganizationalchartComponent,\r\n VisionComponent,\r\n EtecComponent,\r\n NewsComponent,\r\n ContactUsComponent,\r\n MediacenterComponent,\r\n InfographicComponent,\r\n VideolibraryComponent,\r\n \r\n IdentityguidelineComponent,\r\n AllnewsComponent,\r\n ProductAccreditationComponent,\r\n ProductQiyasComponent,\r\n PartnersComponent,\r\n ServiceDetailsComponent,\r\n DataComponent,\r\n PublicResearchComponent,\r\n ReportsResearchComponent,\r\n ReportsComponent,\r\n ScientificActivityComponent,\r\n AccreditationresultComponent,\r\n ProgramsaccrediationComponent,\r\n InstitutionaccrediationComponent,\r\n NotfoundComponent,\r\n PrivcayComponent,\r\n ConferenceComponent,\r\n WorkshopComponent,\r\n FAQComponent,\r\n ImportantlinksComponent,\r\n PublicationsandreleasesComponent,\r\n RelatednewsComponent,\r\n CenterDetailsComponent,\r\n NcmaaComponent,\r\n ConnectComponent,\r\n SpinnerComponent,\r\n ComboboxComponent,\r\n PageComponent,\r\n ServicecatalogComponent,\r\n ServicecatalogdetailsComponent,\r\n CenterServiceCatalogComponent,\r\n LightgalleryComponent,\r\n ScrollTotopComponent,\r\n DynamicnavComponent,\r\n DynamicCenterComponent,\r\n GreatingsComponent,\r\n ThemeMenuComponent,\r\n GoalsComponent,\r\n AudienceComponent,\r\n TargetedSectorComponent,\r\n StepsComponent,\r\n ContentComponent,\r\n NotesComponent,\r\n PrerequirementsComponent,\r\n DocumentComponent,\r\n TestTimetableComponent,\r\n //FaqComponent,\r\n RelatedserviceGuidComponent,\r\n FaqListComponent,\r\n DynamicDocumentComponent,\r\n CustomServiceComponent,\r\n ResearchPrizeComponent,\r\n ReactiveFormComponent,\r\n ResearcherComponent,\r\n ResearcherListComponent,\r\n ResearchDetailsComponent,\r\n TranscriptsComponent,\r\n OpenDataAllComponent,\r\n OdatagroupComponent,\r\n CeoComponent,\r\n OdatarequestComponent,\r\n SecComponent,\r\n SecRegistrationComponent,\r\n SEFComponent,\r\n SEFRegistrationComponent,\r\n SEFBadgeComponent\r\n ],\r\n \r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n FormsModule,\r\n Ng2SearchPipeModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n NgxPrintModule,\r\n NgbModule,\r\n BrowserAnimationsModule,\r\n ShareButtonsModule,\r\n ShareIconsModule,\r\n NgbModule,\r\n LightgalleryModule,\r\n SwiperModule,\r\n ToastrModule.forRoot(),\r\n NgHttpLoaderModule.forRoot(),\r\n ShareiconsComponent\r\n ],\r\n bootstrap: [AppComponent],\r\n providers: [\r\n CookieService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthInterceptorInterceptor,\r\n multi: true\r\n },\r\n Meta\r\n ]\r\n})\r\nexport class AppModule { }\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","(function (global) {\n 'use strict';\n\n var util = newUtil();\n var inliner = newInliner();\n var fontFaces = newFontFaces();\n var images = newImages();\n\n // Default impl options\n var defaultOptions = {\n // Default is to fail on error, no placeholder\n imagePlaceholder: undefined,\n // Default cache bust is false, it will use the cache\n cacheBust: false\n };\n\n var domtoimage = {\n toSvg: toSvg,\n toPng: toPng,\n toJpeg: toJpeg,\n toBlob: toBlob,\n toPixelData: toPixelData,\n impl: {\n fontFaces: fontFaces,\n images: images,\n util: util,\n inliner: inliner,\n options: {}\n }\n };\n\n if (typeof module !== 'undefined')\n module.exports = domtoimage;\n else\n global.domtoimage = domtoimage;\n\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options\n * @param {Function} options.filter - Should return true if passed node should be included in the output\n * (excluding node means excluding it's children as well). Not called on the root node.\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n * @param {Number} options.width - width to be applied to node before rendering.\n * @param {Number} options.height - height to be applied to node before rendering.\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n defaults to 1.0.\n * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n * */\n function toSvg(node, options) {\n options = options || {};\n copyOptions(options);\n return Promise.resolve(node)\n .then(function (node) {\n return cloneNode(node, options.filter, true);\n })\n .then(embedFonts)\n .then(inlineImages)\n .then(applyOptions)\n .then(function (clone) {\n return makeSvgDataUri(clone,\n options.width || util.width(node),\n options.height || util.height(node)\n );\n });\n\n function applyOptions(clone) {\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n if (options.width) clone.style.width = options.width + 'px';\n if (options.height) clone.style.height = options.height + 'px';\n\n if (options.style)\n Object.keys(options.style).forEach(function (property) {\n clone.style[property] = options.style[property];\n });\n\n return clone;\n }\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n * */\n function toPixelData(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.getContext('2d').getImageData(\n 0,\n 0,\n util.width(node),\n util.height(node)\n ).data;\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n * */\n function toPng(node, options) {\n return draw(node, options || {})\n .then(function (canvas) {\n return canvas.toDataURL();\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n * */\n function toJpeg(node, options) {\n options = options || {};\n return draw(node, options)\n .then(function (canvas) {\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\n });\n }\n\n /**\n * @param {Node} node - The DOM Node object to render\n * @param {Object} options - Rendering options, @see {@link toSvg}\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\n * */\n function toBlob(node, options) {\n return draw(node, options || {})\n .then(util.canvasToBlob);\n }\n\n function copyOptions(options) {\n // Copy options to impl options for use in impl\n if(typeof(options.imagePlaceholder) === 'undefined') {\n domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;\n } else {\n domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n }\n\n if(typeof(options.cacheBust) === 'undefined') {\n domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n } else {\n domtoimage.impl.options.cacheBust = options.cacheBust;\n }\n }\n\n function draw(domNode, options) {\n return toSvg(domNode, options)\n .then(util.makeImage)\n .then(util.delay(100))\n .then(function (image) {\n var canvas = newCanvas(domNode);\n canvas.getContext('2d').drawImage(image, 0, 0);\n return canvas;\n });\n\n function newCanvas(domNode) {\n var canvas = document.createElement('canvas');\n canvas.width = options.width || util.width(domNode);\n canvas.height = options.height || util.height(domNode);\n\n if (options.bgcolor) {\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = options.bgcolor;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n }\n\n return canvas;\n }\n }\n\n function cloneNode(node, filter, root) {\n if (!root && filter && !filter(node)) return Promise.resolve();\n\n return Promise.resolve(node)\n .then(makeNodeCopy)\n .then(function (clone) {\n return cloneChildren(node, clone, filter);\n })\n .then(function (clone) {\n return processClone(node, clone);\n });\n\n function makeNodeCopy(node) {\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\n return node.cloneNode(false);\n }\n\n function cloneChildren(original, clone, filter) {\n var children = original.childNodes;\n if (children.length === 0) return Promise.resolve(clone);\n\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\n .then(function () {\n return clone;\n });\n\n function cloneChildrenInOrder(parent, children, filter) {\n var done = Promise.resolve();\n children.forEach(function (child) {\n done = done\n .then(function () {\n return cloneNode(child, filter);\n })\n .then(function (childClone) {\n if (childClone) parent.appendChild(childClone);\n });\n });\n return done;\n }\n }\n\n function processClone(original, clone) {\n if (!(clone instanceof Element)) return clone;\n\n return Promise.resolve()\n .then(cloneStyle)\n .then(clonePseudoElements)\n .then(copyUserInput)\n .then(fixSvg)\n .then(function () {\n return clone;\n });\n\n function cloneStyle() {\n copyStyle(window.getComputedStyle(original), clone.style);\n\n function copyStyle(source, target) {\n if (source.cssText) target.cssText = source.cssText;\n else copyProperties(source, target);\n\n function copyProperties(source, target) {\n util.asArray(source).forEach(function (name) {\n target.setProperty(\n name,\n source.getPropertyValue(name),\n source.getPropertyPriority(name)\n );\n });\n }\n }\n }\n\n function clonePseudoElements() {\n [':before', ':after'].forEach(function (element) {\n clonePseudoElement(element);\n });\n\n function clonePseudoElement(element) {\n var style = window.getComputedStyle(original, element);\n var content = style.getPropertyValue('content');\n\n if (content === '' || content === 'none') return;\n\n var className = util.uid();\n clone.className = clone.className + ' ' + className;\n var styleElement = document.createElement('style');\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\n clone.appendChild(styleElement);\n\n function formatPseudoElementStyle(className, element, style) {\n var selector = '.' + className + ':' + element;\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\n return document.createTextNode(selector + '{' + cssText + '}');\n\n function formatCssText(style) {\n var content = style.getPropertyValue('content');\n return style.cssText + ' content: ' + content + ';';\n }\n\n function formatCssProperties(style) {\n\n return util.asArray(style)\n .map(formatProperty)\n .join('; ') + ';';\n\n function formatProperty(name) {\n return name + ': ' +\n style.getPropertyValue(name) +\n (style.getPropertyPriority(name) ? ' !important' : '');\n }\n }\n }\n }\n }\n\n function copyUserInput() {\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\n }\n\n function fixSvg() {\n if (!(clone instanceof SVGElement)) return;\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (!(clone instanceof SVGRectElement)) return;\n ['width', 'height'].forEach(function (attribute) {\n var value = clone.getAttribute(attribute);\n if (!value) return;\n\n clone.style.setProperty(attribute, value);\n });\n }\n }\n }\n\n function embedFonts(node) {\n return fontFaces.resolveAll()\n .then(function (cssText) {\n var styleNode = document.createElement('style');\n node.appendChild(styleNode);\n styleNode.appendChild(document.createTextNode(cssText));\n return node;\n });\n }\n\n function inlineImages(node) {\n return images.inlineAll(node)\n .then(function () {\n return node;\n });\n }\n\n function makeSvgDataUri(node, width, height) {\n return Promise.resolve(node)\n .then(function (node) {\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n return new XMLSerializer().serializeToString(node);\n })\n .then(util.escapeXhtml)\n .then(function (xhtml) {\n return '' + xhtml + '';\n })\n .then(function (foreignObject) {\n return '' +\n foreignObject + '';\n })\n .then(function (svg) {\n return 'data:image/svg+xml;charset=utf-8,' + svg;\n });\n }\n\n function newUtil() {\n return {\n escape: escape,\n parseExtension: parseExtension,\n mimeType: mimeType,\n dataAsUrl: dataAsUrl,\n isDataUrl: isDataUrl,\n canvasToBlob: canvasToBlob,\n resolveUrl: resolveUrl,\n getAndEncode: getAndEncode,\n uid: uid(),\n delay: delay,\n asArray: asArray,\n escapeXhtml: escapeXhtml,\n makeImage: makeImage,\n width: width,\n height: height\n };\n\n function mimes() {\n /*\n * Only WOFF and EOT mime types for fonts are 'real'\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\n */\n var WOFF = 'application/font-woff';\n var JPEG = 'image/jpeg';\n\n return {\n 'woff': WOFF,\n 'woff2': WOFF,\n 'ttf': 'application/font-truetype',\n 'eot': 'application/vnd.ms-fontobject',\n 'png': 'image/png',\n 'jpg': JPEG,\n 'jpeg': JPEG,\n 'gif': 'image/gif',\n 'tiff': 'image/tiff',\n 'svg': 'image/svg+xml'\n };\n }\n\n function parseExtension(url) {\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\n if (match) return match[1];\n else return '';\n }\n\n function mimeType(url) {\n var extension = parseExtension(url).toLowerCase();\n return mimes()[extension] || '';\n }\n\n function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n }\n\n function toBlob(canvas) {\n return new Promise(function (resolve) {\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\n var length = binaryString.length;\n var binaryArray = new Uint8Array(length);\n\n for (var i = 0; i < length; i++)\n binaryArray[i] = binaryString.charCodeAt(i);\n\n resolve(new Blob([binaryArray], {\n type: 'image/png'\n }));\n });\n }\n\n function canvasToBlob(canvas) {\n if (canvas.toBlob)\n return new Promise(function (resolve) {\n canvas.toBlob(resolve);\n });\n\n return toBlob(canvas);\n }\n\n function resolveUrl(url, baseUrl) {\n var doc = document.implementation.createHTMLDocument();\n var base = doc.createElement('base');\n doc.head.appendChild(base);\n var a = doc.createElement('a');\n doc.body.appendChild(a);\n base.href = baseUrl;\n a.href = url;\n return a.href;\n }\n\n function uid() {\n var index = 0;\n\n return function () {\n return 'u' + fourRandomChars() + index++;\n\n function fourRandomChars() {\n /* see http://stackoverflow.com/a/6248722/2519373 */\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\n }\n };\n }\n\n function makeImage(uri) {\n return new Promise(function (resolve, reject) {\n var image = new Image();\n image.onload = function () {\n resolve(image);\n };\n image.onerror = reject;\n image.src = uri;\n });\n }\n\n function getAndEncode(url) {\n var TIMEOUT = 30000;\n if(domtoimage.impl.options.cacheBust) {\n // Cache bypass so we dont have CORS issues with cached images\n // Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n url += ((/\\?/).test(url) ? \"&\" : \"?\") + (new Date()).getTime();\n }\n\n return new Promise(function (resolve) {\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = done;\n request.ontimeout = timeout;\n request.responseType = 'blob';\n request.timeout = TIMEOUT;\n request.open('GET', url, true);\n request.send();\n\n var placeholder;\n if(domtoimage.impl.options.imagePlaceholder) {\n var split = domtoimage.impl.options.imagePlaceholder.split(/,/);\n if(split && split[1]) {\n placeholder = split[1];\n }\n }\n\n function done() {\n if (request.readyState !== 4) return;\n\n if (request.status !== 200) {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\n }\n\n return;\n }\n\n var encoder = new FileReader();\n encoder.onloadend = function () {\n var content = encoder.result.split(/,/)[1];\n resolve(content);\n };\n encoder.readAsDataURL(request.response);\n }\n\n function timeout() {\n if(placeholder) {\n resolve(placeholder);\n } else {\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\n }\n }\n\n function fail(message) {\n console.error(message);\n resolve('');\n }\n });\n }\n\n function dataAsUrl(content, type) {\n return 'data:' + type + ';base64,' + content;\n }\n\n function escape(string) {\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }\n\n function delay(ms) {\n return function (arg) {\n return new Promise(function (resolve) {\n setTimeout(function () {\n resolve(arg);\n }, ms);\n });\n };\n }\n\n function asArray(arrayLike) {\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\n return array;\n }\n\n function escapeXhtml(string) {\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n }\n\n function width(node) {\n var leftBorder = px(node, 'border-left-width');\n var rightBorder = px(node, 'border-right-width');\n return node.scrollWidth + leftBorder + rightBorder;\n }\n\n function height(node) {\n var topBorder = px(node, 'border-top-width');\n var bottomBorder = px(node, 'border-bottom-width');\n return node.scrollHeight + topBorder + bottomBorder;\n }\n\n function px(node, styleProperty) {\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\n return parseFloat(value.replace('px', ''));\n }\n }\n\n function newInliner() {\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n return {\n inlineAll: inlineAll,\n shouldProcess: shouldProcess,\n impl: {\n readUrls: readUrls,\n inline: inline\n }\n };\n\n function shouldProcess(string) {\n return string.search(URL_REGEX) !== -1;\n }\n\n function readUrls(string) {\n var result = [];\n var match;\n while ((match = URL_REGEX.exec(string)) !== null) {\n result.push(match[1]);\n }\n return result.filter(function (url) {\n return !util.isDataUrl(url);\n });\n }\n\n function inline(string, url, baseUrl, get) {\n return Promise.resolve(url)\n .then(function (url) {\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\n })\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(url));\n })\n .then(function (dataUrl) {\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\n });\n\n function urlAsRegex(url) {\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\n }\n }\n\n function inlineAll(string, baseUrl, get) {\n if (nothingToInline()) return Promise.resolve(string);\n\n return Promise.resolve(string)\n .then(readUrls)\n .then(function (urls) {\n var done = Promise.resolve(string);\n urls.forEach(function (url) {\n done = done.then(function (string) {\n return inline(string, url, baseUrl, get);\n });\n });\n return done;\n });\n\n function nothingToInline() {\n return !shouldProcess(string);\n }\n }\n }\n\n function newFontFaces() {\n return {\n resolveAll: resolveAll,\n impl: {\n readAll: readAll\n }\n };\n\n function resolveAll() {\n return readAll(document)\n .then(function (webFonts) {\n return Promise.all(\n webFonts.map(function (webFont) {\n return webFont.resolve();\n })\n );\n })\n .then(function (cssStrings) {\n return cssStrings.join('\\n');\n });\n }\n\n function readAll() {\n return Promise.resolve(util.asArray(document.styleSheets))\n .then(getCssRules)\n .then(selectWebFontRules)\n .then(function (rules) {\n return rules.map(newWebFont);\n });\n\n function selectWebFontRules(cssRules) {\n return cssRules\n .filter(function (rule) {\n return rule.type === CSSRule.FONT_FACE_RULE;\n })\n .filter(function (rule) {\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\n });\n }\n\n function getCssRules(styleSheets) {\n var cssRules = [];\n styleSheets.forEach(function (sheet) {\n try {\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\n } catch (e) {\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\n }\n });\n return cssRules;\n }\n\n function newWebFont(webFontRule) {\n return {\n resolve: function resolve() {\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\n },\n src: function () {\n return webFontRule.style.getPropertyValue('src');\n }\n };\n }\n }\n }\n\n function newImages() {\n return {\n inlineAll: inlineAll,\n impl: {\n newImage: newImage\n }\n };\n\n function newImage(element) {\n return {\n inline: inline\n };\n\n function inline(get) {\n if (util.isDataUrl(element.src)) return Promise.resolve();\n\n return Promise.resolve(element.src)\n .then(get || util.getAndEncode)\n .then(function (data) {\n return util.dataAsUrl(data, util.mimeType(element.src));\n })\n .then(function (dataUrl) {\n return new Promise(function (resolve, reject) {\n element.onload = resolve;\n element.onerror = reject;\n element.src = dataUrl;\n });\n });\n }\n }\n\n function inlineAll(node) {\n if (!(node instanceof Element)) return Promise.resolve(node);\n\n return inlineBackground(node)\n .then(function () {\n if (node instanceof HTMLImageElement)\n return newImage(node).inline();\n else\n return Promise.all(\n util.asArray(node.childNodes).map(function (child) {\n return inlineAll(child);\n })\n );\n });\n\n function inlineBackground(node) {\n var background = node.style.getPropertyValue('background');\n\n if (!background) return Promise.resolve(node);\n\n return inliner.inlineAll(background)\n .then(function (inlined) {\n node.style.setProperty(\n 'background',\n inlined,\n node.style.getPropertyPriority('background')\n );\n })\n .then(function () {\n return node;\n });\n }\n }\n }\n})(this);\n","import { Injectable, NgModule, Pipe } from '@angular/core';\n\nimport * as ɵngcc0 from '@angular/core';\nclass Ng2SearchPipe {\n /**\n * @param {?} items object from array\n * @param {?} term term's search\n * @return {?}\n */\n transform(items, term) {\n if (!term || !items)\n return items;\n return Ng2SearchPipe.filter(items, term);\n }\n /**\n *\n * @param {?} items List of items to filter\n * @param {?} term a string term to compare with every property of the list\n *\n * @return {?}\n */\n static filter(items, term) {\n const /** @type {?} */ toCompare = term.toLowerCase();\n /**\n * @param {?} item\n * @param {?} term\n * @return {?}\n */\n function checkInside(item, term) {\n for (let /** @type {?} */ property in item) {\n if (item[property] === null || item[property] == undefined) {\n continue;\n }\n if (typeof item[property] === 'object') {\n if (checkInside(item[property], term)) {\n return true;\n }\n }\n if (item[property].toString().toLowerCase().includes(toCompare)) {\n return true;\n }\n }\n return false;\n }\n return items.filter(function (item) {\n return checkInside(item, term);\n });\n }\n}\nNg2SearchPipe.ɵfac = function Ng2SearchPipe_Factory(t) { return new (t || Ng2SearchPipe)(); };\nNg2SearchPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"filter\", type: Ng2SearchPipe, pure: false });\nNg2SearchPipe.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: Ng2SearchPipe, factory: Ng2SearchPipe.ɵfac });\n/**\n * @nocollapse\n */\nNg2SearchPipe.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Ng2SearchPipe, [{\n type: Pipe,\n args: [{\n name: 'filter',\n pure: false\n }]\n }, {\n type: Injectable\n }], null, null); })();\n\nclass Ng2SearchPipeModule {\n}\nNg2SearchPipeModule.ɵfac = function Ng2SearchPipeModule_Factory(t) { return new (t || Ng2SearchPipeModule)(); };\nNg2SearchPipeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: Ng2SearchPipeModule });\nNg2SearchPipeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n/**\n * @nocollapse\n */\nNg2SearchPipeModule.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Ng2SearchPipeModule, [{\n type: NgModule,\n args: [{\n declarations: [Ng2SearchPipe],\n exports: [Ng2SearchPipe]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(Ng2SearchPipeModule, { declarations: [Ng2SearchPipe], exports: [Ng2SearchPipe] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Ng2SearchPipeModule, Ng2SearchPipe };\n\n","import { Subject } from './Subject';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n getValue() {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n next(value) {\n super.next((this._value = value));\n }\n}\n","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nexport class Observable {\n constructor(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n this._subscribe(subscriber)\n :\n this._trySubscribe(subscriber));\n });\n return subscriber;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n });\n }\n _subscribe(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => (value = x), (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n","import { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class ReplaySubject extends Subject {\n constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = dateTimestampProvider) {\n super();\n this._bufferSize = _bufferSize;\n this._windowTime = _windowTime;\n this._timestampProvider = _timestampProvider;\n this._buffer = [];\n this._infiniteTimeWindow = true;\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n next(value) {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n const subscription = this._innerSubscribe(subscriber);\n const { _infiniteTimeWindow, _buffer } = this;\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n }\n _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n","import { createErrorClass } from './createErrorClass';\nexport const ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n});\n","import { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nexport class Subject extends Observable {\n constructor() {\n super();\n this.closed = false;\n this.currentObservers = null;\n this.observers = [];\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n next(value) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n error(err) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n }\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n }\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n }\n get observed() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n }\n _trySubscribe(subscriber) {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n _innerSubscribe(subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n _checkFinalizedStatuses(subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n }\n error(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n }\n complete() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n _subscribe(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n }\n}\n","export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nexport class Subscriber extends Subscription {\n constructor(destination) {\n super();\n this.isStopped = false;\n if (destination) {\n this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(this);\n }\n }\n else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n static create(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n }\n next(value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n }\n error(err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null;\n }\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n _complete() {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n }\n}\nconst _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nclass ConsumerObserver {\n constructor(partialObserver) {\n this.partialObserver = partialObserver;\n }\n next(value) {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n error(err) {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n }\n complete() {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(observerOrNext, error, complete) {\n super();\n let partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined,\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n let context;\n if (this && config.useDeprecatedNextContext) {\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\nexport const EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { createErrorClass } from './createErrorClass';\nexport const UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n});\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nexport class Subscription {\n constructor(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n unsubscribe() {\n let errors;\n if (!this.closed) {\n this.closed = true;\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n add(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n }\n _hasParent(parent) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n _addParent(parent) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n _removeParent(parent) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n remove(teardown) {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\nSubscription.EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n})();\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n","export const config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest(...args) {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n const { args: observables, keys } = argsArgArrayOrObject(args);\n if (observables.length === 0) {\n return from([], scheduler);\n }\n const result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n (values) => createObject(keys, values)\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform = identity) {\n return (subscriber) => {\n maybeSchedule(scheduler, () => {\n const { length } = observables;\n const values = new Array(length);\n let active = length;\n let remainingFirstValues = length;\n for (let i = 0; i < length; i++) {\n maybeSchedule(scheduler, () => {\n const source = from(observables[i], scheduler);\n let hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, () => {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat(...args) {\n return concatAll()(from(args, popScheduler(args)));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nexport function defer(observableFactory) {\n return new Observable((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable((subscriber) => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable((subscriber) => scheduler.schedule(() => subscriber.complete()));\n}\n","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)));\n });\n}\n","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, () => {\n iterator.next().then((result) => {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable((subscriber) => {\n let i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable((subscriber) => {\n let iterator;\n executeSchedule(subscriber, scheduler, () => {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, () => {\n let value;\n let done;\n try {\n ({ value, done } = iterator.next());\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return () => isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();\n });\n}\n","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge(...args) {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of(...args) {\n const scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init, 0, subscriber) : init);\n}\n","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n","import { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexport class OperatorSubscriber extends Subscriber {\n constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n super(destination);\n this.onFinalize = onFinalize;\n this.shouldUnsubscribe = shouldUnsubscribe;\n this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n unsubscribe() {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n }\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate((source, subscriber) => {\n let innerSub = null;\n let syncUnsub = false;\n let handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return (source) => concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n return mergeMap((value, index) => delayDurationSelector(value, index).pipe(take(1), mapTo(value)));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler = asyncScheduler) {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value)));\n });\n}\n","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate((source, subscriber) => {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n","import { map } from './map';\nexport function mapTo(value) {\n return map(() => value);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Infinity) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent = Infinity) {\n if (isFunction(resultSelector)) {\n return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n const buffer = [];\n let active = 0;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n const outerNext = (value) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n const doInnerSub = (value) => {\n expand && subscriber.next(value);\n active++;\n let innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, () => {\n innerComplete = true;\n }, undefined, () => {\n if (innerComplete) {\n try {\n active--;\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n }\n else {\n doInnerSub(bufferedValue);\n }\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => {\n isComplete = true;\n checkComplete();\n }));\n return () => {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n","import { from } from '../observable/from';\nimport { take } from '../operators/take';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options = {}) {\n const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n return (wrapperSource) => {\n let connection = null;\n let resetConnection = null;\n let subject = null;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n const cancelReset = () => {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = null;\n };\n const reset = () => {\n cancelReset();\n connection = subject = null;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n const conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n const dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(() => {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection) {\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n from(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on, ...args) {\n if (on === true) {\n reset();\n return null;\n }\n if (on === false) {\n return null;\n }\n return on(...args)\n .pipe(take(1))\n .subscribe(() => reset());\n}\n","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith(...values) {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate((source, subscriber) => {\n let innerSubscriber = null;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => {\n innerSubscriber = null;\n checkComplete();\n })));\n }, () => {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n const tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error, complete }\n : observerOrNext;\n return tapObserver\n ? operate((source, subscriber) => {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n let isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, () => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, (err) => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, () => {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","export const intervalProvider = {\n setInterval(handler, timeout, ...args) {\n const { delegate } = intervalProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n","import { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, _id, delay = 0) {\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(_scheduler, id, delay = 0) {\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n intervalProvider.clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, _delay) {\n let errored = false;\n let errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n super.unsubscribe();\n }\n }\n}\n","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class Scheduler {\n constructor(schedulerActionCtor, now = Scheduler.now) {\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\nScheduler.now = dateTimestampProvider.now;\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, now);\n this.actions = [];\n this._active = false;\n this._scheduled = undefined;\n }\n flush(action) {\n const { actions } = this;\n if (this._active) {\n actions.push(action);\n return;\n }\n let error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","export const dateTimestampProvider = {\n now() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n","export const timeoutProvider = {\n setTimeout(handler, timeout, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n","export const observable = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","import { createErrorClass } from './createErrorClass';\nexport const EmptyError = createErrorClass((_super) => function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","export function arrRemove(arr, item) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","export function createErrorClass(createImpl) {\n const _super = (instance) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n","export function createObject(keys, values) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {});\n}\n","import { config } from '../config';\nlet context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","export function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) {\n const scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n","export function identity(x) {\n return x;\n}\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return (source) => {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n","import { map } from \"../operators/map\";\nconst { isArray } = Array;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn(...args) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(args => callOrApply(fn, args));\n}\n","export function noop() { }\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * @license Angular v14.2.6\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
    ...
    \n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
    \n *
    \n *
    \n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* AnimationMetadataType.Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* AnimationMetadataType.Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* AnimationMetadataType.Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* AnimationMetadataType.Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* AnimationMetadataType.Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* AnimationMetadataType.State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* AnimationMetadataType.Keyframes */, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
    \n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
    \n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* AnimationMetadataType.Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* AnimationMetadataType.Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimationMetadataType.AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimationMetadataType.AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
    \n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
    \n *\n *
    \n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n *
    \n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
    \n *

    Title

    \n *
    \n * Blah blah blah\n *
    \n *
    \n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* AnimationMetadataType.Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
    \n *
    \n *
    \n * {{ item }}\n *
    \n *
    \n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* AnimationMetadataType.Stagger */, timings, animation };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve().then(cb);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n scheduleMicroTask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `AnimationPlayer`\n * @see `{@link animations/group group()}`\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n scheduleMicroTask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ɵPRE_STYLE = '!';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser &&\n !!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass PlatformModule {\n}\nPlatformModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPlatformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: PlatformModule });\nPlatformModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: PlatformModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: PlatformModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* RtlScrollAxisType.NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* RtlScrollAxisType.NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* RtlScrollAxisType.NEGATED */ : 2 /* RtlScrollAxisType.INVERTED */;\n }\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document\n ? document.activeElement\n : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n","/**\n * @license Angular v14.2.6\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, ɵɵinject, Inject, inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, createNgModule, NgModuleRef, ɵRuntimeError, Host, Attribute, RendererStyleFlags2, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable, ɵformatRuntimeError, Renderer2, ElementRef, Injector, NgZone } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }] });\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: () => inject(PathLocationStrategy) });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: () => inject(PathLocationStrategy) }]\n }] });\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you may provide a {@link APP_BASE_HREF}\n * or add a `` element to the document to override the default.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n this._baseHref = href ?? this._platformLocation.getBaseHrefFromDOM() ??\n inject(DOCUMENT).location?.origin ?? '';\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PathLocationStrategy, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n getState() {\n return this._platformLocation.getState();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nHashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(locationStrategy) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n /** @internal */\n this._urlChangeSubscription = null;\n this._locationStrategy = locationStrategy;\n const browserBaseHref = this._locationStrategy.getBaseHref();\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._locationStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeListeners = [];\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._locationStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._locationStrategy.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._locationStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._locationStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._locationStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._locationStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._locationStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n this._locationStrategy.historyGo?.(relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n * @returns A function that, when executed, unregisters a URL change listener.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n return () => {\n const fnIndex = this._urlChangeListeners.indexOf(fn);\n this._urlChangeListeners.splice(fnIndex, 1);\n if (this._urlChangeListeners.length === 0) {\n this._urlChangeSubscription?.unsubscribe();\n this._urlChangeSubscription = null;\n }\n };\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, undefined, 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLE\": [undefined, undefined, 2], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ɵExtraLocaleDataIndex.ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ɵExtraLocaleDataIndex.ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ɵExtraLocaleDataIndex.ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* ɵCurrencyIndex.SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* ɵCurrencyIndex.Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* ɵCurrencyIndex.NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4,})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ? dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' :\n value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.slice(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substring(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is suppressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substring(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substring(0, pos).replace(/'/g, '');\n p.negSuf = negative.slice(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\nNgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\n }] });\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgClass, isStandalone: true, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngClass]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModule`: Optional NgModule class reference to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * * `ngComponentOutletNgModuleFactory`: Deprecated config option that allows providing optional\n * NgModule factory to allow loading another module dynamically, then loading a component from that\n * module. Use `ngComponentOutletNgModule` instead.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized NgModule reference\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this.ngComponentOutlet = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n const { _viewContainerRef: viewContainerRef, ngComponentOutletNgModule: ngModule, ngComponentOutletNgModuleFactory: ngModuleFactory, } = this;\n viewContainerRef.clear();\n this._componentRef = undefined;\n if (this.ngComponentOutlet) {\n const injector = this.ngComponentOutletInjector || viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModule'] || changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (ngModule) {\n this._moduleRef = createNgModule(ngModule, getParentInjector(injector));\n }\n else if (ngModuleFactory) {\n this._moduleRef = ngModuleFactory.create(getParentInjector(injector));\n }\n else {\n this._moduleRef = undefined;\n }\n }\n this._componentRef = viewContainerRef.createComponent(this.ngComponentOutlet, {\n index: viewContainerRef.length,\n injector,\n ngModuleRef: this._moduleRef,\n projectableNodes: this.ngComponentOutletContent,\n });\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgComponentOutlet, isStandalone: true, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModule: \"ngComponentOutletNgModule\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngComponentOutlet]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModule: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n// Helper function that returns an Injector instance of a parent NgModule.\nfunction getParentInjector(injector) {\n const parentNgModule = injector.get(NgModuleRef);\n return parentNgModule.injector;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/structural-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For further discussion, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if (NG_DEV_MODE && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n * @nodoc\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n if (NG_DEV_MODE) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch {\n let errorMessage = `Cannot find a differ supporting object '${value}' of type '` +\n `${getTypeName(value)}'. NgFor only supports binding to Iterables, such as Arrays.`;\n if (typeof value === 'object') {\n errorMessage += ' Did you mean to use the keyvalue pipe?';\n }\n throw new ɵRuntimeError(-2200 /* RuntimeErrorCode.NG_FOR_MISSING_DIFFER */, errorMessage);\n }\n }\n else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const viewContainer = this._viewContainer;\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nNgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgForOf, isStandalone: true, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngFor][ngForOf]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](guide/structural-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgIf, isStandalone: true, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngIf]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgSwitch, isStandalone: true, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitch]',\n standalone: true,\n }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgSwitchCase, isStandalone: true, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitchCase]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgSwitchDefault, isStandalone: true, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngSwitchDefault]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* RuntimeErrorCode.PARENT_NG_SWITCH_NOT_FOUND */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgPlural, isStandalone: true, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngPlural]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgPluralCase, isStandalone: true, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngPluralCase]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n const flags = name.indexOf('-') === -1 ? undefined : RendererStyleFlags2.DashCase;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, unit ? `${value}${unit}` : value, flags);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name, flags);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgStyle, isStandalone: true, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngStyle]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n /** Injector to be used within the embedded view. */\n this.ngTemplateOutletInjector = null;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet'] || changes['ngTemplateOutletInjector']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n if (this.ngTemplateOutlet) {\n const { ngTemplateOutlet: template, ngTemplateOutletContext: context, ngTemplateOutletInjector: injector } = this;\n this._viewRef = viewContainerRef.createEmbeddedView(template, context, injector ? { injector } : undefined);\n }\n else {\n this._viewRef = null;\n }\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgTemplateOutlet, isStandalone: true, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\", ngTemplateOutletInjector: \"ngTemplateOutletInjector\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[ngTemplateOutlet]',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }], ngTemplateOutletInjector: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n return new ɵRuntimeError(2100 /* RuntimeErrorCode.INVALID_PIPE_ARGUMENT */, ngDevMode && `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(ref) {\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n // Assign `ref` into `this._ref` manually instead of declaring `_ref` in the constructor\n // parameter list, as the type of `this._ref` includes `null` unlike the type of `ref`.\n this._ref = ref;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n // Clear the `ChangeDetectorRef` and its association with the view data, to mitigate\n // potential memory leaks in Observables that could otherwise cause the view data to\n // be retained.\n // https://github.com/angular/angular/issues/17624\n this._ref = null;\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n // Note: `dispose` is only called if a subscription has been initialized before, indicating\n // that `this._strategy` is also available.\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n // Note: `this._ref` is only cleared in `ngOnDestroy` so is known to be available when a\n // value is being updated.\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: AsyncPipe, isStandalone: true, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'async',\n pure: false,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: LowerCasePipe, isStandalone: true, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'lowercase',\n standalone: true,\n }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.slice(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: TitleCasePipe, isStandalone: true, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'titlecase',\n standalone: true,\n }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: UpperCasePipe, isStandalone: true, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'uppercase',\n standalone: true,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_TIMEZONE`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, timezone ?? this.defaultTimezone ?? undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: DatePipe, isStandalone: true, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'date',\n pure: true,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * https://unicode-org.github.io/icu/userguide/format_parse/messages/.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: I18nPluralPipe, isStandalone: true, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'i18nPlural',\n pure: true,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: I18nSelectPipe, isStandalone: true, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'i18nSelect',\n pure: true,\n standalone: true,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: JsonPipe, isStandalone: true, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'json',\n pure: false,\n standalone: true,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: KeyValuePipe, isStandalone: true, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'keyvalue',\n pure: false,\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: DecimalPipe, isStandalone: true, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'number',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: PercentPipe, isStandalone: true, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'percent',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\nCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: CurrencyPipe, isStandalone: true, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'currency',\n standalone: true,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }]; } });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: SlicePipe, isStandalone: true, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'slice',\n pure: false,\n standalone: true,\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.6\", ngImport: i0, type: CommonModule, imports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });\nCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: CommonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('14.2.6');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n //\n // @see https://html.spec.whatwg.org/#get-the-focusable-area\n // @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n // @see https://html.spec.whatwg.org/#focusable-area\n elSelected.focus();\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Asserts that the application is in development mode. Throws an error if the application is in\n * production mode. This assert can be used to make sure that there is no dev-mode code invoked in\n * the prod mode accidentally.\n */\nfunction assertDevMode(checkName) {\n if (!ngDevMode) {\n throw new ɵRuntimeError(2958 /* RuntimeErrorCode.UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE */, `Unexpected invocation of the ${checkName} in the prod mode. ` +\n `Please make sure that the prod mode is enabled for production builds.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Assembles directive details string, useful for error messages.\nfunction imgDirectiveDetails(ngSrc, includeNgSrc = true) {\n const ngSrcInfo = includeNgSrc ? `(activated on an element with the \\`ngSrc=\"${ngSrc}\"\\`) ` : '';\n return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Converts a string that represents a URL into a URL class instance.\nfunction getUrl(src, win) {\n // Don't use a base URL is the URL is absolute.\n return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href);\n}\n// Checks whether a URL is absolute (i.e. starts with `http://` or `https://`).\nfunction isAbsoluteUrl(src) {\n return /^https?:\\/\\//.test(src);\n}\n// Given a URL, extract the hostname part.\n// If a URL is a relative one - the URL is returned as is.\nfunction extractHostname(url) {\n return isAbsoluteUrl(url) ? (new URL(url)).hostname : url;\n}\nfunction isValidPath(path) {\n const isString = typeof path === 'string';\n if (!isString || path.trim() === '') {\n return false;\n }\n // Calling new URL() will throw if the path string is malformed\n try {\n const url = new URL(path);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction normalizePath(path) {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n}\nfunction normalizeSrc(src) {\n return src.startsWith('/') ? src.slice(1) : src;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Set of origins that are always excluded from the preconnect checks.\nconst INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);\n/**\n * Multi-provider injection token to configure which origins should be excluded\n * from the preconnect checks. It can either be a single string or an array of strings\n * to represent a group of origins, for example:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST, multi: true, useValue: 'https://your-domain.com'}\n * ```\n *\n * or:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST, multi: true,\n * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}\n * ```\n *\n * @publicApi\n * @developerPreview\n */\nconst PRECONNECT_CHECK_BLOCKLIST = new InjectionToken('PRECONNECT_CHECK_BLOCKLIST');\n/**\n * Contains the logic to detect whether an image, marked with the \"priority\" attribute\n * has a corresponding `` tag in the `document.head`.\n *\n * Note: this is a dev-mode only class, which should not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n */\nclass PreconnectLinkChecker {\n constructor() {\n this.document = inject(DOCUMENT);\n /**\n * Set of tags found on this page.\n * The `null` value indicates that there was no DOM query operation performed.\n */\n this.preconnectLinks = null;\n /*\n * Keep track of all already seen origin URLs to avoid repeating the same check.\n */\n this.alreadySeen = new Set();\n this.window = null;\n this.blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);\n assertDevMode('preconnect link checker');\n const win = this.document.defaultView;\n if (typeof win !== 'undefined') {\n this.window = win;\n }\n const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, { optional: true });\n if (blocklist) {\n this.populateBlocklist(blocklist);\n }\n }\n populateBlocklist(origins) {\n if (Array.isArray(origins)) {\n deepForEach(origins, origin => {\n this.blocklist.add(extractHostname(origin));\n });\n }\n else {\n throw new ɵRuntimeError(2957 /* RuntimeErrorCode.INVALID_PRECONNECT_CHECK_BLOCKLIST */, `The blocklist for the preconnect check was not provided as an array. ` +\n `Check that the \\`PRECONNECT_CHECK_BLOCKLIST\\` token is configured as a \\`multi: true\\` provider.`);\n }\n }\n /**\n * Checks that a preconnect resource hint exists in the head fo rthe\n * given src.\n *\n * @param rewrittenSrc src formatted with loader\n * @param originalNgSrc ngSrc value\n */\n assertPreconnect(rewrittenSrc, originalNgSrc) {\n if (!this.window)\n return;\n const imgUrl = getUrl(rewrittenSrc, this.window);\n if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin))\n return;\n // Register this origin as seen, so we don't check it again later.\n this.alreadySeen.add(imgUrl.origin);\n if (!this.preconnectLinks) {\n // Note: we query for preconnect links only *once* and cache the results\n // for the entire lifespan of an application, since it's unlikely that the\n // list would change frequently. This allows to make sure there are no\n // performance implications of making extra DOM lookups for each image.\n this.preconnectLinks = this.queryPreconnectLinks();\n }\n if (!this.preconnectLinks.has(imgUrl.origin)) {\n console.warn(ɵformatRuntimeError(2956 /* RuntimeErrorCode.PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +\n `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +\n `images are delivered as soon as possible. To fix this, please add the following ` +\n `element into the of the document:\\n` +\n ` `));\n }\n }\n queryPreconnectLinks() {\n const preconnectUrls = new Set();\n const selector = 'link[rel=preconnect]';\n const links = Array.from(this.document.querySelectorAll(selector));\n for (let link of links) {\n const url = getUrl(link.href, this.window);\n preconnectUrls.add(url.origin);\n }\n return preconnectUrls;\n }\n ngOnDestroy() {\n this.preconnectLinks?.clear();\n this.alreadySeen.clear();\n }\n}\nPreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: PreconnectLinkChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n/**\n * Invokes a callback for each element in the array. Also invokes a callback\n * recursively for each nested array.\n */\nfunction deepForEach(input, fn) {\n for (let value of input) {\n Array.isArray(value) ? deepForEach(value, fn) : fn(value);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Noop image loader that does no transformation to the original src and just returns it as is.\n * This loader is used as a default one if more specific logic is not provided in an app config.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n */\nconst noopImageLoader = (config) => config.src;\n/**\n * Injection token that configures the image loader function.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n * @publicApi\n * @developerPreview\n */\nconst IMAGE_LOADER = new InjectionToken('ImageLoader', {\n providedIn: 'root',\n factory: () => noopImageLoader,\n});\n/**\n * Internal helper function that makes it easier to introduce custom image loaders for the\n * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI\n * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI\n * tokens managing preconnect check functionality.\n * @param buildUrlFn a function returning a full URL based on loader's configuration\n * @param exampleUrls example of full URLs for a given loader (used in error messages)\n * @returns a set of DI providers corresponding to the configured image loader\n */\nfunction createImageLoader(buildUrlFn, exampleUrls) {\n return function provideImageLoader(path, options = { ensurePreconnect: true }) {\n if (!isValidPath(path)) {\n throwInvalidPathError(path, exampleUrls || []);\n }\n // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in\n // the individual loader functions.\n path = normalizePath(path);\n const loaderFn = (config) => {\n if (isAbsoluteUrl(config.src)) {\n // Image loader functions expect an image file name (e.g. `my-image.png`)\n // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,\n // so the final absolute URL can be constructed.\n // When an absolute URL is provided instead - the loader can not\n // build a final URL, thus the error is thrown to indicate that.\n throwUnexpectedAbsoluteUrlError(path, config.src);\n }\n return buildUrlFn(path, { ...config, src: normalizeSrc(config.src) });\n };\n const providers = [{ provide: IMAGE_LOADER, useValue: loaderFn }];\n if (ngDevMode && options.ensurePreconnect === false) {\n providers.push({ provide: PRECONNECT_CHECK_BLOCKLIST, useValue: [path], multi: true });\n }\n return providers;\n };\n}\nfunction throwInvalidPathError(path, exampleUrls) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply a path using one of the following formats: ${exampleUrls.join(' or ')}`);\n}\nfunction throwUnexpectedAbsoluteUrlError(path, url) {\n throw new ɵRuntimeError(2959 /* RuntimeErrorCode.INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected a \\`\\` tag with an invalid \\`ngSrc\\` attribute: ${url}. ` +\n `This image loader expects \\`ngSrc\\` to be a relative URL - ` +\n `however the provided value is an absolute URL. ` +\n `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +\n `configured for this loader (\\`${path}\\`).`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Function that generates an ImageLoader for [Cloudflare Image\n * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular\n * provider. Note: Cloudflare has multiple image products - this provider is specifically for\n * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.\n *\n * @param path Your domain name, e.g. https://mysite.com\n * @param options An object with extra configuration:\n * - `ensurePreconnect`: boolean flag indicating whether the NgOptimizedImage directive\n * should verify that there is a corresponding ``\n * present in the document's ``.\n * @returns Provider that provides an ImageLoader function\n *\n * @publicApi\n * @developerPreview\n */\nconst provideCloudflareLoader = createImageLoader(createCloudflareUrl, ngDevMode ? ['https:///cdn-cgi/image//'] : undefined);\nfunction createCloudflareUrl(path, config) {\n let params = `format=auto`;\n if (config.width) {\n params += `,width=${config.width}`;\n }\n // Cloudflare image URLs format:\n // https://developers.cloudflare.com/images/image-resizing/url-format/\n return `${path}/cdn-cgi/image/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.\n *\n * @param path Base URL of your Cloudinary images\n * This URL should match one of the following formats:\n * https://res.cloudinary.com/mysite\n * https://mysite.cloudinary.com\n * https://subdomain.mysite.com\n * @param options An object with extra configuration:\n * - `ensurePreconnect`: boolean flag indicating whether the NgOptimizedImage directive\n * should verify that there is a corresponding ``\n * present in the document's ``.\n * @returns Set of providers to configure the Cloudinary loader.\n *\n * @publicApi\n * @developerPreview\n */\nconst provideCloudinaryLoader = createImageLoader(createCloudinaryUrl, ngDevMode ?\n [\n 'https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com',\n 'https://subdomain.mysite.com'\n ] :\n undefined);\nfunction createCloudinaryUrl(path, config) {\n // Cloudinary image URLformat:\n // https://cloudinary.com/documentation/image_transformations#transformation_url_structure\n // Example of a Cloudinary image URL:\n // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png\n let params = `f_auto,q_auto`; // sets image format and quality to \"auto\"\n if (config.width) {\n params += `,w_${config.width}`;\n }\n return `${path}/image/upload/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.\n *\n * @param path Base URL of your ImageKit images\n * This URL should match one of the following formats:\n * https://ik.imagekit.io/myaccount\n * https://subdomain.mysite.com\n * @param options An object with extra configuration:\n * - `ensurePreconnect`: boolean flag indicating whether the NgOptimizedImage directive\n * should verify that there is a corresponding ``\n * present in the document's ``.\n * @returns Set of providers to configure the ImageKit loader.\n *\n * @publicApi\n * @developerPreview\n */\nconst provideImageKitLoader = createImageLoader(createImagekitUrl, ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);\nfunction createImagekitUrl(path, config) {\n // Example of an ImageKit image URL:\n // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg\n let params = `tr:q-auto`; // applies the \"auto quality\" transformation\n if (config.width) {\n params += `,w-${config.width}`;\n }\n return `${path}/${params}/${config.src}`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.\n *\n * @param path path to the desired Imgix origin,\n * e.g. https://somepath.imgix.net or https://images.mysite.com\n * @param options An object with extra configuration:\n * - `ensurePreconnect`: boolean flag indicating whether the NgOptimizedImage directive\n * should verify that there is a corresponding ``\n * present in the document's ``.\n * @returns Set of providers to configure the Imgix loader.\n *\n * @publicApi\n * @developerPreview\n */\nconst provideImgixLoader = createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);\nfunction createImgixUrl(path, config) {\n const url = new URL(`${path}/${config.src}`);\n // This setting ensures the smallest allowable format is set.\n url.searchParams.set('auto', 'format');\n if (config.width) {\n url.searchParams.set('w', config.width.toString());\n }\n return url.href;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Observer that detects whether an image with `NgOptimizedImage`\n * is treated as a Largest Contentful Paint (LCP) element. If so,\n * asserts that the image has the `priority` attribute.\n *\n * Note: this is a dev-mode only class and it does not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n *\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript.\n */\nclass LCPImageObserver {\n constructor() {\n // Map of full image URLs -> original `ngSrc` values.\n this.images = new Map();\n // Keep track of images for which `console.warn` was produced.\n this.alreadyWarned = new Set();\n this.window = null;\n this.observer = null;\n assertDevMode('LCP checker');\n const win = inject(DOCUMENT).defaultView;\n if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') {\n this.window = win;\n this.observer = this.initPerformanceObserver();\n }\n }\n /**\n * Inits PerformanceObserver and subscribes to LCP events.\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript\n */\n initPerformanceObserver() {\n const observer = new PerformanceObserver((entryList) => {\n const entries = entryList.getEntries();\n if (entries.length === 0)\n return;\n // We use the latest entry produced by the `PerformanceObserver` as the best\n // signal on which element is actually an LCP one. As an example, the first image to load on\n // a page, by virtue of being the only thing on the page so far, is often a LCP candidate\n // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.\n const lcpElement = entries[entries.length - 1];\n // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.\n // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint\n const imgSrc = lcpElement.element?.src ?? '';\n // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.\n if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:'))\n return;\n const imgNgSrc = this.images.get(imgSrc);\n if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) {\n this.alreadyWarned.add(imgSrc);\n logMissingPriorityWarning(imgSrc);\n }\n });\n observer.observe({ type: 'largest-contentful-paint', buffered: true });\n return observer;\n }\n registerImage(rewrittenSrc, originalNgSrc) {\n if (!this.observer)\n return;\n this.images.set(getUrl(rewrittenSrc, this.window).href, originalNgSrc);\n }\n unregisterImage(rewrittenSrc) {\n if (!this.observer)\n return;\n this.images.delete(getUrl(rewrittenSrc, this.window).href);\n }\n ngOnDestroy() {\n if (!this.observer)\n return;\n this.observer.disconnect();\n this.images.clear();\n this.alreadyWarned.clear();\n }\n}\nLCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: LCPImageObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\nfunction logMissingPriorityWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2955 /* RuntimeErrorCode.LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element but was not marked \"priority\". This image should be marked ` +\n `\"priority\" in order to prioritize its loading. ` +\n `To fix this, add the \"priority\" attribute.`));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,\n * an error is thrown. The image content (as a string) might be very long, thus making\n * it hard to read an error message if the entire string is included. This const defines\n * the number of characters that should be included into the error message. The rest\n * of the content is truncated.\n */\nconst BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;\n/**\n * RegExpr to determine whether a src in a srcset is using width descriptors.\n * Should match something like: \"100w, 200w\".\n */\nconst VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;\n/**\n * RegExpr to determine whether a src in a srcset is using density descriptors.\n * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".\n */\nconst VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;\n/**\n * Srcset values with a density descriptor higher than this value will actively\n * throw an error. Such densities are not permitted as they cause image sizes\n * to be unreasonably large and slow down LCP.\n */\nconst ABSOLUTE_SRCSET_DENSITY_CAP = 3;\n/**\n * Used only in error message text to communicate best practices, as we will\n * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.\n */\nconst RECOMMENDED_SRCSET_DENSITY_CAP = 2;\n/**\n * Used to determine whether two aspect ratios are similar in value.\n */\nconst ASPECT_RATIO_TOLERANCE = .1;\n/**\n * Used to determine whether the image has been requested at an overly\n * large size compared to the actual rendered image size (after taking\n * into account a typical device pixel ratio). In pixels.\n */\nconst OVERSIZED_IMAGE_TOLERANCE = 1000;\n/**\n * Directive that improves image loading performance by enforcing best practices.\n *\n * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is\n * prioritized by:\n * - Automatically setting the `fetchpriority` attribute on the `` tag\n * - Lazy loading non-priority images by default\n * - Asserting that there is a corresponding preconnect link tag in the document head\n *\n * In addition, the directive:\n * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided\n * - Requires that `width` and `height` are set\n * - Warns if `width` or `height` have been set incorrectly\n * - Warns if the image will be visually distorted when rendered\n *\n * @usageNotes\n * The `NgOptimizedImage` directive is marked as [standalone](guide/standalone-components) and can\n * be imported directly.\n *\n * Follow the steps below to enable and use the directive:\n * 1. Import it into the necessary NgModule or a standalone Component.\n * 2. Optionally provide an `ImageLoader` if you use an image hosting service.\n * 3. Update the necessary `` tags in templates and replace `src` attributes with `ngSrc`.\n * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image\n * download.\n *\n * Step 1: import the `NgOptimizedImage` directive.\n *\n * ```typescript\n * import { NgOptimizedImage } from '@angular/common';\n *\n * // Include it into the necessary NgModule\n * @NgModule({\n * imports: [NgOptimizedImage],\n * })\n * class AppModule {}\n *\n * // ... or a standalone Component\n * @Component({\n * standalone: true\n * imports: [NgOptimizedImage],\n * })\n * class MyStandaloneComponent {}\n * ```\n *\n * Step 2: configure a loader.\n *\n * To use the **default loader**: no additional code changes are necessary. The URL returned by the\n * generic loader will always match the value of \"src\". In other words, this loader applies no\n * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.\n *\n * To use an existing loader for a **third-party image service**: add the provider factory for your\n * chosen service to the `providers` array. In the example below, the Imgix loader is used:\n *\n * ```typescript\n * import {provideImgixLoader} from '@angular/common';\n *\n * // Call the function and add the result to the `providers` array:\n * providers: [\n * provideImgixLoader(\"https://my.base.url/\"),\n * ],\n * ```\n *\n * The `NgOptimizedImage` directive provides the following functions:\n * - `provideCloudflareLoader`\n * - `provideCloudinaryLoader`\n * - `provideImageKitLoader`\n * - `provideImgixLoader`\n *\n * If you use a different image provider, you can create a custom loader function as described\n * below.\n *\n * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI\n * token.\n *\n * ```typescript\n * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';\n *\n * // Configure the loader using the `IMAGE_LOADER` token.\n * providers: [\n * {\n * provide: IMAGE_LOADER,\n * useValue: (config: ImageLoaderConfig) => {\n * return `https://example.com/${config.src}-${config.width}.jpg}`;\n * }\n * },\n * ],\n * ```\n *\n * Step 3: update `` tags in templates to use `ngSrc` instead of `src`.\n *\n * ```\n * \n * ```\n *\n * @publicApi\n * @developerPreview\n */\nclass NgOptimizedImage {\n constructor() {\n this.imageLoader = inject(IMAGE_LOADER);\n this.renderer = inject(Renderer2);\n this.imgElement = inject(ElementRef).nativeElement;\n this.injector = inject(Injector);\n // a LCP image observer - should be injected only in the dev mode\n this.lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;\n /**\n * Calculate the rewritten `src` once and store it.\n * This is needed to avoid repetitive calculations and make sure the directive cleanup in the\n * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other\n * instance that might be already destroyed).\n */\n this._renderedSrc = null;\n this._priority = false;\n }\n /**\n * Previously, the `rawSrc` attribute was used to activate the directive.\n * The attribute was renamed to `ngSrc` and this input just produces an error,\n * suggesting to switch to `ngSrc` instead.\n *\n * This error should be removed in v15.\n *\n * @nodoc\n * @deprecated Use `ngSrc` instead.\n */\n set rawSrc(value) {\n if (ngDevMode) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(value, false)} the \\`rawSrc\\` attribute was used ` +\n `to activate the directive. Newer version of the directive uses the \\`ngSrc\\` ` +\n `attribute instead. Please replace \\`rawSrc\\` with \\`ngSrc\\` and ` +\n `\\`rawSrcset\\` with \\`ngSrcset\\` attributes in the template to ` +\n `enable image optimizations.`);\n }\n }\n /**\n * The intrinsic width of the image in pixels.\n */\n set width(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'width');\n this._width = inputToInteger(value);\n }\n get width() {\n return this._width;\n }\n /**\n * The intrinsic height of the image in pixels.\n */\n set height(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'height');\n this._height = inputToInteger(value);\n }\n get height() {\n return this._height;\n }\n /**\n * Indicates whether this image should have a high priority.\n */\n set priority(value) {\n this._priority = inputToBoolean(value);\n }\n get priority() {\n return this._priority;\n }\n ngOnInit() {\n if (ngDevMode) {\n assertNonEmptyInput(this, 'ngSrc', this.ngSrc);\n assertValidNgSrcset(this, this.ngSrcset);\n assertNoConflictingSrc(this);\n assertNoConflictingSrcset(this);\n assertNotBase64Image(this);\n assertNotBlobUrl(this);\n assertNonEmptyWidthAndHeight(this);\n assertValidLoadingInput(this);\n assertNoImageDistortion(this, this.imgElement, this.renderer);\n if (this.priority) {\n const checker = this.injector.get(PreconnectLinkChecker);\n checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);\n }\n else {\n // Monitor whether an image is an LCP element only in case\n // the `priority` attribute is missing. Otherwise, an image\n // has the necessary settings and no extra checks are required.\n if (this.lcpObserver !== null) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc);\n });\n }\n }\n }\n this.setHostAttributes();\n }\n setHostAttributes() {\n // Must set width/height explicitly in case they are bound (in which case they will\n // only be reflected and not found by the browser)\n this.setHostAttribute('width', this.width.toString());\n this.setHostAttribute('height', this.height.toString());\n this.setHostAttribute('loading', this.getLoadingBehavior());\n this.setHostAttribute('fetchpriority', this.getFetchPriority());\n // The `src` and `srcset` attributes should be set last since other attributes\n // could affect the image's loading behavior.\n this.setHostAttribute('src', this.getRewrittenSrc());\n if (this.ngSrcset) {\n this.setHostAttribute('srcset', this.getRewrittenSrcset());\n }\n }\n ngOnChanges(changes) {\n if (ngDevMode) {\n assertNoPostInitInputChange(this, changes, ['ngSrc', 'ngSrcset', 'width', 'height', 'priority']);\n }\n }\n getLoadingBehavior() {\n if (!this.priority && this.loading !== undefined) {\n return this.loading;\n }\n return this.priority ? 'eager' : 'lazy';\n }\n getFetchPriority() {\n return this.priority ? 'high' : 'auto';\n }\n getRewrittenSrc() {\n // ImageLoaderConfig supports setting a width property. However, we're not setting width here\n // because if the developer uses rendered width instead of intrinsic width in the HTML width\n // attribute, the image requested may be too small for 2x+ screens.\n if (!this._renderedSrc) {\n const imgConfig = { src: this.ngSrc };\n // Cache calculated image src to reuse it later in the code.\n this._renderedSrc = this.imageLoader(imgConfig);\n }\n return this._renderedSrc;\n }\n getRewrittenSrcset() {\n const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);\n const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {\n srcStr = srcStr.trim();\n const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width;\n return `${this.imageLoader({ src: this.ngSrc, width })} ${srcStr}`;\n });\n return finalSrcs.join(', ');\n }\n ngOnDestroy() {\n if (ngDevMode) {\n if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {\n this.lcpObserver.unregisterImage(this._renderedSrc);\n }\n }\n }\n setHostAttribute(name, value) {\n this.renderer.setAttribute(this.imgElement, name, value);\n }\n}\nNgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgOptimizedImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.6\", type: NgOptimizedImage, isStandalone: true, selector: \"img[ngSrc],img[rawSrc]\", inputs: { rawSrc: \"rawSrc\", ngSrc: \"ngSrc\", ngSrcset: \"ngSrcset\", width: \"width\", height: \"height\", loading: \"loading\", priority: \"priority\", src: \"src\", srcset: \"srcset\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NgOptimizedImage, decorators: [{\n type: Directive,\n args: [{\n standalone: true,\n selector: 'img[ngSrc],img[rawSrc]',\n }]\n }], propDecorators: { rawSrc: [{\n type: Input\n }], ngSrc: [{\n type: Input\n }], ngSrcset: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], loading: [{\n type: Input\n }], priority: [{\n type: Input\n }], src: [{\n type: Input\n }], srcset: [{\n type: Input\n }] } });\n/***** Helpers *****/\n/**\n * Convert input value to integer.\n */\nfunction inputToInteger(value) {\n return typeof value === 'string' ? parseInt(value, 10) : value;\n}\n/**\n * Convert input value to boolean.\n */\nfunction inputToBoolean(value) {\n return value != null && `${value}` !== 'false';\n}\n/***** Assert functions *****/\n/**\n * Verifies that there is no `src` set on a host element.\n */\nfunction assertNoConflictingSrc(dir) {\n if (dir.src) {\n throw new ɵRuntimeError(2950 /* RuntimeErrorCode.UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +\n `To fix this, please remove the \\`src\\` attribute.`);\n }\n}\n/**\n * Verifies that there is no `srcset` set on a host element.\n */\nfunction assertNoConflictingSrcset(dir) {\n if (dir.srcset) {\n throw new ɵRuntimeError(2951 /* RuntimeErrorCode.UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +\n `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Base64-encoded image.\n */\nfunction assertNotBase64Image(dir) {\n let ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('data:')) {\n if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {\n ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';\n }\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +\n `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Blob URL.\n */\nfunction assertNotBlobUrl(dir) {\n const ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('blob:')) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +\n `Blob URLs are not supported by the NgOptimizedImage directive. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the input is set to a non-empty string.\n */\nfunction assertNonEmptyInput(dir, name, value) {\n const isString = typeof value === 'string';\n const isEmptyString = isString && value.trim() === '';\n if (!isString || isEmptyString) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +\n `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);\n }\n}\n/**\n * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".\n */\nfunction assertValidNgSrcset(dir, value) {\n if (value == null)\n return;\n assertNonEmptyInput(dir, 'ngSrcset', value);\n const stringVal = value;\n const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);\n const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);\n if (isValidDensityDescriptor) {\n assertUnderDensityCap(dir, stringVal);\n }\n const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;\n if (!isValidSrcset) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +\n `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +\n `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);\n }\n}\nfunction assertUnderDensityCap(dir, value) {\n const underDensityCap = value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);\n if (!underDensityCap) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +\n `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +\n `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +\n `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);\n }\n}\n/**\n * Creates a `RuntimeError` instance to represent a situation when an input is set after\n * the directive has initialized.\n */\nfunction postInitInputChangeError(dir, inputName) {\n return new ɵRuntimeError(2953 /* RuntimeErrorCode.UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +\n `The NgOptimizedImage directive will not react to this input change. ` +\n `To fix this, switch \\`${inputName}\\` a static value or wrap the image element ` +\n `in an *ngIf that is gated on the necessary value.`);\n}\n/**\n * Verify that none of the listed inputs has changed.\n */\nfunction assertNoPostInitInputChange(dir, changes, inputs) {\n inputs.forEach(input => {\n const isUpdated = changes.hasOwnProperty(input);\n if (isUpdated && !changes[input].isFirstChange()) {\n if (input === 'ngSrc') {\n // When the `ngSrc` input changes, we detect that only in the\n // `ngOnChanges` hook, thus the `ngSrc` is already set. We use\n // `ngSrc` in the error message, so we use a previous value, but\n // not the updated one in it.\n dir = { ngSrc: changes[input].previousValue };\n }\n throw postInitInputChangeError(dir, input);\n }\n });\n}\n/**\n * Verifies that a specified input is a number greater than 0.\n */\nfunction assertGreaterThanZero(dir, inputValue, inputName) {\n const validNumber = typeof inputValue === 'number' && inputValue > 0;\n const validString = typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;\n if (!validNumber && !validString) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value ` +\n `(\\`${inputValue}\\`). To fix this, provide \\`${inputName}\\` ` +\n `as a number greater than 0.`);\n }\n}\n/**\n * Verifies that the rendered image is not visually distorted. Effectively this is checking:\n * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.\n * - Whether image styling is \"correct\" (see below for a longer explanation).\n */\nfunction assertNoImageDistortion(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n // TODO: `clientWidth`, `clientHeight`, `naturalWidth` and `naturalHeight`\n // are typed as number, but we run `parseFloat` (which accepts strings only).\n // Verify whether `parseFloat` is needed in the cases below.\n const renderedWidth = parseFloat(img.clientWidth);\n const renderedHeight = parseFloat(img.clientHeight);\n const renderedAspectRatio = renderedWidth / renderedHeight;\n const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;\n const intrinsicWidth = parseFloat(img.naturalWidth);\n const intrinsicHeight = parseFloat(img.naturalHeight);\n const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;\n const suppliedWidth = dir.width;\n const suppliedHeight = dir.height;\n const suppliedAspectRatio = suppliedWidth / suppliedHeight;\n // Tolerance is used to account for the impact of subpixel rendering.\n // Due to subpixel rendering, the rendered, intrinsic, and supplied\n // aspect ratios of a correctly configured image may not exactly match.\n // For example, a `width=4030 height=3020` image might have a rendered\n // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)\n const inaccurateDimensions = Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;\n const stylingDistortion = nonZeroRenderedDimensions &&\n Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;\n if (inaccurateDimensions) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +\n `the aspect ratio indicated by the width and height attributes. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${intrinsicAspectRatio}). \\nSupplied width and height attributes: ` +\n `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${suppliedAspectRatio}). ` +\n `\\nTo fix this, update the width and height attributes.`));\n }\n else if (stylingDistortion) {\n console.warn(ɵformatRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +\n `does not match the image's intrinsic aspect ratio. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${intrinsicAspectRatio}). \\nRendered image size: ` +\n `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +\n `${renderedAspectRatio}). \\nThis issue can occur if \"width\" and \"height\" ` +\n `attributes are added to an image without updating the corresponding ` +\n `image styling. To fix this, adjust image styling. In most cases, ` +\n `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +\n `this issue.`));\n }\n else if (!dir.ngSrcset && nonZeroRenderedDimensions) {\n // If `ngSrcset` hasn't been set, sanity check the intrinsic size.\n const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;\n const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;\n const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;\n const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;\n if (oversizedWidth || oversizedHeight) {\n console.warn(ɵformatRuntimeError(2960 /* RuntimeErrorCode.OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +\n `larger than necessary. ` +\n `\\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +\n `\\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` +\n `\\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +\n `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));\n }\n }\n });\n}\n/**\n * Verifies that a specified input is set.\n */\nfunction assertNonEmptyWidthAndHeight(dir) {\n let missingAttributes = [];\n if (dir.width === undefined)\n missingAttributes.push('width');\n if (dir.height === undefined)\n missingAttributes.push('height');\n if (missingAttributes.length > 0) {\n throw new ɵRuntimeError(2954 /* RuntimeErrorCode.REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +\n `are missing: ${missingAttributes.map(attr => `\"${attr}\"`).join(', ')}. ` +\n `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +\n `To fix this, include \"width\" and \"height\" attributes on the image tag.`);\n }\n}\n/**\n * Verifies that the `loading` attribute is set to a valid input &\n * is not used on priority images.\n */\nfunction assertValidLoadingInput(dir) {\n if (dir.loading && dir.priority) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `was used on an image that was marked \"priority\". ` +\n `Setting \\`loading\\` on priority images is not allowed ` +\n `because these images will always be eagerly loaded. ` +\n `To fix this, remove the “loading” attribute from the priority image.`);\n }\n const validInputs = ['auto', 'eager', 'lazy'];\n if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {\n throw new ɵRuntimeError(2952 /* RuntimeErrorCode.INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `has an invalid value (\\`${dir.loading}\\`). ` +\n `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf as NgFor, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v14.2.6\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertValidHeaders(headers);\n }\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or override for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n/**\n * Verifies that the headers object has the right shape: the values\n * must be either strings or arrays. Throws an error if an invalid\n * header value is present.\n */\nfunction assertValidHeaders(headers) {\n for (const [key, value] of Object.entries(headers)) {\n if (typeof value !== 'string' && !Array.isArray(value)) {\n throw new Error(`Unexpected value of the \\`${key}\\` header provided. ` +\n `Expecting either a string or an array, but got: \\`${value}\\`.`);\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s);\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n // convert the values to strings\n const values = Array.isArray(value) ? value.map(valueToString) : [valueToString(value)];\n this.map.set(key, values);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = update.context ?? this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* HttpStatusCode.Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.6\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n/**\n * When a pending