{"version":3,"file":"index.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/lit-html/lit-html.js","../../../node_modules/lit-element/lit-element.js","../../../node_modules/@polymer/polymer/lib/utils/boot.js","../../../node_modules/@polymer/polymer/lib/utils/resolve-url.js","../../../node_modules/@polymer/polymer/lib/utils/settings.js","../../../node_modules/pwa-helpers/connect-mixin.js","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../node_modules/redux/es/redux.js","../../../node_modules/redux-thunk/es/index.js","../../../node_modules/pwa-helpers/lazy-reducer-enhancer.js","../../../node_modules/@microsoft/dynamicproto-js/lib/dist/esm/dynamicproto-js.js","../../../node_modules/@microsoft/applicationinsights-shims/dist-esm/Constants.js","../../../node_modules/@microsoft/applicationinsights-shims/dist-esm/Helpers.js","../../../node_modules/@microsoft/applicationinsights-shims/dist-esm/TsLibShims.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/__DynamicConstants.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InternalConstants.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/HelperFuncs.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EnvUtils.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DbgExtensionUtils.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DiagnosticLogger.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/PerfManager.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/RandomHelper.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DataCacheHelper.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CookieMgr.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EventHelpers.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CoreUtils.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/W3cTraceParent.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryHelpers.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ChannelController.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseCore.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/NotificationManager.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/AppInsightsCore.js","../../../node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InstrumentHooks.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Constants.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/DomHelperFuncs.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/__DynamicConstants.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/HelperFuncs.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/RequestResponseHeaders.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Enums.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/StorageHelperFuncs.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataSanitizer.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/UrlHelperFuncs.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Util.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/ConnectionStringParser.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Envelope.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Event.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Exception.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataPoint.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Metric.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageView.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/RemoteDependencyData.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Trace.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageViewPerformance.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Data.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/ContextTagKeys.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/TelemetryItemCreator.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/PartAExtensions.js","../../../node_modules/@microsoft/applicationinsights-common/dist-esm/applicationinsights-common.js","../../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/__DynamicConstants.js","../../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewManager.js","../../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","../../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","../../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Timing.js","../../../node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/AnalyticsPlugin.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/InternalConstants.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/__DynamicConstants.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/EnvelopeCreator.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Offline.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/SendBuffer.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Serializer.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/Sample.js","../../../node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Sender.js","../../../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/InternalConstants.js","../../../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/__DynamicConstants.js","../../../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajaxRecord.js","../../../node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajax.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Application.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Device.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/__DynamicConstants.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Internal.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Location.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Session.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/TelemetryTrace.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/User.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/TelemetryContext.js","../../../node_modules/@microsoft/applicationinsights-properties-js/dist-esm/PropertiesPlugin.js","../../../node_modules/@microsoft/applicationinsights-web/dist-esm/InternalConstants.js","../../../node_modules/@microsoft/applicationinsights-web/dist-esm/__DynamicConstants.js","../../../node_modules/@microsoft/applicationinsights-web/dist-esm/Initialization.js","../../../src/store.js","../../../src/css/sb-admin-2-styles.js","../../../src/css/algo-styles.js","../../../src/css/fontawesome-icons.js","../../../src/rdx/actions/algo-app.js","../../../src/locales/en/translation.js","../../../src/locales/de/translation.js","../../../src/locales/de/translation-zuko.js","../../../src/locales/en/translation-zuko.js","../../../src/locales/de/translation-projekt.js","../../../src/locales/en/translation-projekt.js","../../../src/locales/en/translation-datenschutz.js","../../../src/locales/de/translation-datenschutz.js","../../../src/locales/en/translation-agb.js","../../../src/locales/de/translation-agb.js","../../../src/locales/en/translation-laender.js","../../../src/locales/de/translation-laender.js","../../../src/locales/en/translation-gewerke.js","../../../src/locales/de/translation-gewerke.js","../../../src/locales/en/translation-dashboard.js","../../../src/locales/de/translation-dashboard.js","../../../src/locales/en/translation-container.js","../../../src/locales/de/translation-container.js","../../../src/locales/en/translation-avis.js","../../../src/locales/de/translation-avis.js","../../../src/locales/en/translation-news.js","../../../src/locales/de/translation-news.js","../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../node_modules/@babel/runtime/helpers/esm/toArray.js","../../../node_modules/i18next/dist/esm/i18next.js","../../../src/i18n.js","../../../src/rdx/actions/errorHandling.js","../../../src/rdx/actions/identity.js","../../../node_modules/moment/moment.js","../../../src/rdx/actions/projekt/projekt.js","../../../src/rdx/reducers/algo-app.js","../../../src/rdx/reducers/identity.js","../../../node_modules/@webcomponents/shadycss/src/style-settings.js","../../../node_modules/@webcomponents/shadycss/src/css-parse.js","../../../node_modules/@webcomponents/shadycss/src/common-regex.js","../../../node_modules/@webcomponents/shadycss/src/unscoped-style-handler.js","../../../node_modules/@webcomponents/shadycss/src/style-util.js","../../../node_modules/@webcomponents/shadycss/src/common-utils.js","../../../node_modules/@webcomponents/shadycss/src/apply-shim.js","../../../node_modules/@webcomponents/shadycss/src/template-map.js","../../../node_modules/@webcomponents/shadycss/src/apply-shim-utils.js","../../../node_modules/@webcomponents/shadycss/src/document-wait.js","../../../node_modules/@webcomponents/shadycss/src/custom-style-interface.js","../../../node_modules/@webcomponents/shadycss/entrypoints/apply-shim.js","../../../node_modules/@polymer/polymer/lib/utils/mixin.js","../../../node_modules/@polymer/polymer/lib/elements/dom-module.js","../../../node_modules/@polymer/polymer/lib/utils/style-gather.js","../../../node_modules/@polymer/polymer/lib/utils/wrap.js","../../../node_modules/@polymer/polymer/lib/utils/path.js","../../../node_modules/@polymer/polymer/lib/utils/case-map.js","../../../node_modules/@polymer/polymer/lib/utils/async.js","../../../node_modules/@polymer/polymer/lib/mixins/properties-changed.js","../../../node_modules/@polymer/polymer/lib/mixins/property-accessors.js","../../../node_modules/@polymer/polymer/lib/mixins/template-stamp.js","../../../node_modules/@polymer/polymer/lib/mixins/property-effects.js","../../../node_modules/@polymer/polymer/lib/utils/telemetry.js","../../../node_modules/@polymer/polymer/lib/mixins/properties-mixin.js","../../../node_modules/@polymer/polymer/lib/mixins/element-mixin.js","../../../node_modules/@polymer/polymer/lib/utils/debounce.js","../../../node_modules/@polymer/polymer/lib/utils/gestures.js","../../../node_modules/@polymer/polymer/lib/mixins/gesture-event-listeners.js","../../../node_modules/@polymer/polymer/lib/mixins/dir-mixin.js","../../../node_modules/@polymer/polymer/lib/utils/unresolved.js","../../../node_modules/@polymer/polymer/lib/utils/array-splice.js","../../../node_modules/@polymer/polymer/lib/utils/flattened-nodes-observer.js","../../../node_modules/@polymer/polymer/lib/utils/flush.js","../../../node_modules/@polymer/polymer/lib/legacy/polymer.dom.js","../../../node_modules/@polymer/polymer/lib/utils/scope-subtree.js","../../../node_modules/@polymer/polymer/lib/mixins/disable-upgrade-mixin.js","../../../node_modules/@polymer/polymer/lib/legacy/legacy-element-mixin.js","../../../node_modules/@polymer/polymer/lib/legacy/class.js","../../../node_modules/@polymer/polymer/lib/legacy/polymer-fn.js","../../../node_modules/@polymer/polymer/lib/mixins/mutable-data.js","../../../node_modules/@polymer/polymer/lib/utils/templatize.js","../../../node_modules/@polymer/polymer/lib/utils/hide-template-controls.js","../../../node_modules/@polymer/polymer/lib/elements/dom-bind.js","../../../node_modules/@polymer/polymer/lib/utils/html-tag.js","../../../node_modules/@polymer/polymer/polymer-element.js","../../../node_modules/@polymer/polymer/lib/elements/dom-repeat.js","../../../node_modules/@polymer/polymer/lib/elements/dom-if.js","../../../node_modules/@polymer/polymer/lib/elements/array-selector.js","../../../node_modules/@webcomponents/shadycss/entrypoints/custom-style-interface.js","../../../node_modules/@polymer/polymer/lib/elements/custom-style.js","../../../node_modules/@polymer/polymer/polymer-legacy.js","../../../node_modules/@polymer/iron-a11y-announcer/iron-a11y-announcer.js","../../../node_modules/@polymer/iron-fit-behavior/iron-fit-behavior.js","../../../node_modules/@polymer/iron-resizable-behavior/iron-resizable-behavior.js","../../../node_modules/@polymer/iron-overlay-behavior/iron-focusables-helper.js","../../../node_modules/@polymer/iron-overlay-behavior/iron-overlay-backdrop.js","../../../node_modules/@polymer/iron-a11y-keys-behavior/iron-a11y-keys-behavior.js","../../../node_modules/@polymer/iron-overlay-behavior/iron-overlay-manager.js","../../../node_modules/@polymer/iron-overlay-behavior/iron-scroll-manager.js","../../../node_modules/@polymer/iron-overlay-behavior/iron-overlay-behavior.js","../../../node_modules/@polymer/paper-toast/paper-toast.js","../../../node_modules/tslib/tslib.es6.js","../../../node_modules/@lit/reactive-element/decorators/custom-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../../../node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","../../../src/rdx/reducers/projekt/projekt.js","../../../node_modules/@polymer/iron-flex-layout/iron-flex-layout.js","../../../node_modules/@polymer/paper-styles/color.js","../../../node_modules/@polymer/iron-range-behavior/iron-range-behavior.js","../../../node_modules/@polymer/paper-progress/paper-progress.js","../../../src/bs/components/bs-modal.js","../../../src/bs/components/bs-dropdown.js","../../../src/layouts/sb-admin-2/components/sb-admin-2-topbar.ts","../../../src/layouts/sb-admin-2/components/sb-admin-2-footer.ts","../../../src/models/projekt/rechteDashboardModul.ts","../../../src/models/projekt/rechteProjektModul.ts","../../../src/models/projekt/rechteZukoModul.ts","../../../src/models/projekt/rechteContainerModul.ts","../../../src/models/projekt/rechteAvisModul.ts","../../../src/models/projekt/rechteNewsModul.ts","../../../src/models/projekt/projekt.ts","../../../node_modules/jquery/dist/jquery.js","../../../src/layouts/sb-admin-2/components/sb-admin-2-sidebar.ts","../../../src/rdx/actions/projekt/meine-projekte.js","../../../src/rdx/reducers/projekt/meine-projekte.js","../../../src/rdx/actions/projekt/projektrollen.js","../../../src/rdx/actions/projekt/projektbeteiligte.js","../../../src/rdx/actions/zuko/organisation.js","../../../src/bs/components/bs-card.js","../../../src/bs/components/bs-row.js","../../../src/dt/data-tables-bootstrap4-style.js","../../../src/dt/data-table.js","../../../src/services/news/nachrichten-service.js","../../../src/views/news/components/news-dashboard-component.ts","../../../src/helper/contentType.js","../../../src/views/algo/algo-dashboard-view.ts","../../../src/rdx/actions/zuko/zuko-server.js","../../../src/rdx/reducers/zuko/zuko-server.js","../../../src/models/zuko/zukoServer.ts","../../../src/views/algo/algo-zuko-server-view.ts","../../../src/views/algo/algo-impressum-layout-view.ts","../../../src/helper/datenschutz-agb-text.ts","../../../src/helper/nutzungbedingungen-text.ts","../../../src/views/algo/algo-datenschutz-layout-view.ts","../../../src/views/projekt/projekt-erstellen-view.ts","../../../src/rdx/actions/projekt/projektrolle.js","../../../src/rdx/reducers/projekt/projektrolle.js","../../../src/bs/components/bs-info-card.js","../../../src/models/projekt/projektrolle.ts","../../../src/views/projekt/projekt-projektrolle-view/projekt-projektrolle-view-container-page.ts","../../../src/views/projekt/projekt-projektrolle-view/projekt-projektrolle-view-dashboard-page.ts","../../../src/views/projekt/projekt-projektrolle-view/projekt-projektrolle-view-projekt-page.ts","../../../src/views/projekt/projekt-projektrolle-view/projekt-projektrolle-view-stammdaten-page.ts","../../../src/views/projekt/projekt-projektrolle-view/projekt-projektrolle-view-zuko-page.ts","../../../src/views/projekt/projekt-projektrolle-view/projekt-projektrolle-view-avis-page.ts","../../../src/views/projekt/projekt-projektrolle-view/projekt-projektrolle-view-news-page.ts","../../../src/views/projekt/projekt-projektrolle-view.ts","../../../src/rdx/reducers/projekt/projektrollen.js","../../../src/vis/vis-styles.js","../../../src/bs/components/vis-component.js","../../../src/models/netzwerkHierachie.ts","../../../src/views/projekt/projekt-projektrollen-view.ts","../../../src/rdx/actions/projekt/projekteinstellungen.js","../../../src/models/projekt/abrechnungsKonfigurator.ts","../../../src/views/projekt/projekt-einstellungen-view/projekt-einstellungen-view-abrechnungskonfigurator-page.ts","../../../src/models/projekt/projektKonfiguration.ts","../../../node_modules/moment/locale/de.js","../../../src/views/projekt/projekt-einstellungen-view/projekt-einstellungen-view-projekt-konfiguration-page.ts","../../../src/views/projekt/projekt-einstellungen-view.ts","../../../src/rdx/actions/projekt/projekt-projektbeteiligten-erstellen-view-data.js","../../../src/rdx/actions/projekt/projektbeteiligter.js","../../../src/rdx/reducers/projekt/projektbeteiligte.js","../../../src/models/projekt/projektbeteiligte.ts","../../../src/models/projekt/projektbeteiligter.ts","../../../src/rdx/reducers/projekt/projekt-projektbeteiligten-erstellen-view-data.js","../../../src/views/projekt/components/projekt-projektbeteiligten-erstellen-view.ts","../../../src/views/projekt/projekt-projektbeteiligte-view.ts","../../../src/rdx/actions/projekt/projekt-projektrolle-erstellen-view-data.js","../../../src/rdx/reducers/projekt/projekt-projektrolle-erstellen-view-data.js","../../../src/models/projekt/stammdatenViewData.ts","../../../src/views/projekt/projekt-projektrolle-erstellen-view/projekt-projektrolle-erstellen-view-zuko-page.ts","../../../src/views/projekt/projekt-projektrolle-erstellen-view/projekt-projektrolle-erstellen-view-projekt-page.ts","../../../src/views/projekt/projekt-projektrolle-erstellen-view/projekt-projektrolle-erstellen-view-stammdaten-page.ts","../../../src/views/projekt/projekt-projektrolle-erstellen-view/projekt-projektrolle-erstellen-view-dashboard-page.ts","../../../src/views/projekt/projekt-projektrolle-erstellen-view/projekt-projektrolle-erstellen-view-container-page.ts","../../../src/views/projekt/projekt-projektrolle-erstellen-view/projekt-projektrolle-erstellen-view-avis-page.ts","../../../src/views/projekt/projekt-projektrolle-erstellen-view/projekt-projektrolle-erstellen-view-news-page.ts","../../../src/views/projekt/projekt-projektrolle-erstellen-view.ts","../../../src/rdx/actions/zuko/firma.js","../../../src/rdx/reducers/zuko/firma.js","../../../src/models/zuko/firmenVerwalter.ts","../../../src/views/zuko/zuko-firma-view/zuko-firma-view-verwalter-page.ts","../../../src/bs/components/bs-dashboard-card.ts","../../../src/models/zuko/firmaDashboard.ts","../../../src/views/zuko/zuko-firma-view/zuko-firma-view-dashboard-page.ts","../../../src/models/zuko/unterlagenDetails.ts","../../../src/models/zuko/unterlagenStammdaten.ts","../../../src/views/zuko/zuko-firma-view/zuko-firma-view-unterlagen-page.ts","../../../src/models/zuko/firmenStammdaten.ts","../../../src/views/zuko/zuko-firma-view/zuko-firma-view-stammdaten-page.ts","../../../src/rdx/actions/zuko/personal.js","../../../src/views/zuko/zuko-firma-view/zuko-firma-view-personal-page.ts","../../../src/views/zuko/zuko-firma-view/zuko-firma-view-firmenbeziehungen-page.ts","../../../src/views/zuko/zuko-firma-view/zuko-firma-view-baustellenausweise-page.ts","../../../src/views/zuko/zuko-firma-view.ts","../../../src/rdx/actions/zuko/archiv.js","../../../src/rdx/reducers/zuko/archiv.js","../../../src/views/zuko/zuko-archiv-view/zuko-archiv-view-eufefa-page.ts","../../../src/rdx/actions/zuko/unterlagen.js","../../../src/views/zuko/zuko-archiv-view/zuko-archiv-view-mindestlohn-page.ts","../../../src/rdx/actions/zuko/mitarbeiter.js","../../../src/views/zuko/zuko-archiv-view/zuko-archiv-view-eufema-page.ts","../../../src/views/zuko/zuko-archiv-view.ts","../../../src/rdx/actions/zuko/baustelle.js","../../../src/rdx/reducers/zuko/baustelle.js","../../../src/models/zuko/personalFirmen.ts","../../../src/models/zuko/aktuelleBesetzung.ts","../../../src/models/zuko/personalAuswertungenCard.ts","../../../src/models/zuko/baustellenausweisDruckvorlage.ts","../../../src/models/zuko/baustellenausweisSuchen.ts","../../../src/models/zuko/baustellenausweisGesamt.ts","../../../src/models/zuko/baustellenausweisEinstellungen.ts","../../../src/models/zuko/firmenAuswertungenBaustelleCard.ts","../../../src/views/zuko/zuko-baustelle-view/zuko-baustelle-view-dashboard-page.ts","../../../src/views/zuko/zuko-baustelle-view.ts","../../../src/rdx/reducers/zuko/unterlagen.js","../../../src/services/container/eufeb-service.js","../../../src/bs/components/show-file-component.ts","../../../src/models/zuko/firmenUnterlagenCard.ts","../../../src/models/zuko/mindestlohnerklaerungen.ts","../../../src/models/zuko/personalUnterlagenCard.ts","../../../src/models/zuko/firmenUnterlagenAuswertungenCard.ts","../../../src/models/zuko/personalUnterlagenAuswertungenCard.ts","../../../src/views/zuko/zuko-unterlagen-view/zuko-unterlagen-view-dashboard-page.ts","../../../src/views/zuko/zuko-unterlagen-view.ts","../../../src/rdx/reducers/zuko/mitarbeiter.js","../../../src/models/zuko/mitarbeiterStammdaten.ts","../../../src/models/zuko/mitarbeiterDashbord.ts","../../../src/views/zuko/zuko-personal-view/zuko-personal-view-dashboard-page.ts","../../../src/views/zuko/zuko-personal-view/zuko-personal-view-stammdaten-page-ausweisbild-modal.ts","../../../src/views/zuko/zuko-personal-view/zuko-personal-view-stammdaten-page.ts","../../../src/views/zuko/zuko-personal-view/zuko-personal-view-unterlagen-page.ts","../../../src/models/zuko/mitarbeiterBaustellenausweise.ts","../../../src/models/zuko/mitarbeiterMindestlohnerklaerungen.ts","../../../src/models/zuko/mitarbeiter.ts","../../../src/views/zuko/zuko-personal-view/zuko-personal-view-baustellenausweise-page.ts","../../../src/views/zuko/zuko-personal-view/zuko-personal-view-mindestlohnerklaerungen-page.ts","../../../src/views/zuko/zuko-personal-view.ts","../../../src/rdx/reducers/zuko/organisation.js","../../../src/models/zuko/firmenCard.ts","../../../src/models/zuko/personalCard.ts","../../../src/models/zuko/firmenhierachieCard.ts","../../../src/views/zuko/zuko-organisation-view/zuko-organisation-view-dashboard-page.ts","../../../src/views/zuko/zuko-organisation-view.ts","../../../src/rdx/actions/zuko/einstellungen.js","../../../src/rdx/actions/zuko/berechtigungsgruppen.js","../../../src/rdx/actions/zuko/eufefas.js","../../../src/rdx/actions/zuko/eufemas.js","../../../src/rdx/actions/zuko/zutrittspunkte.js","../../../src/bs/components/bs-dashboard-input-card.ts","../../../src/rdx/actions/zuko/zeitzonen.js","../../../src/rdx/reducers/zuko/zeitzonen.js","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/components/zeitzone-erstellen-modal.ts","../../../src/models/zuko/unterlage.ts","../../../src/models/zuko/zukoServerCard.ts","../../../src/models/zuko/ausweisVorlagenCard.ts","../../../src/models/zuko/mindestlohnkonfigurator.ts","../../../src/models/zuko/BaustellenausweisVorlage.ts","../../../src/models/zutrittspunkteAdministrationCard.ts","../../../src/models/zuko/berechtigungsgruppenAdministrationCard.ts","../../../src/models/zuko/ausweisKonfigurator.ts","../../../src/views/zuko/zuko-einstellungen-view/zuko-einstellungen-view-dashboard-page.ts","../../../src/views/zuko/zuko-einstellungen-view.ts","../../../src/rdx/actions/zuko/firma-erstellen-view-data.js","../../../src/rdx/reducers/zuko/firma-erstellen-view-data.js","../../../src/models/zuko/firmaErstellenViewData.ts","../../../src/models/zuko/firmaErstellen.ts","../../../src/views/zuko/zuko-firma-erstellen-view/zuko-firma-erstellen-view-verwalter-page.ts","../../../src/views/zuko/zuko-firma-erstellen-view/zuko-firma-erstellen-view-stammdaten-page.ts","../../../src/views/zuko/zuko-firma-erstellen-view/zuko-firma-erstellen-view-unterlagen-page.ts","../../../src/views/zuko/zuko-firma-erstellen-view/zuko-firma-erstellen-view-auftraggeber-page.ts","../../../src/views/zuko/zuko-firma-erstellen-view.ts","../../../src/rdx/reducers/zuko/zutrittspunkte.js","../../../src/views/zuko/zuko-baustelle-uebersicht-view/zuko-baustelle-uebersicht-view-zeitzonen-page.ts","../../../src/models/zuko/zutrittspunkte.ts","../../../src/views/zuko/zuko-baustelle-uebersicht-view/zuko-baustelle-uebersicht-view-zutrittspunkte-page.ts","../../../src/rdx/reducers/zuko/personal.js","../../../src/views/zuko/zuko-baustelle-uebersicht-view/zuko-baustelle-uebersicht-view-baustellenausweise-page.ts","../../../src/views/zuko/zuko-baustelle-uebersicht-view/zuko-baustelle-uebersicht-view-aktuelle-besetzung-page.ts","../../../src/rdx/reducers/zuko/berechtigungsgruppen.js","../../../src/views/zuko/zuko-baustelle-uebersicht-view/zuko-baustelle-uebersicht-view-berechtigungsgruppen-page.ts","../../../src/rdx/actions/zuko/firmen.js","../../../src/rdx/reducers/zuko/firmen.js","../../../src/views/zuko/zuko-baustelle-uebersicht-view/components/zuko-baustelle-uebersicht-view-firmen-auswertungen-component.ts","../../../src/views/zuko/zuko-baustelle-uebersicht-view/components/zuko-baustelle-uebersicht-view-personal-auswertungen-component.ts","../../../src/views/zuko/zuko-baustelle-uebersicht-view/zuko-baustelle-uebersicht-view-auswertungen-zutrittsereignisse-page.ts","../../../src/views/zuko/zuko-baustelle-uebersicht-view.ts","../../../src/rdx/actions/zuko/mitarbeiter-erstellen-view-data.js","../../../src/rdx/reducers/zuko/mitarbeiter-erstellen-view-data.js","../../../src/bs/components/bs-view-title.js","../../../src/models/zuko/mitarbeiterErstellenViewData.ts","../../../src/views/zuko/zuko-personal-erstellen-view/zuko-personal-erstellen-view-stammdaten-page.ts","../../../src/views/zuko/zuko-personal-erstellen-view/zuko-personal-erstellen-view-unterlagen-page.ts","../../../src/views/zuko/zuko-personal-erstellen-view.ts","../../../src/views/zuko/zuko-unterlagen-uebersicht-view/zuko-unterlagen-uebersicht-view-firmen-unterlagen-page.ts","../../../src/views/zuko/zuko-unterlagen-uebersicht-view/zuko-unterlagen-uebersicht-view-personal-unterlagen-page.ts","../../../src/models/zuko/personalUnterlagenMindestlohnerklaerungen.ts","../../../src/views/zuko/zuko-unterlagen-uebersicht-view/zuko-unterlagen-uebersicht-view-mindestlohnerklaerungen-page.ts","../../../src/views/zuko/zuko-unterlagen-uebersicht-view.ts","../../../src/views/zuko/zuko-organisation-uebersicht-view/zuko-organisation-uebersicht-view-firmenhierarchie-page.js","../../../src/views/zuko/zuko-organisation-uebersicht-view/zuko-organisation-uebersicht-view-firmen-uebersicht-page.ts","../../../src/views/zuko/zuko-organisation-uebersicht-view/zuko-organisation-uebersicht-view-personal-uebersicht-page.ts","../../../src/views/zuko/zuko-organisation-uebersicht-view.ts","../../../src/rdx/reducers/zuko/einstellungen.js","../../../src/rdx/reducers/zuko/eufefas.js","../../../src/models/zuko/eufefa.ts","../../../src/models/zuko/firmaUnterlagen.ts","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/zuko-einstellungen-uebersicht-view-eufefa-page.ts","../../../src/rdx/reducers/zuko/eufemas.js","../../../src/models/zuko/mitarbeiterUnterlagen.ts","../../../src/models/zuko/eufemas.ts","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/zuko-einstellungen-uebersicht-view-eufemas-page.ts","../../../src/rdx/actions/zuko/ausweis-vorlagen.js","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/zuko-einstellungen-uebersicht-view-ausweis-design-page.ts","../../../src/models/zuko/zeitzonen.ts","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/zuko-einstellungen-uebersicht-view-zeitzonen-page.ts","../../../src/helper/asd-helper.js","../../../src/bs/components/bs-radio.ts","../../../src/rdx/actions/zuko/zuko-mindestlohnkonfiguration.js","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/zuko-einstellungen-uebersicht-view-mindestlohn-page.js","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/zuko-einstellungen-uebersicht-view-zutrittspunkte-page.ts","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/zuko-einstellungen-uebersicht-view-berechtigungsgruppen-page.js","../../../src/rdx/actions/zuko/baustellenausweis-konfiguration.js","../../../src/views/zuko/zuko-einstellungen-uebersicht-view/zuko-einstellungen-uebersicht-view-ausweis-gueltigkeit-konfigurator-page.ts","../../../src/views/zuko/zuko-einstellungen-uebersicht-view.ts","../../../src/rdx/actions/dashboard/tagesauswertungen.js","../../../src/rdx/reducers/dashboard/tagesauswertungen.js","../../../src/rdx/actions/dashboard/wochenauswertungen.js","../../../src/rdx/reducers/dashboard/wochenauswertungen.js","../../../src/rdx/actions/dashboard/monatsauswertungen.js","../../../src/rdx/reducers/dashboard/monatsauswertungen.js","../../../node_modules/@kurkle/color/dist/color.esm.js","../../../node_modules/chart.js/dist/chunks/helpers.segment.js","../../../node_modules/chart.js/dist/chart.js","../../../src/bs/components/chart-component.ts","../../../src/bs/components/bs-auswertungs-card.ts","../../../src/views/dashboard/dashboard-auswertungen-view/dashboard-auswertungen-view-tages-page.ts","../../../src/views/dashboard/dashboard-auswertungen-view/dashboard-auswertungen-view-wochen-page.ts","../../../src/views/dashboard/dashboard-auswertungen-view/dashboard-auswertungen-view-monats-page.ts","../../../src/views/dashboard/dashboard-auswertungen-view.ts","../../../src/rdx/actions/dashboard/einstellungen.js","../../../src/rdx/reducers/dashboard/einstellungen.js","../../../src/models/dashboard/projektbeteiligter.ts","../../../src/views/dashboard/dashboard-einstellungen-view.ts","../../../src/services/container/information-service.js","../../../src/services/container/container-unterlagen-service.js","../../../src/models/container/kontakCard.ts","../../../src/views/container/container-information-view.ts","../../../src/services/container/buchungen-service.js","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.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/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.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/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../src/bs/components/bs-popup.ts","../../../src/services/container/eufecb-service.js","../../../src/views/container/container-buchungen-view/components/unterlage-anzeigen-component.ts","../../../src/services/container/containerburg-service.js","../../../src/services/container/containerburg-konfiguration-service.js","../../../src/services/container/container-service.js","../../../src/models/container/containerburg.ts","../../../src/models/container/containerburgEbenen.ts","../../../src/models/container/containerDetails.ts","../../../src/models/container/buchungDetails.ts","../../../src/models/container/containerItem.ts","../../../src/views/container/container-buchungen-view/components/containerburg-component.ts","../../../src/models/container/buchungGenehmigenViewData.ts","../../../src/views/container/container-buchungen-view/components/container-genehmigen-component.ts","../../../src/models/container/buchungKuendigenViewData.ts","../../../src/views/container/container-buchungen-view/components/container-kuendigen-component.ts","../../../src/views/container/container-buchungen-view/components/container-verlaengern-component.ts","../../../src/models/container/buchung.ts","../../../src/views/container/container-buchungen-view/container-buchungen-view-buchungen-uebersicht-page.ts","../../../src/services/container/abrechnungsdetails-service.js","../../../src/models/container/abrechnungsDetails.ts","../../../src/views/container/container-buchungen-view/container-buchungen-view-abrechnungsdetails-page.ts","../../../src/models/container/buchungsanfrageViewData.ts","../../../src/views/container/container-buchungen-view.ts","../../../src/models/container/containerViewData.ts","../../../src/models/container/containerKonfigurationsUebersicht.ts","../../../src/views/container/container-einstellungen-view/container-einstellungen-view-container-konfiguration-page.ts","../../../src/models/container/containerburgKonfigurationsUebersicht.ts","../../../src/views/container/container-einstellungen-view/container-einstellungen-view-containerburg-konfiguration-page.ts","../../../src/models/container/containerunterlageKonfigurationsUebersicht.ts","../../../src/views/container/container-einstellungen-view/container-einstellungen-view-container-unterlagen-konfiguration-page.ts","../../../src/services/container/eufeb-konfiguration-service.js","../../../src/models/container/eufeb.ts","../../../src/views/container/container-einstellungen-view/container-einstellungen-view-eufeb-page.ts","../../../src/services/container/eufecb-konfiguration-service.js","../../../src/models/container/eufecb.ts","../../../src/views/container/container-einstellungen-view/container-einstellungen-view-eufecbs-page.ts","../../../src/services/container/einstellungen-service.js","../../../src/models/container/containerEinstellungen.ts","../../../src/views/container/container-einstellungen-view/container-einstellungen-view-modul-konfiguration-page.ts","../../../src/services/container/ausstattung-service.js","../../../src/models/container/ausstattungKonfigurationsUebersicht.ts","../../../src/models/container/ausstattungViewData.ts","../../../src/views/container/container-einstellungen-view/container-einstellungen-view-ausstattung-konfiguration-page.ts","../../../src/views/container/container-einstellungen-view.ts","../../../src/services/avis/einstellung-service.js","../../../src/models/avis/avisEinstellungen.ts","../../../src/views/avis/avis-einstellungen-view/avis-einstellungen-view-modulangaben-konfiguration-page.ts","../../../src/services/avis/unterlagen-konfiguration-service.js","../../../src/models/avisModulUnterlagenKonfigurationsUebersicht.ts","../../../src/views/avis/avis-einstellungen-view/avis-einstellungen-view-modulunterlagen-konfiguration-page.ts","../../../src/services/avis/ressourcen-konfiguration-service.js","../../../src/models/avis/avisRessourcenKonfigurationsUebersicht.ts","../../../src/views/avis/avis-einstellungen-view/avis-einstellungen-view-ressourcen-konfiguration-page.ts","../../../src/services/avis/bestimmungsort-konfiguration-service.js","../../../src/models/avis/avisBestimmungsortKonfigurationsUebersicht.ts","../../../src/views/avis/avis-einstellungen-view/avis-einstellungen-view-bestimmungsort-konfiguration-page.ts","../../../src/services/avis/zielort-konfiguration-service.js","../../../src/models/avis/avisZielortKonfigurationsUebersicht.ts","../../../src/views/avis/avis-einstellungen-view/avis-einstellungen-view-zielort-konfiguration-page.ts","../../../src/views/avis/avis-einstellungen-view.ts","../../../src/services/avis/transport-service.js","../../../src/models/avis/empfaenger.ts","../../../src/models/avis/transporteur.ts","../../../src/models/avis/fracht.ts","../../../src/models/avis/entladung.ts","../../../src/models/avis/avisTransportDetails.ts","../../../src/views/avis/components/avis-empfaenger-form-component.ts","../../../src/views/avis/components/avis-transport-form-component.ts","../../../src/views/avis/components/avis-fracht-form-component.ts","../../../node_modules/vis-data/peer/esm/vis-data.js","../../../node_modules/vis-timeline/standalone/esm/vis-timeline-graph2d.js","../../../src/models/avis/transportAnmeldenViewData.ts","../../../src/models/avis/projektOeffnungszeiten.ts","../../../src/bs/components/image-component.ts","../../../src/views/avis/components/avis-entladung-form-component.ts","../../../src/views/avis/avis-transporte-view/components/avis-transport-component.ts","../../../src/views/avis/avis-transporte-view/avis-transporte-view-transport-uebersicht-page.ts","../../../src/views/avis/avis-transporte-view/avis-transporte-view-dispo-page.ts","../../../src/views/avis/avis-transporte-view.ts","../../../src/models/avis/kontaktCard.ts","../../../src/models/avis/unterlagenCard.ts","../../../src/services/avis/information-service.js","../../../src/views/avis/avis-informationen-view.ts","../../../src/css/step-styles.js","../../../src/services/avis/transport-anmelden-service.js","../../../src/views/avis/avis-transport-anmelden-view.ts","../../../src/models/news/nachricht.ts","../../../src/views/news/news-uebersicht-view.ts","../../../src/services/news/einstellung-service.js","../../../src/models/news/einstellung.ts","../../../src/views/news/news-einstellungen-view/news-einstellungen-view-mail-konfiguration-page.ts","../../../src/views/news/news-einstellungen-view.ts","../../../src/layouts/sb-admin-2/sb-admin-2-layout.ts","../../../src/views/algo/algo-impressum-blank-view.ts","../../../src/views/identity/identity-anmelden-view.ts","../../../src/views/identity/identity-registrieren-view.ts","../../../src/views/identity/identity-passwort-vergessen-view/identity-passwort-vergessen-view-email-page.ts","../../../src/views/identity/identity-passwort-vergessen-view/identity-passwort-vergessen-view-token-page.ts","../../../src/views/identity/identity-passwort-vergessen-view/identity-passwort-vergessen-view-passwort-page.ts","../../../src/views/identity/identity-passwort-vergessen-view.ts","../../../src/layouts/blank/blank-layout.ts","../../../src/bs/components/bs-toast.ts","../../../src/algo-app.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=window,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),n=new WeakMap;class o{constructor(t,e,n){if(this._$cssResult$=!0,n!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=n.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&n.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new o(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const n=1===t.length?t[0]:e.reduce(((e,s,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[n+1]),t[0]);return new o(n,t,s)},S=(s,n)=>{e?s.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((e=>{const n=document.createElement(\"style\"),o=t.litNonce;void 0!==o&&n.setAttribute(\"nonce\",o),n.textContent=e.cssText,s.appendChild(n)}))},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{o as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as i}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var s;const e=window,r=e.trustedTypes,h=r?r.emptyScript:\"\",o=e.reactiveElementPolyfillSupport,n={toAttribute(t,i){switch(i){case Boolean:t=t?h:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let s=t;switch(i){case Boolean:s=null!==t;break;case Number:s=null===t?null:Number(t);break;case Object:case Array:try{s=JSON.parse(t)}catch(t){s=null}}return s}},a=(t,i)=>i!==t&&(i==i||t==t),l={attribute:!0,type:String,converter:n,reflect:!1,hasChanged:a},d=\"finalized\";class u extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this._$Eu()}static addInitializer(t){var i;this.finalize(),(null!==(i=this.h)&&void 0!==i?i:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((i,s)=>{const e=this._$Ep(s,i);void 0!==e&&(this._$Ev.set(e,s),t.push(e))})),t}static createProperty(t,i=l){if(i.state&&(i.attribute=!1),this.finalize(),this.elementProperties.set(t,i),!i.noAccessor&&!this.prototype.hasOwnProperty(t)){const s=\"symbol\"==typeof t?Symbol():\"__\"+t,e=this.getPropertyDescriptor(t,s,i);void 0!==e&&Object.defineProperty(this.prototype,t,e)}}static getPropertyDescriptor(t,i,s){return{get(){return this[i]},set(e){const r=this[t];this[i]=e,this.requestUpdate(t,r,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||l}static finalize(){if(this.hasOwnProperty(d))return!1;this[d]=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty(\"properties\")){const t=this.properties,i=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const s of i)this.createProperty(s,t[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(i){const s=[];if(Array.isArray(i)){const e=new Set(i.flat(1/0).reverse());for(const i of e)s.unshift(t(i))}else void 0!==i&&s.push(t(i));return s}static _$Ep(t,i){const s=i.attribute;return!1===s?void 0:\"string\"==typeof s?s:\"string\"==typeof t?t.toLowerCase():void 0}_$Eu(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var i,s;(null!==(i=this._$ES)&&void 0!==i?i:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(s=t.hostConnected)||void 0===s||s.call(t))}removeController(t){var i;null===(i=this._$ES)||void 0===i||i.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,i)=>{this.hasOwnProperty(i)&&(this._$Ei.set(i,this[i]),delete this[i])}))}createRenderRoot(){var t;const s=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return i(s,this.constructor.elementStyles),s}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostConnected)||void 0===i?void 0:i.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostDisconnected)||void 0===i?void 0:i.call(t)}))}attributeChangedCallback(t,i,s){this._$AK(t,s)}_$EO(t,i,s=l){var e;const r=this.constructor._$Ep(t,s);if(void 0!==r&&!0===s.reflect){const h=(void 0!==(null===(e=s.converter)||void 0===e?void 0:e.toAttribute)?s.converter:n).toAttribute(i,s.type);this._$El=t,null==h?this.removeAttribute(r):this.setAttribute(r,h),this._$El=null}}_$AK(t,i){var s;const e=this.constructor,r=e._$Ev.get(t);if(void 0!==r&&this._$El!==r){const t=e.getPropertyOptions(r),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(s=t.converter)||void 0===s?void 0:s.fromAttribute)?t.converter:n;this._$El=r,this[r]=h.fromAttribute(i,t.type),this._$El=null}}requestUpdate(t,i,s){let e=!0;void 0!==t&&(((s=s||this.constructor.getPropertyOptions(t)).hasChanged||a)(this[t],i)?(this._$AL.has(t)||this._$AL.set(t,i),!0===s.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,s))):e=!1),!this.isUpdatePending&&e&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,i)=>this[i]=t)),this._$Ei=void 0);let i=!1;const s=this._$AL;try{i=this.shouldUpdate(s),i?(this.willUpdate(s),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var i;return null===(i=t.hostUpdate)||void 0===i?void 0:i.call(t)})),this.update(s)):this._$Ek()}catch(t){throw i=!1,this._$Ek(),t}i&&this._$AE(s)}willUpdate(t){}_$AE(t){var i;null===(i=this._$ES)||void 0===i||i.forEach((t=>{var i;return null===(i=t.hostUpdated)||void 0===i?void 0:i.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,i)=>this._$EO(i,this[i],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}u[d]=!0,u.elementProperties=new Map,u.elementStyles=[],u.shadowRootOptions={mode:\"open\"},null==o||o({ReactiveElement:u}),(null!==(s=e.reactiveElementVersions)&&void 0!==s?s:e.reactiveElementVersions=[]).push(\"1.6.3\");export{u as ReactiveElement,n as defaultConverter,a as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nvar t;const i=window,s=i.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,o=\"$lit$\",n=`lit$${(Math.random()+\"\").slice(9)}$`,l=\"?\"+n,h=`<${l}>`,r=document,u=()=>r.createComment(\"\"),d=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,c=Array.isArray,v=t=>c(t)||\"function\"==typeof(null==t?void 0:t[Symbol.iterator]),a=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${a}(?:([^\\\\s\"'>=/]+)(${a}*=${a}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,w=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=w(1),b=w(2),T=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),E=new WeakMap,C=r.createTreeWalker(r,129,null,!1);function P(t,i){if(!Array.isArray(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,e=[];let l,r=2===i?\"\":\"\",u=f;for(let i=0;i\"===c[0]?(u=null!=l?l:f,v=-1):void 0===c[1]?v=-2:(v=u.lastIndex-c[2].length,d=c[1],u=void 0===c[3]?p:'\"'===c[3]?$:g):u===$||u===g?u=p:u===_||u===m?u=f:(u=p,l=void 0);const w=u===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";r+=u===f?s+h:v>=0?(e.push(d),s.slice(0,v)+o+s.slice(v)+n+w):s+n+(-2===v?(e.push(void 0),i):w)}return[P(t,r+(t[s]||\"\")+(2===i?\"\":\"\")),e]};class N{constructor({strings:t,_$litType$:i},e){let h;this.parts=[];let r=0,d=0;const c=t.length-1,v=this.parts,[a,f]=V(t,i);if(this.el=N.createElement(a,e),C.currentNode=this.el.content,2===i){const t=this.el.content,i=t.firstChild;i.remove(),t.append(...i.childNodes)}for(;null!==(h=C.nextNode())&&v.length0){h.textContent=s?s.emptyScript:\"\";for(let s=0;s2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,i=this,s,e){const o=this.strings;let n=!1;if(void 0===o)t=S(this,t,i,0),n=!d(t)||t!==this._$AH&&t!==T,n&&(this._$AH=t);else{const e=t;let l,h;for(t=o[0],l=0;l{var e,o;const n=null!==(e=null==s?void 0:s.renderBefore)&&void 0!==e?e:i;let l=n._$litPart$;if(void 0===l){const t=null!==(o=null==s?void 0:s.renderBefore)&&void 0!==o?o:null;n._$litPart$=l=new R(i.insertBefore(u(),t),t,void 0,null!=s?s:{})}return l._$AI(t),l};export{j as _$LH,x as html,T as noChange,A as nothing,D as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as i}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */var l,o;const r=t;class s extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var t,e;const i=super.createRenderRoot();return null!==(t=(e=this.renderOptions).renderBefore)&&void 0!==t||(e.renderBefore=i.firstChild),i}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(i,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return i}}s.finalized=!0,s._$litElement$=!0,null===(l=globalThis.litElementHydrateSupport)||void 0===l||l.call(globalThis,{LitElement:s});const n=globalThis.litElementPolyfillSupport;null==n||n({LitElement:s});const h={_$AK:(t,e,i)=>{t._$AK(e,i)},_$AL:t=>t._$AL};(null!==(o=globalThis.litElementVersions)&&void 0!==o?o:globalThis.litElementVersions=[]).push(\"3.3.3\");export{s as LitElement,r as UpdatingElement,h as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/* eslint-disable no-unused-vars */\n/**\n * When using Closure Compiler, JSCompiler_renameProperty(property, object) is replaced by the munged name for object[property]\n * We cannot alias this function, so we have to use a small shim that has the same behavior when not compiling.\n *\n * @param {?} prop Property name\n * @param {*} obj Reference object\n * @return {string} Potentially renamed property name\n */\nwindow.JSCompiler_renameProperty = function(prop, obj) {\n return prop;\n};\n/* eslint-enable */\n\nexport {};\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport './boot.js';\n\nlet CSS_URL_RX = /(url\\()([^)]*)(\\))/g;\nlet ABS_URL = /(^\\/[^\\/])|(^#)|(^[\\w-\\d]*:)/;\nlet workingURL;\nlet resolveDoc;\n/**\n * Resolves the given URL against the provided `baseUri'.\n *\n * Note that this function performs no resolution for URLs that start\n * with `/` (absolute URLs) or `#` (hash identifiers). For general purpose\n * URL resolution, use `window.URL`.\n *\n * @param {string} url Input URL to resolve\n * @param {?string=} baseURI Base URI to resolve the URL against\n * @return {string} resolved URL\n */\nexport function resolveUrl(url, baseURI) {\n if (url && ABS_URL.test(url)) {\n return url;\n }\n if (url === '//') {\n return url;\n }\n // Lazy feature detection.\n if (workingURL === undefined) {\n workingURL = false;\n try {\n const u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n workingURL = (u.href === 'http://a/c%20d');\n } catch (e) {\n // silently fail\n }\n }\n if (!baseURI) {\n baseURI = document.baseURI || window.location.href;\n }\n if (workingURL) {\n try {\n return (new URL(url, baseURI)).href;\n } catch (e) {\n // Bad url or baseURI structure. Do not attempt to resolve.\n return url;\n }\n }\n // Fallback to creating an anchor into a disconnected document.\n if (!resolveDoc) {\n resolveDoc = document.implementation.createHTMLDocument('temp');\n resolveDoc.base = resolveDoc.createElement('base');\n resolveDoc.head.appendChild(resolveDoc.base);\n resolveDoc.anchor = resolveDoc.createElement('a');\n resolveDoc.body.appendChild(resolveDoc.anchor);\n }\n resolveDoc.base.href = baseURI;\n resolveDoc.anchor.href = url;\n return resolveDoc.anchor.href || url;\n\n}\n\n/**\n * Resolves any relative URL's in the given CSS text against the provided\n * `ownerDocument`'s `baseURI`.\n *\n * @param {string} cssText CSS text to process\n * @param {string} baseURI Base URI to resolve the URL against\n * @return {string} Processed CSS text with resolved URL's\n */\nexport function resolveCss(cssText, baseURI) {\n return cssText.replace(CSS_URL_RX, function(m, pre, url, post) {\n return pre + '\\'' +\n resolveUrl(url.replace(/[\"']/g, ''), baseURI) +\n '\\'' + post;\n });\n}\n\n/**\n * Returns a path from a given `url`. The path includes the trailing\n * `/` from the url.\n *\n * @param {string} url Input URL to transform\n * @return {string} resolved path\n */\nexport function pathFromUrl(url) {\n return url.substring(0, url.lastIndexOf('/') + 1);\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\nimport './boot.js';\nimport { pathFromUrl } from './resolve-url.js';\nexport const useShadow = !(window.ShadyDOM) || !(window.ShadyDOM.inUse);\nexport const useNativeCSSProperties = Boolean(!window.ShadyCSS || window.ShadyCSS.nativeCss);\nexport const useNativeCustomElements = !(window.customElements.polyfillWrapFlushCallback);\nexport const supportsAdoptingStyleSheets = useShadow &&\n ('adoptedStyleSheets' in Document.prototype) &&\n ('replaceSync' in CSSStyleSheet.prototype) &&\n // Since spec may change, feature detect exact API we need\n (() => {\n try {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync('');\n const host = document.createElement('div');\n host.attachShadow({mode: 'open'});\n host.shadowRoot.adoptedStyleSheets = [sheet];\n return (host.shadowRoot.adoptedStyleSheets[0] === sheet);\n } catch(e) {\n return false;\n }\n })();\n\n/**\n * Globally settable property that is automatically assigned to\n * `ElementMixin` instances, useful for binding in templates to\n * make URL's relative to an application's root. Defaults to the main\n * document URL, but can be overridden by users. It may be useful to set\n * `rootPath` to provide a stable application mount path when\n * using client side routing.\n */\nexport let rootPath = window.Polymer && window.Polymer.rootPath ||\n pathFromUrl(document.baseURI || window.location.href);\n\n/**\n * Sets the global rootPath property used by `ElementMixin` and\n * available via `rootPath`.\n *\n * @param {string} path The new root path\n * @return {void}\n */\nexport const setRootPath = function(path) {\n rootPath = path;\n};\n\n/**\n * A global callback used to sanitize any value before inserting it into the DOM.\n * The callback signature is:\n *\n * function sanitizeDOMValue(value, name, type, node) { ... }\n *\n * Where:\n *\n * `value` is the value to sanitize.\n * `name` is the name of an attribute or property (for example, href).\n * `type` indicates where the value is being inserted: one of property, attribute, or text.\n * `node` is the node where the value is being inserted.\n *\n * @type {(function(*,string,string,?Node):*)|undefined}\n */\nexport let sanitizeDOMValue =\n window.Polymer && window.Polymer.sanitizeDOMValue || undefined;\n\n/**\n * Sets the global sanitizeDOMValue available via this module's exported\n * `sanitizeDOMValue` variable.\n *\n * @param {(function(*,string,string,?Node):*)|undefined} newSanitizeDOMValue the global sanitizeDOMValue callback\n * @return {void}\n */\nexport const setSanitizeDOMValue = function(newSanitizeDOMValue) {\n sanitizeDOMValue = newSanitizeDOMValue;\n};\n\n/**\n * Gets sanitizeDOMValue, for environments that don't well support `export let`.\n *\n * @return {(function(*,string,string,?Node):*)|undefined} sanitizeDOMValue\n */\nexport const getSanitizeDOMValue = function() {\n return sanitizeDOMValue;\n};\n\n/**\n * Globally settable property to make Polymer Gestures use passive TouchEvent listeners when recognizing gestures.\n * When set to `true`, gestures made from touch will not be able to prevent scrolling, allowing for smoother\n * scrolling performance.\n * Defaults to `false` for backwards compatibility.\n */\nexport let passiveTouchGestures =\n window.Polymer && window.Polymer.setPassiveTouchGestures || false;\n\n/**\n * Sets `passiveTouchGestures` globally for all elements using Polymer Gestures.\n *\n * @param {boolean} usePassive enable or disable passive touch gestures globally\n * @return {void}\n */\nexport const setPassiveTouchGestures = function(usePassive) {\n passiveTouchGestures = usePassive;\n};\n\n/**\n * Setting to ensure Polymer template evaluation only occurs based on tempates\n * defined in trusted script. When true, `` re-registration is\n * disallowed, `` is disabled, and ``/``\n * templates will only evaluate in the context of a trusted element template.\n */\nexport let strictTemplatePolicy =\n window.Polymer && window.Polymer.strictTemplatePolicy || false;\n\n/**\n * Sets `strictTemplatePolicy` globally for all elements\n *\n * @param {boolean} useStrictPolicy enable or disable strict template policy\n * globally\n * @return {void}\n */\nexport const setStrictTemplatePolicy = function(useStrictPolicy) {\n strictTemplatePolicy = useStrictPolicy;\n};\n\n/**\n * Setting to enable dom-module lookup from Polymer.Element. By default,\n * templates must be defined in script using the `static get template()`\n * getter and the `html` tag function. To enable legacy loading of templates\n * via dom-module, set this flag to true.\n */\nexport let allowTemplateFromDomModule =\n window.Polymer && window.Polymer.allowTemplateFromDomModule || false;\n\n/**\n * Sets `lookupTemplateFromDomModule` globally for all elements\n *\n * @param {boolean} allowDomModule enable or disable template lookup\n * globally\n * @return {void}\n */\nexport const setAllowTemplateFromDomModule = function(allowDomModule) {\n allowTemplateFromDomModule = allowDomModule;\n};\n\n/**\n * Setting to skip processing style includes and re-writing urls in css styles.\n * Normally \"included\" styles are pulled into the element and all urls in styles\n * are re-written to be relative to the containing script url.\n * If no includes or relative urls are used in styles, these steps can be\n * skipped as an optimization.\n */\nexport let legacyOptimizations =\n window.Polymer && window.Polymer.legacyOptimizations || false;\n\n/**\n * Sets `legacyOptimizations` globally for all elements to enable optimizations\n * when only legacy based elements are used.\n *\n * @param {boolean} useLegacyOptimizations enable or disable legacy optimizations\n * includes and url rewriting\n * @return {void}\n */\nexport const setLegacyOptimizations = function(useLegacyOptimizations) {\n legacyOptimizations = useLegacyOptimizations;\n};\n\n/**\n * Setting to add warnings useful when migrating from Polymer 1.x to 2.x.\n */\nexport let legacyWarnings =\n window.Polymer && window.Polymer.legacyWarnings || false;\n\n/**\n * Sets `legacyWarnings` globally for all elements to migration warnings.\n *\n * @param {boolean} useLegacyWarnings enable or disable warnings\n * @return {void}\n */\nexport const setLegacyWarnings = function(useLegacyWarnings) {\n legacyWarnings = useLegacyWarnings;\n};\n\n/**\n * Setting to perform initial rendering synchronously when running under ShadyDOM.\n * This matches the behavior of Polymer 1.\n */\nexport let syncInitialRender =\n window.Polymer && window.Polymer.syncInitialRender || false;\n\n/**\n * Sets `syncInitialRender` globally for all elements to enable synchronous\n * initial rendering.\n *\n * @param {boolean} useSyncInitialRender enable or disable synchronous initial\n * rendering globally.\n * @return {void}\n */\nexport const setSyncInitialRender = function(useSyncInitialRender) {\n syncInitialRender = useSyncInitialRender;\n};\n\n/**\n * Setting to retain the legacy Polymer 1 behavior for multi-property\n * observers around undefined values. Observers and computed property methods\n * are not called until no argument is undefined.\n */\nexport let legacyUndefined =\n window.Polymer && window.Polymer.legacyUndefined || false;\n\n/**\n * Sets `legacyUndefined` globally for all elements to enable legacy\n * multi-property behavior for undefined values.\n *\n * @param {boolean} useLegacyUndefined enable or disable legacy\n * multi-property behavior for undefined.\n * @return {void}\n */\nexport const setLegacyUndefined = function(useLegacyUndefined) {\n legacyUndefined = useLegacyUndefined;\n};\n\n/**\n * Setting to ensure computed properties are computed in order to ensure\n * re-computation never occurs in a given turn.\n */\nexport let orderedComputed =\n window.Polymer && window.Polymer.orderedComputed || false;\n\n/**\n * Sets `orderedComputed` globally for all elements to enable ordered computed\n * property computation.\n *\n * @param {boolean} useOrderedComputed enable or disable ordered computed effects\n * @return {void}\n */\nexport const setOrderedComputed = function(useOrderedComputed) {\n orderedComputed = useOrderedComputed;\n};\n\n/**\n * Setting to cancel synthetic click events fired by older mobile browsers. Modern browsers\n * no longer fire synthetic click events, and the cancellation behavior can interfere\n * when programmatically clicking on elements.\n */\nexport let cancelSyntheticClickEvents = true;\n\n/**\n * Sets `setCancelSyntheticEvents` globally for all elements to cancel synthetic click events.\n *\n * @param {boolean} useCancelSyntheticClickEvents enable or disable cancelling synthetic\n * events\n * @return {void}\n */\nexport const setCancelSyntheticClickEvents = function(useCancelSyntheticClickEvents) {\n cancelSyntheticClickEvents = useCancelSyntheticClickEvents;\n};\n\n/**\n * Setting to remove nested templates inside `dom-if` and `dom-repeat` as\n * part of element template parsing. This is a performance optimization that\n * eliminates most of the tax of needing two elements due to the loss of\n * type-extended templates as a result of the V1 specification changes.\n */\nexport let removeNestedTemplates =\n window.Polymer && window.Polymer.removeNestedTemplates || false;\n\n/**\n * Sets `removeNestedTemplates` globally, to eliminate nested templates\n * inside `dom-if` and `dom-repeat` as part of template parsing.\n *\n * @param {boolean} useRemoveNestedTemplates enable or disable removing nested\n * templates during parsing\n * @return {void}\n */\nexport const setRemoveNestedTemplates = function(useRemoveNestedTemplates) {\n removeNestedTemplates = useRemoveNestedTemplates;\n};\n\n/**\n * Setting to place `dom-if` elements in a performance-optimized mode that takes\n * advantage of lighter-weight host runtime template stamping to eliminate the\n * need for an intermediate Templatizer `TemplateInstance` to mange the nodes\n * stamped by `dom-if`. Under this setting, any Templatizer-provided API's\n * such as `modelForElement` will not be available for nodes stamped by\n * `dom-if`.\n */\nexport let fastDomIf = window.Polymer && window.Polymer.fastDomIf || false;\n\n/**\n * Sets `fastDomIf` globally, to put `dom-if` in a performance-optimized mode.\n *\n * @param {boolean} useFastDomIf enable or disable `dom-if` fast-mode\n * @return {void}\n */\nexport const setFastDomIf = function(useFastDomIf) {\n fastDomIf = useFastDomIf;\n};\n\n/**\n * Setting to disable `dom-change` and `rendered-item-count` events from\n * `dom-if` and `dom-repeat`. Users can opt back into `dom-change` events by\n * setting the `notify-dom-change` attribute (`notifyDomChange: true` property)\n * to `dom-if`/`don-repeat` instances.\n */\nexport let suppressTemplateNotifications =\n window.Polymer && window.Polymer.suppressTemplateNotifications || false;\n\n/**\n * Sets `suppressTemplateNotifications` globally, to disable `dom-change` and\n * `rendered-item-count` events from `dom-if` and `dom-repeat`.\n *\n * @param {boolean} suppress enable or disable `suppressTemplateNotifications`\n * @return {void}\n */\nexport const setSuppressTemplateNotifications = function(suppress) {\n suppressTemplateNotifications = suppress;\n};\n\n/**\n * Setting to disable use of dynamic attributes. This is an optimization\n * to avoid setting `observedAttributes`. Instead attributes are read\n * once at create time and set/removeAttribute are patched.\n */\nexport let legacyNoObservedAttributes =\n window.Polymer && window.Polymer.legacyNoObservedAttributes || false;\n\n/**\n * Sets `legacyNoObservedAttributes` globally, to disable `observedAttributes`.\n *\n * @param {boolean} noObservedAttributes enable or disable `legacyNoObservedAttributes`\n * @return {void}\n */\nexport const setLegacyNoObservedAttributes = function(noObservedAttributes) {\n legacyNoObservedAttributes = noObservedAttributes;\n};\n\n/**\n * Setting to enable use of `adoptedStyleSheets` for sharing style sheets\n * between component instances' shadow roots, if the app uses built Shady CSS\n * styles.\n */\nexport let useAdoptedStyleSheetsWithBuiltCSS =\n window.Polymer && window.Polymer.useAdoptedStyleSheetsWithBuiltCSS || false;\n\n/**\n * Sets `useAdoptedStyleSheetsWithBuiltCSS` globally.\n *\n * @param {boolean} value enable or disable `useAdoptedStyleSheetsWithBuiltCSS`\n * @return {void}\n */\nexport const setUseAdoptedStyleSheetsWithBuiltCSS = function(value) {\n useAdoptedStyleSheetsWithBuiltCSS = value;\n};\n","/**\n@license\nCopyright (c) 2018 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n/**\n This is a JavaScript mixin that you can use to connect a Custom Element base\n class to a Redux store. The `stateChanged(state)` method will be called when\n the state is updated.\n\n Example:\n\n import { connect } from 'pwa-helpers/connect-mixin.js';\n\n class MyElement extends connect(store)(HTMLElement) {\n stateChanged(state) {\n this.textContent = state.data.count.toString();\n }\n }\n*/\nexport const connect = (store) => (baseElement) => class extends baseElement {\n connectedCallback() {\n if (super.connectedCallback) {\n super.connectedCallback();\n }\n this._storeUnsubscribe = store.subscribe(() => this.stateChanged(store.getState()));\n this.stateChanged(store.getState());\n }\n disconnectedCallback() {\n this._storeUnsubscribe();\n if (super.disconnectedCallback) {\n super.disconnectedCallback();\n }\n }\n /**\n * The `stateChanged(state)` method will be called when the state is updated.\n */\n stateChanged(_state) { }\n};\n//# sourceMappingURL=connect-mixin.js.map","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","/**\n@license\nCopyright (c) 2018 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n/**\n A Redux store enhancer that lets you lazy-install reducers after the store\n has booted up. Use this if your application lazy-loads routes that are connected\n to a Redux store.\n\n Example:\n\n import { combineReducers } from 'redux';\n import { lazyReducerEnhancer } from 'pwa-helpers/lazy-reducer-enhancer.js';\n import someReducer from './reducers/someReducer.js';\n\n export const store = createStore(\n (state, action) => state,\n compose(lazyReducerEnhancer(combineReducers))\n );\n\n Then, in your page/element, you can lazy load a specific reducer with:\n\n store.addReducers({\n someReducer\n });\n*/\nexport const lazyReducerEnhancer = (combineReducers) => {\n const enhancer = (nextCreator) => {\n return (origReducer, preloadedState) => {\n let lazyReducers = {};\n const nextStore = nextCreator(origReducer, preloadedState);\n return Object.assign({}, nextStore, { addReducers(newReducers) {\n const combinedReducerMap = Object.assign({}, lazyReducers, newReducers);\n this.replaceReducer(combineReducers(lazyReducers = combinedReducerMap));\n } });\n };\n };\n return enhancer;\n};\n//# sourceMappingURL=lazy-reducer-enhancer.js.map","/*!\n * Microsoft Dynamic Proto Utility, 1.1.11\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n/**\r\n * Gets the runtime global reference\r\n * @returns\r\n */\r\nfunction _getGlobal() {\r\n var result;\r\n if (typeof globalThis !== UNDEFINED) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== UNDEFINED) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== UNDEFINED) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== UNDEFINED) {\r\n result = global;\r\n }\r\n return result || {};\r\n}\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = _getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n o: (_a = {},\r\n _a[strSetInstFuncs] = true,\r\n _a[strUseBaseInst] = true,\r\n _a),\r\n n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n var newProto;\r\n if (target) {\r\n // This method doesn't exist in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n newProto = target[DynProtoBaseProto] || curProto;\r\n if (!_hasOwnProperty(target, DynProtoBaseProto)) {\r\n // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n target[DynProtoCurrent] = curProto;\r\n }\r\n }\r\n return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n if (_objGetOwnProps) {\r\n props = _objGetOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)) && funcName !== str__Proto && funcName !== Prototype);\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\nfunction _newObject() {\r\n return Object.create ? (function(obj) { /* ai_es3_polyfil create */ var func = Object[\"create\"]; if (func) { return func(obj); } if (obj == null) { return {}; } var type = typeof obj; if (type !== 'object' && type !== 'function') { throw new TypeError('Object prototype may only be an Object:' + obj); } function tmpFunc() {} tmpFunc.prototype = obj; return new tmpFunc(); })(null) : {};\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = _newObject();\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = _newObject();\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || _newObject();\r\n instFunc = (instFuncTable[proto[DynClassName]] || _newObject())[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n // eslint-disable-next-line prefer-rest-params\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || _newObject();\r\n if (!_isObjectOrArrayPrototype(instFuncTable)) {\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || _newObject()); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n if (!_isObjectOrArrayPrototype(instFuncs_1)) {\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n }\r\n // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nfunction dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n _gblInst.n++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\n\nexport { dynamicProto as default };\n//# sourceMappingURL=dynamicproto-js.js.map\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var strShimFunction = \"function\";\r\nexport var strShimObject = \"object\";\r\nexport var strShimUndefined = \"undefined\";\r\nexport var strShimPrototype = \"prototype\";\r\nexport var strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport var strDefault = \"default\";\r\nexport var ObjClass = Object;\r\nexport var ObjProto = ObjClass[strShimPrototype];\r\nexport var ObjAssign = ObjClass[\"assign\"];\r\nexport var ObjCreate = ObjClass[\"create\"];\r\nexport var ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport var ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n//# sourceMappingURL=Constants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\nvar _cachedGlobal = null;\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(useCached) {\r\n if (useCached === void 0) { useCached = true; }\r\n var result = useCached === false ? null : _cachedGlobal;\r\n if (!result) {\r\n if (typeof globalThis !== strShimUndefined) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== strShimUndefined) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== strShimUndefined) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== strShimUndefined) {\r\n result = global;\r\n }\r\n _cachedGlobal = result;\r\n }\r\n return result;\r\n}\r\nexport function throwTypeError(message) {\r\n throw new TypeError(message);\r\n}\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj) {\r\n var func = ObjCreate;\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj);\r\n }\r\n if (obj == null) {\r\n return {};\r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) {\r\n throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n }\r\n function tmpFunc() { }\r\n tmpFunc[strShimPrototype] = obj;\r\n return new tmpFunc();\r\n}\r\n//# sourceMappingURL=Helpers.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjAssign, ObjClass, ObjCreate, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strDefault, strShimFunction, strShimHasOwnProperty, strShimPrototype } from \"./Constants\";\r\nimport { getGlobal, objCreateFn, throwTypeError } from \"./Helpers\";\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES3 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\nexport var SymbolObj = (getGlobal() || {})[\"Symbol\"];\r\nexport var ReflectObj = (getGlobal() || {})[\"Reflect\"];\r\nexport var __hasSymbol = !!SymbolObj;\r\nexport var __hasReflect = !!ReflectObj;\r\nvar strDecorate = \"decorate\";\r\nvar strMetadata = \"metadata\";\r\nvar strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nvar strIterator = \"iterator\";\r\nexport var __objAssignFnImpl = function (t) {\r\n // tslint:disable-next-line: ban-comma-operator\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) {\r\n if (ObjProto[strShimHasOwnProperty].call(s, p)) {\r\n t[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n};\r\nexport var __assignFn = ObjAssign || __objAssignFnImpl;\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function (d, b) {\r\n extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d, b) {\r\n for (var p in b) {\r\n if (b[strShimHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return extendStaticsFn(d, b);\r\n};\r\nexport function __extendsFn(d, b) {\r\n if (typeof b !== strShimFunction && b !== null) {\r\n throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n }\r\n extendStaticsFn(d, b);\r\n function __() {\r\n this.constructor = d;\r\n }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new __());\r\n}\r\nexport function __restFn(s, e) {\r\n var t = {};\r\n for (var k in s) {\r\n if (ObjHasOwnProperty.call(s, k) && e.indexOf(k) < 0) {\r\n t[k] = s[k];\r\n }\r\n }\r\n if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && ObjProto[\"propertyIsEnumerable\"].call(s, p[i])) {\r\n t[p[i]] = s[p[i]];\r\n }\r\n }\r\n }\r\n return t;\r\n}\r\nexport function __decorateFn(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n }\r\n else {\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line no-cond-assign\r\n if (d = decorators[i]) {\r\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line:ban-comma-operator\r\n return c > 3 && r && ObjDefineProperty(target, key, r), r;\r\n}\r\nexport function __paramFn(paramIndex, decorator) {\r\n return function (target, key) {\r\n decorator(target, key, paramIndex);\r\n };\r\n}\r\nexport function __metadataFn(metadataKey, metadataValue) {\r\n if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n }\r\n}\r\nexport function __exportStarFn(m, o) {\r\n for (var p in m) {\r\n if (p !== strDefault && !ObjHasOwnProperty.call(o, p)) {\r\n __createBindingFn(o, m, p);\r\n }\r\n }\r\n}\r\nexport function __createBindingFn(o, m, k, k2) {\r\n if (k2 === undefined) {\r\n k2 = k;\r\n }\r\n if (!!ObjCreate) {\r\n ObjDefineProperty(o, k2, {\r\n enumerable: true,\r\n get: function () {\r\n return m[k];\r\n }\r\n });\r\n }\r\n else {\r\n o[k2] = m[k];\r\n }\r\n}\r\nexport function __valuesFn(o) {\r\n var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n if (m) {\r\n return m.call(o);\r\n }\r\n if (o && typeof o.length === \"number\") {\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) {\r\n o = void 0;\r\n }\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n }\r\n throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\nexport function __readFn(o, n) {\r\n var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n if (!m) {\r\n return o;\r\n }\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) {\r\n ar.push(r.value);\r\n }\r\n }\r\n catch (error) {\r\n e = {\r\n error: error\r\n };\r\n }\r\n finally {\r\n try {\r\n // tslint:disable-next-line:no-conditional-assignment\r\n if (r && !r.done && (m = i[\"return\"])) {\r\n m.call(i);\r\n }\r\n }\r\n finally {\r\n if (e) {\r\n // eslint-disable-next-line no-unsafe-finally\r\n throw e.error;\r\n }\r\n }\r\n }\r\n return ar;\r\n}\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n var theArgs = arguments;\r\n // Calculate new total size\r\n for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n s += theArgs[i].length;\r\n }\r\n // Create new full array\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n r[k] = a[j];\r\n }\r\n }\r\n return r;\r\n}\r\nexport function __spreadArrayFn(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n to[j] = from[i];\r\n }\r\n return to;\r\n}\r\nexport function __makeTemplateObjectFn(cooked, raw) {\r\n if (ObjDefineProperty) {\r\n ObjDefineProperty(cooked, \"raw\", { value: raw });\r\n }\r\n else {\r\n cooked.raw = raw;\r\n }\r\n return cooked;\r\n}\r\nexport function __importStarFn(mod) {\r\n if (mod && mod.__esModule) {\r\n return mod;\r\n }\r\n var result = {};\r\n if (mod != null) {\r\n for (var k in mod) {\r\n if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n __createBindingFn(result, mod, k);\r\n }\r\n }\r\n }\r\n // Set default module\r\n if (!!ObjCreate) {\r\n ObjDefineProperty(result, strDefault, { enumerable: true, value: mod });\r\n }\r\n else {\r\n result[strDefault] = mod;\r\n }\r\n return result;\r\n}\r\nexport function __importDefaultFn(mod) {\r\n return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n//# sourceMappingURL=TsLibShims.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 8\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_GET_NOTIFY_MGR = \"getNotifyMgr\"; // Count: 3\r\nexport var _DYN_IDENTIFIER = \"identifier\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 30\r\nexport var _DYN_IS_INITIALIZED = \"isInitialized\"; // Count: 10\r\nexport var _DYN_CONFIG = \"config\"; // Count: 7\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 3\r\nexport var _DYN_LOGGER = \"logger\"; // Count: 10\r\nexport var _DYN_LENGTH = \"length\"; // Count: 45\r\nexport var _DYN_TIME = \"time\"; // Count: 5\r\nexport var _DYN_PROCESS_NEXT = \"processNext\"; // Count: 21\r\nexport var _DYN_GET_PROCESS_TEL_CONT0 = \"getProcessTelContext\"; // Count: 2\r\nexport var _DYN_ADD_NOTIFICATION_LIS1 = \"addNotificationListener\"; // Count: 5\r\nexport var _DYN_REMOVE_NOTIFICATION_2 = \"removeNotificationListener\"; // Count: 5\r\nexport var _DYN_STOP_POLLING_INTERNA3 = \"stopPollingInternalLogs\"; // Count: 2\r\nexport var _DYN_ON_COMPLETE = \"onComplete\"; // Count: 6\r\nexport var _DYN_GET_PLUGIN = \"getPlugin\"; // Count: 5\r\nexport var _DYN_FLUSH = \"flush\"; // Count: 5\r\nexport var _DYN__EXTENSIONS = \"_extensions\"; // Count: 4\r\nexport var _DYN_SPLICE = \"splice\"; // Count: 6\r\nexport var _DYN_TEARDOWN = \"teardown\"; // Count: 10\r\nexport var _DYN_MESSAGE_ID = \"messageId\"; // Count: 4\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 7\r\nexport var _DYN_IS_ASYNC = \"isAsync\"; // Count: 7\r\nexport var _DYN__DO_TEARDOWN = \"_doTeardown\"; // Count: 4\r\nexport var _DYN_UPDATE = \"update\"; // Count: 7\r\nexport var _DYN_GET_NEXT = \"getNext\"; // Count: 12\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 8\r\nexport var _DYN_SET_NEXT_PLUGIN = \"setNextPlugin\"; // Count: 5\r\nexport var _DYN_CREATE_NEW = \"createNew\"; // Count: 6\r\nexport var _DYN_COOKIE_CFG = \"cookieCfg\"; // Count: 3\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 7\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 10\r\nexport var _DYN_USER_AGENT = \"userAgent\"; // Count: 5\r\nexport var _DYN_SPLIT = \"split\"; // Count: 6\r\nexport var _DYN_SET_ENABLED = \"setEnabled\"; // Count: 5\r\nexport var _DYN_SUBSTR = \"substr\"; // Count: 6\r\nexport var _DYN_NODE_TYPE = \"nodeType\"; // Count: 3\r\nexport var _DYN_APPLY = \"apply\"; // Count: 6\r\nexport var _DYN_REPLACE = \"replace\"; // Count: 10\r\nexport var _DYN_ENABLE_DEBUG_EXCEPTI4 = \"enableDebugExceptions\"; // Count: 2\r\nexport var _DYN_LOG_INTERNAL_MESSAGE = \"logInternalMessage\"; // Count: 2\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 8\r\nexport var _DYN_CALL = \"call\"; // Count: 18\r\nexport var _DYN_TYPE = \"type\"; // Count: 14\r\nexport var _DYN_HANDLER = \"handler\"; // Count: 5\r\nexport var _DYN_LISTENERS = \"listeners\"; // Count: 6\r\nexport var _DYN_IS_CHILD_EVT = \"isChildEvt\"; // Count: 3\r\nexport var _DYN_GET_CTX = \"getCtx\"; // Count: 6\r\nexport var _DYN_SET_CTX = \"setCtx\"; // Count: 10\r\nexport var _DYN_COMPLETE = \"complete\"; // Count: 3\r\nexport var _DYN_TRACE_ID = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID = \"spanId\"; // Count: 5\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 6\r\nexport var _DYN_VERSION = \"version\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// ###################################################################################################################################################\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// ###################################################################################################################################################\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_CHANNELS = \"channels\";\r\nexport var STR_CORE = \"core\";\r\nexport var STR_CREATE_PERF_MGR = \"createPerfMgr\";\r\nexport var STR_DISABLED = \"disabled\";\r\nexport var STR_EXTENSION_CONFIG = \"extensionConfig\";\r\nexport var STR_EXTENSIONS = \"extensions\";\r\nexport var STR_PROCESS_TELEMETRY = \"processTelemetry\";\r\nexport var STR_PRIORITY = \"priority\";\r\nexport var STR_EVENTS_SENT = \"eventsSent\";\r\nexport var STR_EVENTS_DISCARDED = \"eventsDiscarded\";\r\nexport var STR_EVENTS_SEND_REQUEST = \"eventsSendRequest\";\r\nexport var STR_PERF_EVENT = \"perfEvent\";\r\nexport var STR_ERROR_TO_CONSOLE = \"errorToConsole\";\r\nexport var STR_WARN_TO_CONSOLE = \"warnToConsole\";\r\nexport var STR_GET_PERF_MGR = \"getPerfMgr\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjAssign, ObjClass, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strShimFunction, strShimObject, strShimPrototype, strShimUndefined, throwTypeError } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minfication\r\nvar strToISOString = \"toISOString\";\r\nvar cStrEndsWith = \"endsWith\";\r\nvar cStrStartsWith = \"startsWith\";\r\nvar strIndexOf = \"indexOf\";\r\nvar strMap = \"map\";\r\nvar strReduce = \"reduce\";\r\nvar cStrTrim = \"trim\";\r\nvar strToString = \"toString\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strConstructor = \"constructor\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar _objFreeze = ObjClass.freeze;\r\nvar _objSeal = ObjClass.seal;\r\nvar _objKeys = ObjClass.keys;\r\nvar StringProto = String[strShimPrototype];\r\nvar _strTrim = StringProto[cStrTrim];\r\nvar _strEndsWith = StringProto[cStrEndsWith];\r\nvar _strStartsWith = StringProto[cStrStartsWith];\r\nvar DateProto = Date[strShimPrototype];\r\nvar _dataToISOString = DateProto[strToISOString];\r\nvar _isArray = Array.isArray;\r\nvar _objToString = ObjProto[strToString];\r\nvar _fnToString = ObjHasOwnProperty[strToString];\r\n// Cache what this browser reports as the object function constructor (as a string)\r\nvar _objFunctionString = _fnToString[_DYN_CALL /* @min:%2ecall */](ObjClass);\r\nvar rCamelCase = /-([a-z])/g;\r\nvar rNormalizeInvalid = /([^\\w\\d_$])/g;\r\nvar rLeadingNumeric = /^(\\d+[\\w\\d_$])/;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Object[\"getPrototypeOf\"];\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nexport function _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[strShimPrototype] || target[strConstructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\nexport function objToString(obj) {\r\n return _objToString[_DYN_CALL /* @min:%2ecall */](obj);\r\n}\r\nexport function isTypeof(value, theType) {\r\n return typeof value === theType;\r\n}\r\nexport function isUndefined(value) {\r\n return value === undefined || typeof value === strShimUndefined;\r\n}\r\nexport function isNotUndefined(value) {\r\n return !isUndefined(value);\r\n}\r\nexport function isNullOrUndefined(value) {\r\n return (value === null || isUndefined(value));\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n return !isNullOrUndefined(value);\r\n}\r\nexport function hasOwnProperty(obj, prop) {\r\n return !!(obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, prop));\r\n}\r\nexport function isObject(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimObject);\r\n}\r\nexport function isFunction(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimFunction);\r\n}\r\nexport function isPromiseLike(value) {\r\n return value && isFunction(value.then);\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n var value = name;\r\n if (value && isString(value)) {\r\n // CamelCase everything after the \"-\" and remove the dash\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rCamelCase, function (_all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rNormalizeInvalid, \"_\");\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rLeadingNumeric, function (_all, match) {\r\n return \"_\" + match;\r\n });\r\n }\r\n return value;\r\n}\r\n/**\r\n * This is a helper function for the equivalent of arForEach(objKeys(target), callbackFn), this is a\r\n * performance optimization to avoid the creation of a new array for large objects\r\n * @param target The target object to find and process the keys\r\n * @param callbackfn The function to call with the details\r\n */\r\nexport function objForEachKey(target, callbackfn) {\r\n if (target) {\r\n for (var prop in target) {\r\n if (ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](target, prop)) {\r\n callbackfn[_DYN_CALL /* @min:%2ecall */](target, prop, target[prop]);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n var result = false;\r\n if (value && search && !(result = value === search)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strEndsWith ? value[cStrEndsWith](search) : _strEndsWithPoly(value, search);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The _strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function _strEndsWithPoly(value, search) {\r\n var result = false;\r\n var searchLen = search ? search[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n var valLen = value ? value[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if (searchLen && valLen && valLen >= searchLen && !(result = value === search)) {\r\n var pos = valLen - 1;\r\n for (var lp = searchLen - 1; lp >= 0; lp--) {\r\n if (value[pos] != search[lp]) {\r\n return false;\r\n }\r\n pos--;\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function strStartsWith(value, checkValue) {\r\n var result = false;\r\n if (value && checkValue && !(result = value === checkValue)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strStartsWith ? value[cStrStartsWith](checkValue) : _strStartsWithPoly(value, checkValue);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function _strStartsWithPoly(value, checkValue) {\r\n // Using helper for performance and because string startsWith() is not available on IE\r\n var result = false;\r\n var chkLen = checkValue ? checkValue[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if (value && chkLen && value[_DYN_LENGTH /* @min:%2elength */] >= chkLen && !(result = value === checkValue)) {\r\n for (var lp = 0; lp < chkLen; lp++) {\r\n if (value[lp] !== checkValue[lp]) {\r\n return false;\r\n }\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n if (value && search) {\r\n return value[_DYN_INDEX_OF /* @min:%2eindexOf */](search) !== -1;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Check if an object is of type Date\r\n */\r\nexport function isDate(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Date]\");\r\n}\r\n/**\r\n * Check if an object is of type Array with optional generic T, the generic type is not validated\r\n * and exists to help with TypeScript validation only.\r\n */\r\nexport var isArray = _isArray || _isArrayPoly;\r\nfunction _isArrayPoly(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Array]\");\r\n}\r\n/**\r\n * Check if an object is of type Error\r\n */\r\nexport function isError(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Error]\");\r\n}\r\n/**\r\n * Checks if the type of value is a string.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a string, false otherwise.\r\n */\r\nexport function isString(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if the type of value is a number.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a number, false otherwise.\r\n */\r\nexport function isNumber(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"number\";\r\n}\r\n/**\r\n * Checks if the type of value is a boolean.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\nexport function isBoolean(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"boolean\";\r\n}\r\n/**\r\n * Checks if the type of value is a Symbol.\r\n * This only returns a boolean as returning value is Symbol will cause issues for older TypeScript consumers\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a Symbol, false otherwise.\r\n */\r\nexport function isSymbol(value) {\r\n return typeof value === \"symbol\";\r\n}\r\n/**\r\n * Checks if the type of the value is a normal plain object (not a null or data)\r\n * @param value\r\n */\r\nexport function isPlainObject(value) {\r\n var result = false;\r\n if (value && typeof value === \"object\") {\r\n // Inlining _objGetPrototypeOf for performance to avoid an additional function call\r\n var proto = _objGetPrototypeOf ? _objGetPrototypeOf(value) : _getObjProto(value);\r\n if (!proto) {\r\n // No prototype found so this is a plain Object eg. 'Object.create(null)'\r\n result = true;\r\n }\r\n else {\r\n // Objects that have a prototype are plain only if they were created using the Object global (native) function\r\n if (proto[strConstructor] && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](proto, strConstructor)) {\r\n proto = proto[strConstructor];\r\n }\r\n result = typeof proto === strShimFunction && _fnToString[_DYN_CALL /* @min:%2ecall */](proto) === _objFunctionString;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n if (date) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n return _dataToISOString ? date[strToISOString]() : _toISOStringPoly(date);\r\n }\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function _toISOStringPoly(date) {\r\n if (date && date.getUTCFullYear) {\r\n var pad = function (num) {\r\n var r = String(num);\r\n if (r[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n r = \"0\" + r;\r\n }\r\n return r;\r\n };\r\n return date.getUTCFullYear()\r\n + \"-\" + pad(date.getUTCMonth() + 1)\r\n + \"-\" + pad(date.getUTCDate())\r\n + \"T\" + pad(date.getUTCHours())\r\n + \":\" + pad(date.getUTCMinutes())\r\n + \":\" + pad(date.getUTCSeconds())\r\n + \".\" + String((date.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + \"Z\";\r\n }\r\n}\r\n/**\r\n * Performs the specified action for each element in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. It can return -1 to break out of the loop\r\n * @param thisArg [Optional] An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrForEach(arr, callbackfn, thisArg) {\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n try {\r\n for (var idx = 0; idx < len; idx++) {\r\n if (idx in arr) {\r\n if (callbackfn[_DYN_CALL /* @min:%2ecall */](thisArg || arr, arr[idx], idx, arr) === -1) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n}\r\n/**\r\n * Returns the index of the first occurrence of a value in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport function arrIndexOf(arr, searchElement, fromIndex) {\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strIndexOf]) {\r\n return arr[strIndexOf](searchElement, fromIndex);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var from = fromIndex || 0;\r\n try {\r\n for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {\r\n if (lp in arr && arr[lp] === searchElement) {\r\n return lp;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls a defined callback function on each element of an array, and returns an array that contains the results. This helper exists\r\n * to avoid adding a polyfil for older browsers that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page\r\n * checks for presence/absence of the prototype implementation. Note: For consistency this will not use the Array.prototype.xxxx\r\n * implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\r\n * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrMap(arr, callbackfn, thisArg) {\r\n var results;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strMap]) {\r\n return arr[strMap](callbackfn, thisArg);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var _this = thisArg || arr;\r\n results = new Array(len);\r\n try {\r\n for (var lp = 0; lp < len; lp++) {\r\n if (lp in arr) {\r\n results[lp] = callbackfn[_DYN_CALL /* @min:%2ecall */](_this, arr[lp], arr);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return results;\r\n}\r\n/**\r\n * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is\r\n * provided as an argument in the next call to the callback function. This helper exists to avoid adding a polyfil for older browsers that do not define\r\n * Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype implementation. Note: For consistency\r\n * this will not use the Array.prototype.xxxx implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\r\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\r\n */\r\nexport function arrReduce(arr, callbackfn, initialValue) {\r\n var value;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strReduce]) {\r\n return arr[strReduce](callbackfn, initialValue);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var lp = 0;\r\n // Specifically checking the number of passed arguments as the value could be anything\r\n if (arguments[_DYN_LENGTH /* @min:%2elength */] >= 3) {\r\n value = arguments[2];\r\n }\r\n else {\r\n while (lp < len && !(lp in arr)) {\r\n lp++;\r\n }\r\n value = arr[lp++];\r\n }\r\n while (lp < len) {\r\n if (lp in arr) {\r\n value = callbackfn(value, arr[lp], lp, arr);\r\n }\r\n lp++;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\nexport function strTrim(str) {\r\n if (str) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n str = (_strTrim && str[cStrTrim]) ? str[cStrTrim]() : (str[_DYN_REPLACE /* @min:%2ereplace */] ? str[_DYN_REPLACE /* @min:%2ereplace */](/^\\s+|(?=\\s)\\s+$/g, STR_EMPTY) : str);\r\n }\r\n return str;\r\n}\r\nvar _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable(\"toString\");\r\nvar _objKeysDontEnums = [\r\n \"toString\",\r\n \"toLocaleString\",\r\n \"valueOf\",\r\n \"hasOwnProperty\",\r\n \"isPrototypeOf\",\r\n \"propertyIsEnumerable\",\r\n \"constructor\"\r\n];\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Object.keys eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.keys implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\r\n */\r\nexport function objKeys(obj) {\r\n var objType = typeof obj;\r\n if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {\r\n throwTypeError(\"objKeys called on non-object\");\r\n }\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (!_objKeysHasDontEnumBug && _objKeys) {\r\n return _objKeys(obj);\r\n }\r\n var result = [];\r\n for (var prop in obj) {\r\n if (obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, prop)) {\r\n result[_DYN_PUSH /* @min:%2epush */](prop);\r\n }\r\n }\r\n if (_objKeysHasDontEnumBug) {\r\n var dontEnumsLength = _objKeysDontEnums[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < dontEnumsLength; lp++) {\r\n if (obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, _objKeysDontEnums[lp])) {\r\n result[_DYN_PUSH /* @min:%2epush */](_objKeysDontEnums[lp]);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Try to define get/set object property accessors for the target object/prototype, this will provide compatibility with\r\n * existing API definition when run within an ES5+ container that supports accessors but still enable the code to be loaded\r\n * and executed in an ES3 container, providing basic IE8 compatibility.\r\n * @param target The object on which to define the property.\r\n * @param prop The name of the property to be defined or modified.\r\n * @param getProp The getter function to wire against the getter.\r\n * @param setProp The setter function to wire against the setter.\r\n * @returns True if it was able to create the accessors otherwise false\r\n */\r\nexport function objDefineAccessors(target, prop, getProp, setProp) {\r\n if (_objDefineProperty) {\r\n try {\r\n var descriptor = {\r\n enumerable: true,\r\n configurable: true\r\n };\r\n if (getProp) {\r\n descriptor.get = getProp;\r\n }\r\n if (setProp) {\r\n descriptor.set = setProp;\r\n }\r\n _objDefineProperty(target, prop, descriptor);\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\nfunction _doNothing(value) {\r\n return value;\r\n}\r\nexport function deepFreeze(obj) {\r\n if (_objFreeze) {\r\n objForEachKey(obj, function (name, value) {\r\n if (isArray(value) || isObject(value)) {\r\n _objFreeze(value);\r\n }\r\n });\r\n }\r\n return objFreeze(obj);\r\n}\r\nexport var objFreeze = _objFreeze || _doNothing;\r\nexport var objSeal = _objSeal || _doNothing;\r\n/**\r\n * Return the current time via the Date now() function (if available) and falls back to (new Date()).getTime() if now() is unavailable (IE8 or less)\r\n * https://caniuse.com/#search=Date.now\r\n */\r\nexport function dateNow() {\r\n var dt = Date;\r\n return dt.now ? dt.now() : new dt().getTime();\r\n}\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n if (isError(object)) {\r\n return object[_DYN_NAME /* @min:%2ename */];\r\n }\r\n return STR_EMPTY;\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n var theValue = value;\r\n if (target) {\r\n theValue = target[field];\r\n if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n theValue = value;\r\n target[field] = theValue;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n var theValue;\r\n if (target) {\r\n theValue = target[field];\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n // Supports having the default as null\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n target[field] = theValue;\r\n }\r\n }\r\n else {\r\n // Expanded for performance so we only check defValue if required\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Get the mapped config value, if null or undefined any supplied defaultValue will be returned.\r\n * @param field - The name of the field as the named enum value (number) or the string name.\r\n * @param defaultValue - The default value to return if the config field is not present, null or undefined.\r\n */\r\nexport function getCfgValue(theValue, defaultValue) {\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n}\r\nexport function isNotTruthy(value) {\r\n return !value;\r\n}\r\nexport function isTruthy(value) {\r\n return !!value;\r\n}\r\nexport function throwError(message) {\r\n throw new Error(message);\r\n}\r\nfunction _createProxyFunction(source, funcName) {\r\n var srcFunc = null;\r\n var src = null;\r\n if (isFunction(source)) {\r\n srcFunc = source;\r\n }\r\n else {\r\n src = source;\r\n }\r\n return function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n if (srcFunc) {\r\n src = srcFunc();\r\n }\r\n if (src) {\r\n return src[funcName][_DYN_APPLY /* @min:%2eapply */](src, originalArguments);\r\n }\r\n };\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n if (target && source && isObject(target) && isObject(source)) {\r\n var _loop_1 = function (field) {\r\n if (isString(field)) {\r\n var value = source[field];\r\n if (isFunction(value)) {\r\n if (!chkSet || chkSet(field, true, source, target)) {\r\n // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n target[field] = _createProxyFunction(source, field);\r\n }\r\n }\r\n else if (!chkSet || chkSet(field, false, source, target)) {\r\n if (hasOwnProperty(target, field)) {\r\n // Remove any previous instance property\r\n delete target[field];\r\n }\r\n if (!objDefineAccessors(target, field, function () {\r\n return source[field];\r\n }, function (theValue) {\r\n source[field] = theValue;\r\n })) {\r\n // Unable to create an accessor, so just assign the values as a fallback\r\n // -- this will (mostly) work for objects\r\n // -- but will fail for accessing primitives (if the source changes it) and all types of \"setters\" as the source won't be modified\r\n target[field] = value;\r\n }\r\n }\r\n }\r\n };\r\n // effectively apply/proxy full source to the target instance\r\n for (var field in source) {\r\n _loop_1(field);\r\n }\r\n }\r\n return target;\r\n}\r\n/**\r\n * Creates a proxy function on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param name - The function name that will be added on the target\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param theFunc - The function name on the source that will be proxied on the target\r\n * @param overwriteTarget - If `false` this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {\r\n if (target && name && source) {\r\n if (overwriteTarget !== false || isUndefined(target[name])) {\r\n target[name] = _createProxyFunction(source, theFunc);\r\n }\r\n }\r\n}\r\n/**\r\n * Creates proxy functions on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param functionsToProxy - An array of function names that will be proxied on the target\r\n * @param overwriteTarget - If false this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctions(target, source, functionsToProxy, overwriteTarget) {\r\n if (target && source && isObject(target) && isArray(functionsToProxy)) {\r\n arrForEach(functionsToProxy, function (theFuncName) {\r\n if (isString(theFuncName)) {\r\n proxyFunctionAs(target, theFuncName, source, theFuncName, overwriteTarget);\r\n }\r\n });\r\n }\r\n return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n return /** @class */ (function () {\r\n function class_1() {\r\n var _this_1 = this;\r\n if (defaults) {\r\n objForEachKey(defaults, function (field, value) {\r\n _this_1[field] = value;\r\n });\r\n }\r\n }\r\n return class_1;\r\n }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n if (theObject && ObjAssign) {\r\n theObject = ObjClass(ObjAssign({}, theObject));\r\n }\r\n return theObject;\r\n}\r\nexport function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {\r\n // Variables\r\n var theArgs = arguments;\r\n var extended = theArgs[0] || {};\r\n var argLen = theArgs[_DYN_LENGTH /* @min:%2elength */];\r\n var deep = false;\r\n var idx = 1;\r\n // Check for \"Deep\" flag\r\n if (argLen > 0 && isBoolean(extended)) {\r\n deep = extended;\r\n extended = theArgs[idx] || {};\r\n idx++;\r\n }\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (!isObject(extended)) {\r\n extended = {};\r\n }\r\n // Loop through each remaining object and conduct a merge\r\n for (; idx < argLen; idx++) {\r\n var arg = theArgs[idx];\r\n var isArgArray = isArray(arg);\r\n var isArgObj = isObject(arg);\r\n for (var prop in arg) {\r\n var propOk = (isArgArray && (prop in arg)) || (isArgObj && (ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](arg, prop)));\r\n if (!propOk) {\r\n continue;\r\n }\r\n var newValue = arg[prop];\r\n var isNewArray = void 0;\r\n // If deep merge and property is an object, merge properties\r\n if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {\r\n // Grab the current value of the extended object\r\n var clone = extended[prop];\r\n if (isNewArray) {\r\n if (!isArray(clone)) {\r\n // We can't \"merge\" an array with a non-array so overwrite the original\r\n clone = [];\r\n }\r\n }\r\n else if (!isPlainObject(clone)) {\r\n // We can't \"merge\" an object with a non-object\r\n clone = {};\r\n }\r\n // Never move the original objects always clone them\r\n newValue = objExtend(deep, clone, newValue);\r\n }\r\n // Assign the new (or previous) value (unless undefined)\r\n if (newValue !== undefined) {\r\n extended[prop] = newValue;\r\n }\r\n }\r\n }\r\n return extended;\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { deepFreeze, objForEachKey } from \"../JavaScriptSDK/HelperFuncs\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumStyle(values) {\r\n var enumClass = {};\r\n objForEachKey(values, function (field, value) {\r\n enumClass[field] = value;\r\n enumClass[value] = field;\r\n });\r\n return deepFreeze(enumClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key as both the key and value, X[\"key\"] => \"key\" and X[0] => \"keyof 0\".\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = field;\r\n mapClass[value] = field;\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createValueMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = value[1];\r\n mapClass[value[0]] = value[1];\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n//# sourceMappingURL=EnumHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { getGlobal, strShimObject, strShimPrototype, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { isFunction, isString, isUndefined, strContains } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strDocumentMode = \"documentMode\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n var supported = false;\r\n if (theClass) {\r\n try {\r\n supported = property in theClass;\r\n if (!supported) {\r\n var proto = theClass[strShimPrototype];\r\n if (proto) {\r\n supported = property in proto;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n if (!supported) {\r\n try {\r\n var tmp = new theClass();\r\n supported = !isUndefined(tmp[property]);\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n }\r\n }\r\n return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n var gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name];\r\n }\r\n // Test workaround, for environments where .window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n return Boolean(typeof window === strShimObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n return Boolean(typeof document === strShimObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n return Boolean(typeof navigator === strShimObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n return Boolean(typeof history === strShimObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getGlobalInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strShimObject && location) {\r\n return location;\r\n }\r\n return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strShimUndefined) {\r\n return console;\r\n }\r\n return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strShimObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav[_DYN_USER_AGENT /* @min:%2euserAgent */] !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav[_DYN_USER_AGENT /* @min:%2euserAgent */];\r\n var userAgent = (_navUserAgentCheck || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n userAgentStr = navigator_1 ? (navigator_1[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n if (strContains(ua, strMsie)) {\r\n var doc = getDocument() || {};\r\n return Math.max(parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strMsie)[1]), (doc[strDocumentMode] || 0));\r\n }\r\n else if (strContains(ua, strTrident)) {\r\n var tridentVer = parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n var objectTypeDump = Object[strShimPrototype].toString[_DYN_CALL /* @min:%2ecall */](object);\r\n var propertyValueDump = STR_EMPTY;\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object[_DYN_NAME /* @min:%2ename */] + \"'\";\r\n }\r\n else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n return objectTypeDump + propertyValueDump;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n if (!userAgentStr || !isString(userAgentStr)) {\r\n var navigator_2 = getNavigator() || {};\r\n userAgentStr = navigator_2 ? (navigator_2[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n return (ua[_DYN_INDEX_OF /* @min:%2eindexOf */](\"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported() {\r\n if (_beaconsSupported === null) {\r\n _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n }\r\n return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n var isSupported = false;\r\n try {\r\n isSupported = !!getGlobalInst(\"fetch\");\r\n var request = getGlobalInst(\"Request\");\r\n if (isSupported && withKeepAlive && request) {\r\n isSupported = _hasProperty(request, \"keepalive\");\r\n }\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n if (_useXDomainRequest === null) {\r\n _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n if (_useXDomainRequest && isXhrSupported()) {\r\n _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(strXMLHttpRequest), \"withCredentials\");\r\n }\r\n }\r\n return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n var isSupported = false;\r\n try {\r\n var xmlHttpRequest = getGlobalInst(strXMLHttpRequest);\r\n isSupported = !!xmlHttpRequest;\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n if (values) {\r\n for (var i = 0; i < values[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var value = values[i];\r\n if (value[_DYN_NAME /* @min:%2ename */]) {\r\n if (value[_DYN_NAME /* @min:%2ename */] === name) {\r\n return value;\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n var doc = getDocument();\r\n if (doc && name) {\r\n // Look for a meta-tag\r\n return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n var value;\r\n var perf = getPerformance();\r\n if (perf) {\r\n // Try looking for a server-timing header\r\n var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n value = _getNamedValue((navPerf[_DYN_LENGTH /* @min:%2elength */] > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n }\r\n return value;\r\n}\r\n// TODO: should reuse this method for analytics plugin\r\nexport function dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n return true;\r\n }\r\n return false;\r\n}\r\nexport function createCustomDomEvent(eventName, details) {\r\n var event = null;\r\n var detail = { detail: details || null };\r\n if (isFunction(CustomEvent)) { // Use CustomEvent constructor when available\r\n event = new CustomEvent(eventName, detail);\r\n }\r\n else { // CustomEvent has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"CustomEvent\");\r\n event.initCustomEvent(eventName, true, true, detail);\r\n }\r\n }\r\n return event;\r\n}\r\nexport function sendCustomEvent(evtName, cfg, customDetails) {\r\n var global = getGlobal();\r\n if (global && global.CustomEvent) {\r\n try {\r\n var details = { cfg: cfg || null, customDetails: customDetails || null };\r\n return dispatchEvent(global, createCustomDomEvent(evtName, details));\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=EnvUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_APPLY, _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar listenerFuncs = [\"eventsSent\", \"eventsDiscarded\", \"eventsSendRequest\", \"perfEvent\"];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n return function () {\r\n var args = arguments;\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt) {\r\n var listener = dbgExt.listener;\r\n if (listener && listener[name]) {\r\n listener[name][_DYN_APPLY /* @min:%2eapply */](listener, args);\r\n }\r\n }\r\n };\r\n}\r\nfunction _getExtensionNamespace() {\r\n // Cache the lookup of the global namespace object\r\n var target = getGlobalInst(\"Microsoft\");\r\n if (target) {\r\n _aiNamespace = target[\"ApplicationInsights\"];\r\n }\r\n return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n var ns = _aiNamespace;\r\n if (!ns && config.disableDbgExt !== true) {\r\n ns = _aiNamespace || _getExtensionNamespace();\r\n }\r\n return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n if (!_debugListener) {\r\n _debugListener = {};\r\n for (var lp = 0; lp < listenerFuncs[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n }\r\n }\r\n return _debugListener;\r\n}\r\n//# sourceMappingURL=DbgExtensionUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_DIAG_LOG, _DYN_ENABLE_DEBUG_EXCEPTI4, _DYN_LOGGER, _DYN_LOG_INTERNAL_MESSAGE, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { dumpObj, getConsole, getJSON, hasJSON } from \"./EnvUtils\";\r\nimport { getCfgValue, isFunction, isUndefined } from \"./HelperFuncs\";\r\nimport { STR_EMPTY, STR_ERROR_TO_CONSOLE, STR_WARN_TO_CONSOLE } from \"./InternalConstants\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text[_DYN_REPLACE /* @min:%2ereplace */](/\\\"/g, STR_EMPTY) + \"\\\"\";\r\n }\r\n return STR_EMPTY;\r\n}\r\nfunction _logToConsole(func, message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = \"log\";\r\n if (theConsole[func]) {\r\n logFunc = func;\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self[_DYN_MESSAGE_ID /* @min:%2emessageId */] = msgId;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = STR_EMPTY;\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : STR_EMPTY) +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : STR_EMPTY);\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {})[_DYN_LOGGER /* @min:%2elogger */] || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = \"DiagnosticLogger\";\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n var _loggingLevelConsole;\r\n var _loggingLevelTelemetry;\r\n var _maxInternalMessageLimit;\r\n var _enableDebug;\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n _setDefaultsFromConfig(config || {});\r\n _self.consoleLoggingLevel = function () { return _loggingLevelConsole; };\r\n _self.telemetryLoggingLevel = function () { return _loggingLevelTelemetry; };\r\n _self.maxInternalMessageLimit = function () { return _maxInternalMessageLimit; };\r\n _self[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */] = function () { return _enableDebug; };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_enableDebug) {\r\n throw dumpObj(message);\r\n }\r\n else {\r\n // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n var logFunc = severity === 1 /* eLoggingSeverity.CRITICAL */ ? STR_ERROR_TO_CONSOLE : STR_WARN_TO_CONSOLE;\r\n if (!isUndefined(message[_DYN_MESSAGE /* @min:%2emessage */])) {\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n if (!_messageLogged[messageKey] && _loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n if (_loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n }\r\n _logInternalMessage(severity, message);\r\n }\r\n else {\r\n _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n }\r\n }\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */] = function (message) {\r\n _logToConsole(\"warn\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The error message\r\n */\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */] = function (message) {\r\n _logToConsole(\"error\", message);\r\n _debugExtMsg(\"error\", message);\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n _self[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */] = _logInternalMessage;\r\n function _logInternalMessage(severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _loggingLevelTelemetry) {\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](message);\r\n _messageCount++;\r\n _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _maxInternalMessageLimit) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](throttleMessage);\r\n if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */](throttleLimitMessage);\r\n }\r\n else {\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](throttleLimitMessage);\r\n }\r\n }\r\n }\r\n }\r\n function _setDefaultsFromConfig(config) {\r\n _loggingLevelConsole = getCfgValue(config.loggingLevelConsole, 0);\r\n _loggingLevelTelemetry = getCfgValue(config.loggingLevelTelemetry, 1);\r\n _maxInternalMessageLimit = getCfgValue(config.maxMessageLimit, 25);\r\n _enableDebug = getCfgValue(config.enableDebug, getCfgValue(config[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */], false));\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _maxInternalMessageLimit;\r\n }\r\n function _debugExtMsg(name, data) {\r\n var dbgExt = getDebugExt(config || {});\r\n if (dbgExt && dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */]) {\r\n dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */](name, data);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for DiagnosticLogger.prototype.enableDebugExceptions.\r\n// Removed Stub for DiagnosticLogger.prototype.consoleLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.telemetryLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.maxInternalMessageLimit.\r\n// Removed Stub for DiagnosticLogger.prototype.throwInternal.\r\n// Removed Stub for DiagnosticLogger.prototype.warnToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.errorToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.resetInternalMessageCount.\r\n// Removed Stub for DiagnosticLogger.prototype.logInternalMessage.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n DiagnosticLogger.__ieDyn=1;\n\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n _getLogger(logger).throwInternal(severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n _getLogger(logger)[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */](severity, message);\r\n}\r\n//# sourceMappingURL=DiagnosticLogger.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_COMPLETE, _DYN_GET_CTX, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_CTX, _DYN_TIME } from \"../__DynamicConstants\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from \"./HelperFuncs\";\r\nimport { STR_GET_PERF_MGR, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar strParentContextKey = \"ParentContextKey\";\r\nvar strChildrenContextKey = \"ChildrenContextKey\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n var accessorDefined = false;\r\n _self.start = dateNow();\r\n _self[_DYN_NAME /* @min:%2ename */] = name;\r\n _self[_DYN_IS_ASYNC /* @min:%2eisAsync */] = isAsync;\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n accessorDefined = objDefineAccessors(_self, \"payload\", function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n });\r\n }\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey]) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent[strChildrenContextKey]) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () {\r\n var childTime = 0;\r\n var childEvts = _self[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt[_DYN_TIME /* @min:%2etime */];\r\n }\r\n }\r\n }\r\n _self[_DYN_TIME /* @min:%2etime */] = dateNow() - _self.start;\r\n _self.exTime = _self[_DYN_TIME /* @min:%2etime */] - childTime;\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () { };\r\n if (!accessorDefined && isFunction(payloadDetails)) {\r\n // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n _self.payload = payloadDetails();\r\n }\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent[_DYN_COMPLETE /* @min:%2ecomplete */]();\r\n if (manager && isFunction(manager[STR_PERF_EVENT /* @min:%2eperfEvent */])) {\r\n manager[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n }\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n// Removed Stub for PerfManager.prototype.create.\r\n// Removed Stub for PerfManager.prototype.fire.\r\n// Removed Stub for PerfManager.prototype.setCtx.\r\n// Removed Stub for PerfManager.prototype.getCtx.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PerfManager.__ieDyn=1;\n\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (perfMgr[STR_GET_PERF_MGR]) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[STR_GET_PERF_MGR]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr[_DYN_GET_CTX /* @min:%2egetCtx */](doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strParentContextKey], currentActive);\r\n if (currentActive[_DYN_GET_CTX /* @min:%2egetCtx */] && currentActive[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n var children = currentActive[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (!children) {\r\n children = [];\r\n currentActive[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strChildrenContextKey], children);\r\n }\r\n children[_DYN_PUSH /* @min:%2epush */](perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n return _defaultPerfManager;\r\n}\r\n//# sourceMappingURL=PerfManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = dateNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value = 0;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n if (value === 0 && isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n if (value === 0) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = STR_EMPTY;\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=RandomHelper.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjDefineProperty } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_NODE_TYPE } from \"../__DynamicConstants\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar version = '2.8.18';\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\nfunction _createAccessor(target, prop, value) {\r\n if (_objDefineProperty) {\r\n try {\r\n _objDefineProperty(target, prop, {\r\n value: value,\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\n// Accepts only:\r\n// - Node\r\n// - Node.ELEMENT_NODE\r\n// - Node.DOCUMENT_NODE\r\n// - Object\r\n// - Any\r\nfunction _canAcceptData(target) {\r\n return target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 1 || target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 9 || !(+target[_DYN_NODE_TYPE /* @min:%2enodeType */]);\r\n}\r\nfunction _getCache(data, target) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n theCache = {};\r\n try {\r\n if (_canAcceptData(target)) {\r\n if (!_createAccessor(target, data.id, theCache)) {\r\n // Environment doesn't support accessor, so just use direct assignment\r\n target[data.id] = theCache;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n }\r\n }\r\n return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n if (includeVersion === void 0) { includeVersion = false; }\r\n return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : STR_EMPTY) + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n var data = {\r\n id: createUniqueNamespace(\"_aiData-\" + (name || STR_EMPTY) + \".\" + version),\r\n accept: function (target) {\r\n return _canAcceptData(target);\r\n },\r\n get: function (target, name, defValue, addDefault) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n if (addDefault) {\r\n // Side effect is adds the cache\r\n theCache = _getCache(data, target);\r\n theCache[normalizeJsName(name)] = defValue;\r\n }\r\n return defValue;\r\n }\r\n return theCache[normalizeJsName(name)];\r\n },\r\n kill: function (target, name) {\r\n if (target && target[name]) {\r\n try {\r\n delete target[name];\r\n }\r\n catch (e) {\r\n // Just cleaning up, so if this fails -- ignore\r\n }\r\n }\r\n }\r\n };\r\n return data;\r\n}\r\n//# sourceMappingURL=DataCacheHelper.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _DYN_COOKIE_CFG, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_LOGGER, _DYN_SET_ENABLED, _DYN_SPLIT, _DYN_SUBSTRING, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, dateNow, getExceptionName, isArray, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n var cookieMgrCfg = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] || {};\r\n // Sets the values from the root config if not already present on the cookieMgrCfg\r\n setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n cookieMgrCfg[strEnabled] = cookieEnabled;\r\n }\r\n return cookieMgrCfg;\r\n}\r\nfunction _isIgnoredCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {\r\n return cookieMgrCfg.ignoreCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1;\r\n }\r\n return false;\r\n}\r\nfunction _isBlockedCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {\r\n if (cookieMgrCfg.blockedCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1) {\r\n return true;\r\n }\r\n }\r\n return _isIgnoredCookie(cookieMgrCfg, name);\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = config[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */];\r\n if (cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var _a;\r\n var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n var _path = cookieMgrConfig.path || \"/\";\r\n var _domain = cookieMgrConfig.domain;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n var cookieMgr = (_a = {\r\n isEnabled: function () {\r\n var enabled = _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n }\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n },\r\n _a.set = function (name, value, maxAgeSec, domain, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {\r\n var values = {};\r\n var theValue = strTrim(value || STR_EMPTY);\r\n var idx = theValue[_DYN_INDEX_OF /* @min:%2eindexOf */](\";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(value[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx));\r\n values = _extractParts(value[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = dateNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", STR_EMPTY + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT /* @min:%2euserAgent */]);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, \"path\", path || _path, null, isUndefined);\r\n var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n setCookieFn(name, _formatCookieValue(theValue, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a.get = function (name) {\r\n var value = STR_EMPTY;\r\n if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {\r\n value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n }\r\n return value;\r\n },\r\n _a.del = function (name, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n result = cookieMgr.purge(name, path);\r\n }\r\n return result;\r\n },\r\n _a.purge = function (name, path) {\r\n var _a;\r\n var result = false;\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[\"path\"] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n delCookie(name, _formatCookieValue(STR_EMPTY, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a);\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n try {\r\n var doc = _doc || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue[_DYN_LENGTH /* @min:%2elength */]) {\r\n var parts = strTrim(theValue)[_DYN_SPLIT /* @min:%2esplit */](\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || STR_EMPTY);\r\n if (thePart) {\r\n var idx = thePart[_DYN_INDEX_OF /* @min:%2eindexOf */](\"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx))] = strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || STR_EMPTY;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : STR_EMPTY);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = STR_EMPTY;\r\n if (_doc) {\r\n var theCookie = _doc[strCookie] || STR_EMPTY;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n if (_doc) {\r\n _doc[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=CookieMgr.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_HANDLER, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE, _DYN_SPLICE, _DYN_SPLIT, _DYN_TYPE } from \"../__DynamicConstants\";\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDocument, getWindow } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, isArray, objForEachKey, objKeys } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n if (name && name[_DYN_REPLACE /* @min:%2ereplace */]) {\r\n return name[_DYN_REPLACE /* @min:%2ereplace */](/^[\\s\\.]+|(?=[\\s\\.])[\\.\\s]+$/g, STR_EMPTY);\r\n }\r\n return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n var _a;\r\n if (evtNamespace) {\r\n var theNamespace_1 = STR_EMPTY;\r\n if (isArray(evtNamespace)) {\r\n theNamespace_1 = STR_EMPTY;\r\n arrForEach(evtNamespace, function (name) {\r\n name = _normalizeNamespace(name);\r\n if (name) {\r\n if (name[0] !== \".\") {\r\n name = \".\" + name;\r\n }\r\n theNamespace_1 += name;\r\n }\r\n });\r\n }\r\n else {\r\n theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n }\r\n if (theNamespace_1) {\r\n if (theNamespace_1[0] !== \".\") {\r\n theNamespace_1 = \".\" + theNamespace_1;\r\n }\r\n // We may only have the namespace and not an eventName\r\n eventName = (eventName || STR_EMPTY) + theNamespace_1;\r\n }\r\n }\r\n var parsedEvent = (eventNamespace.exec(eventName || STR_EMPTY) || []);\r\n return _a = {},\r\n _a[_DYN_TYPE /* @min:type */] = parsedEvent[1],\r\n _a.ns = ((parsedEvent[2] || STR_EMPTY).replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, STR_EMPTY)[_DYN_SPLIT /* @min:%2esplit */](\".\").sort()).join(\".\"),\r\n _a;\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n var theEvents = [];\r\n var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n arrForEach(registeredEvents, function (value) {\r\n var _a;\r\n if (!evtName[_DYN_TYPE /* @min:%2etype */] || evtName[_DYN_TYPE /* @min:%2etype */] === value.evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (!evtName.ns || evtName.ns === evtName.ns) {\r\n theEvents[_DYN_PUSH /* @min:%2epush */]((_a = {},\r\n _a[_DYN_NAME /* @min:name */] = value.evtName[_DYN_TYPE /* @min:%2etype */] + (value.evtName.ns ? \".\" + value.evtName.ns : STR_EMPTY),\r\n _a.handler = value[_DYN_HANDLER /* @min:%2ehandler */],\r\n _a));\r\n }\r\n }\r\n });\r\n });\r\n return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n if (addDefault === void 0) { addDefault = true; }\r\n var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n var registeredEvents = aiEvts[evtName];\r\n if (!registeredEvents) {\r\n registeredEvents = aiEvts[evtName] = [];\r\n }\r\n return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (obj[strRemoveEventListener]) {\r\n obj[strRemoveEventListener](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n }\r\n else if (obj[strDetachEvent]) {\r\n obj[strDetachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n }\r\n }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n var result = false;\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */] && handlerRef) {\r\n if (obj[strAddEventHelper]) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (obj[strAttachEvent]) {\r\n // IE before version 9\r\n obj[strAttachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n result = true;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n var idx = events[_DYN_LENGTH /* @min:%2elength */];\r\n while (idx--) {\r\n var theEvent = events[idx];\r\n if (theEvent) {\r\n if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n if (!unRegFn || unRegFn(theEvent)) {\r\n _doDetach(target, theEvent.evtName, theEvent[_DYN_HANDLER /* @min:%2ehandler */], theEvent.capture);\r\n // Remove the registered event\r\n events[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n if (evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n _doUnregister(target, _getRegisteredEvents(target, evtName[_DYN_TYPE /* @min:%2etype */]), evtName, unRegFn);\r\n }\r\n else {\r\n var eventCache = elmNodeData.get(target, strEvents, {});\r\n objForEachKey(eventCache, function (evtType, events) {\r\n _doUnregister(target, events, evtName, unRegFn);\r\n });\r\n // Cleanup\r\n if (objKeys(eventCache)[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n elmNodeData.kill(target, strEvents);\r\n }\r\n }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n var newNamespaces;\r\n if (namespaces) {\r\n if (isArray(namespaces)) {\r\n newNamespaces = [theNamespace].concat(namespaces);\r\n }\r\n else {\r\n newNamespaces = [theNamespace, namespaces];\r\n }\r\n // resort the namespaces so they are always in order\r\n newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns)[_DYN_SPLIT /* @min:%2esplit */](\".\");\r\n }\r\n else {\r\n newNamespaces = theNamespace;\r\n }\r\n return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventName String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n var _a;\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (target) {\r\n try {\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n result = _doAttach(target, evtName, handlerRef, useCapture);\r\n if (result && elmNodeData.accept(target)) {\r\n var registeredEvent = (_a = {\r\n guid: _guid++,\r\n evtName: evtName\r\n },\r\n _a[_DYN_HANDLER /* @min:handler */] = handlerRef,\r\n _a.capture = useCapture,\r\n _a);\r\n _getRegisteredEvents(target, evtName.type)[_DYN_PUSH /* @min:%2epush */](registeredEvent);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (target) {\r\n try {\r\n var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n var found_1 = false;\r\n _unregisterEvents(target, evtName_1, function (regEvent) {\r\n if ((evtName_1.ns && !handlerRef) || regEvent[_DYN_HANDLER /* @min:%2ehandler */] === handlerRef) {\r\n found_1 = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (!found_1) {\r\n // fallback to try and remove as requested\r\n _doDetach(target, evtName_1, handlerRef, useCapture);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = eventOn(w, eventName, callback, evtNamespace);\r\n result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n var w = getWindow();\r\n if (w) {\r\n eventOff(w, eventName, callback, evtNamespace);\r\n eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n eventOff(doc, eventName, callback, evtNamespace);\r\n }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && events[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n added = addEventHandler(name, listener, evtNamespace) || added;\r\n }\r\n }\r\n });\r\n }\r\n return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && isArray(events)) {\r\n added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n if (!added && excludeEvents && excludeEvents[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n added = _addEventListeners(events, listener, null, evtNamespace);\r\n }\r\n }\r\n return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n if (events && isArray(events)) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n removeEventHandler(name, listener, evtNamespace);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"hidden\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n }\r\n if (!pageUnloadAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n }\r\n return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n removeEventListeners([strPageHide], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"visible\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n if (!pageShowAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n }\r\n return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n removeEventListeners([strPageShow], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n//# sourceMappingURL=EventHelpers.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_SET_ENABLED, _DYN_SUBSTR, _DYN_SUBSTRING } from \"../__DynamicConstants\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getPerformance, isIE } from \"./EnvUtils\";\r\nimport { addEventHandler, attachEvent, detachEvent } from \"./EventHelpers\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, dateNow, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { mwcRandom32, mwcRandomSeed, newId, random32, randomValue } from \"./RandomHelper\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n var uuid = generateW3CId();\r\n return uuid[_DYN_SUBSTRING /* @min:%2esubstring */](0, 8) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](8, 12) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](12, 16) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](16, 20) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](20);\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n var perf = getPerformance();\r\n if (perf && perf.now) {\r\n return perf.now();\r\n }\r\n return dateNow();\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value[_DYN_LENGTH /* @min:%2elength */];\r\n var start = len - search[_DYN_LENGTH /* @min:%2elength */];\r\n return value[_DYN_SUBSTRING /* @min:%2esubstring */](start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = STR_EMPTY, tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return oct[_DYN_SUBSTR /* @min:%2esubstr */](0, 8) + oct[_DYN_SUBSTR /* @min:%2esubstr */](9, 4) + \"4\" + oct[_DYN_SUBSTR /* @min:%2esubstr */](13, 3) + clockSequenceHi + oct[_DYN_SUBSTR /* @min:%2esubstr */](16, 3) + oct[_DYN_SUBSTR /* @min:%2esubstr */](19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n _canUseCookies: undefined,\r\n isTypeof: isTypeof,\r\n isUndefined: isUndefined,\r\n isNullOrUndefined: isNullOrUndefined,\r\n hasOwnProperty: hasOwnProperty,\r\n isFunction: isFunction,\r\n isObject: isObject,\r\n isDate: isDate,\r\n isArray: isArray,\r\n isError: isError,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isBoolean: isBoolean,\r\n toISOString: toISOString,\r\n arrForEach: arrForEach,\r\n arrIndexOf: arrIndexOf,\r\n arrMap: arrMap,\r\n arrReduce: arrReduce,\r\n strTrim: strTrim,\r\n objCreate: objCreateFn,\r\n objKeys: objKeys,\r\n objDefineAccessors: objDefineAccessors,\r\n addEventHandler: addEventHandler,\r\n dateNow: dateNow,\r\n isIE: isIE,\r\n disableCookies: disableCookies,\r\n newGuid: newGuid,\r\n perfNow: perfNow,\r\n newId: newId,\r\n randomValue: randomValue,\r\n random32: random32,\r\n mwcRandomSeed: mwcRandomSeed,\r\n mwcRandom32: mwcRandom32,\r\n generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n Attach: attachEvent,\r\n AttachEvent: attachEvent,\r\n Detach: detachEvent,\r\n DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n var cookieMgr = _gblCookieMgr(config, logger);\r\n var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n if (_cookieMgrs === null) {\r\n _cookieMgrs = [];\r\n _canUseCookies = legacyCanUseCookies;\r\n // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n // this WILL NOT work for ES3 browsers (< IE8)\r\n objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n return _canUseCookies;\r\n }, function (value) {\r\n _canUseCookies = value;\r\n arrForEach(_cookieMgrs, function (mgr) {\r\n mgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](value);\r\n });\r\n });\r\n }\r\n if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n _cookieMgrs[_DYN_PUSH /* @min:%2epush */](cookieMgr);\r\n }\r\n if (isBoolean(legacyCanUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](legacyCanUseCookies);\r\n }\r\n if (isBoolean(_canUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](_canUseCookies);\r\n }\r\n return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n _legacyCookieMgr()[_DYN_SET_ENABLED /* @min:%2esetEnabled */](false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n//# sourceMappingURL=CoreUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _DYN_INDEX_OF, _DYN_LENGTH, _DYN_SPAN_ID, _DYN_SPLIT, _DYN_SUBSTR, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_VERSION } from \"../__DynamicConstants\";\r\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { isArray, isString, strTrim } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]{1,64})?$/i;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n if (value && value[_DYN_LENGTH /* @min:%2elength */] === len && value !== invalidValue) {\r\n return !!value.match(/^[\\da-f]*$/i);\r\n }\r\n return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n if (_isValid(value, len)) {\r\n return value;\r\n }\r\n return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n if (isNaN(value) || value < 0 || value > 255) {\r\n value = 0x01;\r\n }\r\n var result = value.toString(16);\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < 2) {\r\n result = \"0\" + result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n var _a;\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n _a.spanId = isValidSpanId(spanId) ? spanId : generateW3CId()[_DYN_SUBSTR /* @min:%2esubstr */](0, 16),\r\n _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,\r\n _a;\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value - The value to be parsed\r\n * @param selectIdx - If the found value is comma separated which is the preferred entry to select, defaults to the first\r\n * @returns\r\n */\r\nexport function parseTraceParent(value, selectIdx) {\r\n var _a;\r\n if (!value) {\r\n // Don't pass a null/undefined or empty string\r\n return null;\r\n }\r\n if (isArray(value)) {\r\n // The value may have been encoded on the page into an array so handle this automatically\r\n value = value[0] || \"\";\r\n }\r\n if (!value || !isString(value) || value[_DYN_LENGTH /* @min:%2elength */] > 8192) {\r\n // limit potential processing based on total length\r\n return null;\r\n }\r\n if (value[_DYN_INDEX_OF /* @min:%2eindexOf */](\",\") !== -1) {\r\n var values = value[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n value = values[selectIdx > 0 && values[_DYN_LENGTH /* @min:%2elength */] > selectIdx ? selectIdx : 0];\r\n }\r\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n if (!match || // No match\r\n match[1] === INVALID_VERSION || // version ff is forbidden\r\n match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n return null;\r\n }\r\n return _a = {\r\n version: (match[1] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](),\r\n traceId: (match[2] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](),\r\n spanId: (match[3] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()\r\n },\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = parseInt(match[4], 16),\r\n _a;\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n if (!value ||\r\n !_isValid(value[_DYN_VERSION /* @min:%2eversion */], 2, INVALID_VERSION) ||\r\n !_isValid(value[_DYN_TRACE_ID /* @min:%2etraceId */], 32, INVALID_TRACE_ID) ||\r\n !_isValid(value[_DYN_SPAN_ID /* @min:%2espanId */], 16, INVALID_SPAN_ID) ||\r\n !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]), 2)) {\r\n // Each known field must contain a valid value\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n if (isValidTraceParent(value)) {\r\n return (value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n if (value) {\r\n // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n var flags = _formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]);\r\n if (!_isValid(flags, 2)) {\r\n flags = \"01\";\r\n }\r\n var version = value[_DYN_VERSION /* @min:%2eversion */] || DEFAULT_VERSION;\r\n if (version !== \"00\" && version !== \"ff\") {\r\n // Reduce version to \"00\"\r\n version = DEFAULT_VERSION;\r\n }\r\n // Format as version 00\r\n return \"\".concat(version.toLowerCase(), \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID).toLowerCase(), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID).toLowerCase(), \"-\").concat(flags.toLowerCase());\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @param selectIdx - If the found value is comma separated which is the preferred entry to select, defaults to the first\r\n * @returns\r\n */\r\nexport function findW3cTraceParent(selectIdx) {\r\n var name = \"traceparent\";\r\n var traceParent = parseTraceParent(findMetaTag(name), selectIdx);\r\n if (!traceParent) {\r\n traceParent = parseTraceParent(findNamedServerTiming(name), selectIdx);\r\n }\r\n return traceParent;\r\n}\r\n//# sourceMappingURL=W3cTraceParent.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_INITIALIZE, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_SPAN_ID, _DYN_TEARDOWN, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { arrForEach, isFunction } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n var pluginState;\r\n while (proxy) {\r\n var thePlugin = proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n isFunction(lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]) &&\r\n isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](thePlugin);\r\n }\r\n var isInitialized = false;\r\n if (isFunction(thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */])) {\r\n isInitialized = thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]();\r\n }\r\n else {\r\n pluginState = _getPluginState(thePlugin);\r\n isInitialized = pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */];\r\n }\r\n if (!isInitialized) {\r\n initPlugins[_DYN_PUSH /* @min:%2epush */](thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n }\r\n // Now initialize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n var core = processContext[STR_CORE]();\r\n thePlugin[_DYN_INITIALIZE /* @min:%2einitialize */](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n pluginState = _getPluginState(thePlugin);\r\n // Only add the core to the state if the plugin didn't set it (doesn't extent from BaseTelemetryPlugin)\r\n if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {\r\n pluginState[STR_CORE] = core;\r\n }\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = true;\r\n delete pluginState[_DYN_TEARDOWN /* @min:%2eteardown */];\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n if (extB) {\r\n var bHasProcess = isFunction(extB[STR_PROCESS_TELEMETRY]);\r\n if (isFunction(extA[STR_PROCESS_TELEMETRY])) {\r\n result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n }\r\n else {\r\n result = extA ? 1 : -1;\r\n }\r\n return result;\r\n });\r\n // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n var idx = 0;\r\n function _doUnload() {\r\n while (idx < components[_DYN_LENGTH /* @min:%2elength */]) {\r\n var component = components[idx++];\r\n if (component) {\r\n var func = component._doUnload || component[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */];\r\n if (isFunction(func)) {\r\n if (func[_DYN_CALL /* @min:%2ecall */](component, unloadCtx, unloadState, _doUnload) === true) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n var trace = {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace[_DYN_TRACE_ID /* @min:%2etraceId */];\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace[_DYN_TRACE_ID /* @min:%2etraceId */] = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace[_DYN_SPAN_ID /* @min:%2espanId */];\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace[_DYN_SPAN_ID /* @min:%2espanId */] = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = newTraceFlags;\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=TelemetryHelpers.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_IDENTIFIER, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nimport { _throwInternal, safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, isObject, isUndefined, objExtend, objForEachKey, objFreeze, objKeys, proxyFunctions } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_DISABLED, STR_EMPTY, STR_EXTENSION_CONFIG, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n while (proxy) {\r\n if (proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]() === startAt) {\r\n return proxy;\r\n }\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n return createTelemetryProxyChain([startAt], core[_DYN_CONFIG /* @min:%2econfig */] || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param config\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, config, core, startAt) {\r\n // We have a special case where we want to start execution from this specific plugin\r\n // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n var _nextProxy = null; // By Default set as no next plugin\r\n var _onComplete = [];\r\n if (startAt !== null) {\r\n // There is no next element (null) vs not defined (undefined) so use the full chain\r\n _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n }\r\n var context = {\r\n _next: _moveNext,\r\n ctx: {\r\n core: function () {\r\n return core;\r\n },\r\n diagLog: function () {\r\n return safeGetLogger(core, config);\r\n },\r\n getCfg: function () {\r\n return config;\r\n },\r\n getExtCfg: _getExtCfg,\r\n getConfig: _getConfig,\r\n hasNext: function () {\r\n return !!_nextProxy;\r\n },\r\n getNext: function () {\r\n return _nextProxy;\r\n },\r\n setNext: function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n },\r\n iterate: _iterateChain,\r\n onComplete: _addOnComplete\r\n }\r\n };\r\n function _addOnComplete(onComplete, that) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (onComplete) {\r\n _onComplete[_DYN_PUSH /* @min:%2epush */]({\r\n func: onComplete,\r\n self: !isUndefined(that) ? that : context.ctx,\r\n args: args\r\n });\r\n }\r\n }\r\n function _moveNext() {\r\n var nextProxy = _nextProxy;\r\n // Automatically move to the next plugin\r\n _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT /* @min:%2egetNext */]() : null;\r\n if (!nextProxy) {\r\n var onComplete = _onComplete;\r\n if (onComplete && onComplete[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(onComplete, function (completeDetails) {\r\n try {\r\n completeDetails.func[_DYN_CALL /* @min:%2ecall */](completeDetails.self, completeDetails.args);\r\n }\r\n catch (e) {\r\n _throwInternal(core[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n }\r\n });\r\n _onComplete = [];\r\n }\r\n }\r\n return nextProxy;\r\n }\r\n function _getExtCfg(identifier, defaultValue, mergeDefault) {\r\n if (defaultValue === void 0) { defaultValue = {}; }\r\n if (mergeDefault === void 0) { mergeDefault = 0 /* GetExtCfgMergeType.None */; }\r\n var theConfig;\r\n if (config) {\r\n var extConfig = config[STR_EXTENSION_CONFIG /* @min:%2eextensionConfig */];\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n if (!theConfig) {\r\n // Just use the defaults\r\n theConfig = defaultValue;\r\n }\r\n else if (isObject(defaultValue)) {\r\n if (mergeDefault !== 0 /* GetExtCfgMergeType.None */) {\r\n // Merge the defaults and configured values\r\n var newConfig_1 = objExtend(true, defaultValue, theConfig);\r\n if (config && mergeDefault === 2 /* GetExtCfgMergeType.MergeDefaultFromRootOrDefault */) {\r\n // Enumerate over the defaultValues and if not already populated attempt to\r\n // find a value from the root config\r\n objForEachKey(defaultValue, function (field) {\r\n // for each unspecified field, set the default value\r\n if (isNullOrUndefined(newConfig_1[field])) {\r\n var cfgValue = config[field];\r\n if (!isNullOrUndefined(cfgValue)) {\r\n newConfig_1[field] = cfgValue;\r\n }\r\n }\r\n });\r\n }\r\n theConfig = newConfig_1;\r\n }\r\n }\r\n return theConfig;\r\n }\r\n function _getConfig(identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _getExtCfg(identifier, null);\r\n if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n }\r\n else if (config && !isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n }\r\n function _iterateChain(cb) {\r\n // Keep processing until we reach the end of the chain\r\n var nextPlugin;\r\n while (!!(nextPlugin = context._next())) {\r\n var plugin = nextPlugin[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (plugin) {\r\n // callback with the current on\r\n cb(plugin);\r\n }\r\n }\r\n }\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, config, core, startAt) {\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(env) {\r\n var nextPlugin = internalContext._next();\r\n // Run the next plugin which will call \"processNext()\"\r\n nextPlugin && nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, context);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), config, core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(unloadState) {\r\n var nextPlugin = internalContext._next();\r\n nextPlugin && nextPlugin.unload(context, unloadState);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(updateState) {\r\n return context.iterate(function (plugin) {\r\n if (isFunction(plugin[_DYN_UPDATE /* @min:%2eupdate */])) {\r\n plugin[_DYN_UPDATE /* @min:%2eupdate */](context, updateState);\r\n }\r\n });\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n var firstProxy = null;\r\n var add = startAt ? false : true;\r\n if (isArray(plugins) && plugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy_1 = null;\r\n arrForEach(plugins, function (thePlugin) {\r\n if (!add && startAt === thePlugin) {\r\n add = true;\r\n }\r\n if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Only add plugins that are processors\r\n var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n if (!firstProxy) {\r\n firstProxy = newProxy;\r\n }\r\n if (lastProxy_1) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy_1._setNext(newProxy);\r\n }\r\n lastProxy_1 = newProxy;\r\n }\r\n });\r\n }\r\n if (startAt && !firstProxy) {\r\n // Special case where the \"startAt\" was not in the original list of plugins\r\n return createTelemetryProxyChain([startAt], config, core);\r\n }\r\n return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n var nextProxy = null;\r\n var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]);\r\n var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]);\r\n var chainId;\r\n if (plugin) {\r\n chainId = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"-\" + plugin[STR_PRIORITY /* @min:%2epriority */] + \"-\" + _chainId++;\r\n }\r\n else {\r\n chainId = \"Unknown-0-\" + _chainId++;\r\n }\r\n var proxyChain = {\r\n getPlugin: function () {\r\n return plugin;\r\n },\r\n getNext: function () {\r\n return nextProxy;\r\n },\r\n processTelemetry: _processTelemetry,\r\n unload: _unloadPlugin,\r\n update: _updatePlugin,\r\n _id: chainId,\r\n _setNext: function (nextPlugin) {\r\n nextProxy = nextPlugin;\r\n }\r\n };\r\n function _getTelCtx() {\r\n var itemCtx;\r\n // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n itemCtx = plugin[strGetTelCtx]();\r\n }\r\n if (!itemCtx) {\r\n // Create a temporary one\r\n itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n }\r\n return itemCtx;\r\n }\r\n function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n var hasRun = false;\r\n var identifier = plugin ? plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] : strTelemetryPluginChain;\r\n var hasRunContext = itemCtx[strHasRunFlags];\r\n if (!hasRunContext) {\r\n // Assign and populate\r\n hasRunContext = itemCtx[strHasRunFlags] = {};\r\n }\r\n // Ensure that we keep the context in sync\r\n itemCtx.setNext(nextProxy);\r\n if (plugin) {\r\n doPerf(itemCtx[STR_CORE /* @min:%2ecore */](), function () { return identifier + \":\" + name; }, function () {\r\n // Mark this component as having run\r\n hasRunContext[chainId] = true;\r\n try {\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n var nextId = nextProxy ? nextProxy._id : STR_EMPTY;\r\n if (nextId) {\r\n hasRunContext[nextId] = false;\r\n }\r\n hasRun = processPluginFn(itemCtx);\r\n }\r\n catch (error) {\r\n var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n if (hasNextRun) {\r\n // The next plugin after us has already run so set this one as complete\r\n hasRun = true;\r\n }\r\n if (!nextProxy || !hasNextRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n }\r\n }\r\n }, details, isAsync);\r\n }\r\n return hasRun;\r\n }\r\n function _processTelemetry(env, itemCtx) {\r\n itemCtx = itemCtx || _getTelCtx();\r\n function _callProcessTelemetry(itemCtx) {\r\n if (!plugin || !hasProcessTelemetry) {\r\n return false;\r\n }\r\n var pluginState = _getPluginState(plugin);\r\n if (pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] || pluginState[STR_DISABLED]) {\r\n return false;\r\n }\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n // other form of error occurred\r\n if (hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](nextProxy);\r\n }\r\n plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, itemCtx);\r\n // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n return true;\r\n }\r\n if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n }\r\n function _unloadPlugin(unloadCtx, unloadState) {\r\n function _callTeardown() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n pluginState[STR_CORE /* @min:%2ecore */] = null;\r\n pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] = true;\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = false;\r\n if (plugin[_DYN_TEARDOWN /* @min:%2eteardown */] && plugin[_DYN_TEARDOWN /* @min:%2eteardown */](unloadCtx, unloadState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState[_DYN_IS_ASYNC /* @min:%2eisAsync */])) {\r\n // Only called if we hasRun was not true\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n }\r\n function _updatePlugin(updateCtx, updateState) {\r\n function _callUpdate() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n if (plugin[_DYN_UPDATE /* @min:%2eupdate */] && plugin[_DYN_UPDATE /* @min:%2eupdate */](updateCtx, updateState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n // Only called if we hasRun was not true\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n var _self = this;\r\n var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n // Proxy all functions of the context to this object\r\n proxyFunctions(_self, context, objKeys(context));\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n//# sourceMappingURL=ProcessTelemetryContext.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// \r\nimport { _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_FLUSH, _DYN_IDENTIFIER, _DYN_LENGTH, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, objFreeze, throwError } from \"./HelperFuncs\";\r\nimport { STR_PRIORITY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins } from \"./TelemetryHelpers\";\r\nexport var ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority - \";\r\nfunction _addChannelQueue(channelQueue, queue, core) {\r\n if (queue && isArray(queue) && queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n queue = queue.sort(function (a, b) {\r\n return a[STR_PRIORITY /* @min:%2epriority */] - b[STR_PRIORITY /* @min:%2epriority */];\r\n });\r\n arrForEach(queue, function (queueItem) {\r\n if (queueItem[STR_PRIORITY /* @min:%2epriority */] < ChannelControllerPriority) {\r\n throwError(ChannelValidationMessage + queueItem[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n }\r\n });\r\n channelQueue[_DYN_PUSH /* @min:%2epush */]({\r\n queue: objFreeze(queue),\r\n chain: createTelemetryProxyChain(queue, core[_DYN_CONFIG /* @min:%2econfig */], core)\r\n });\r\n }\r\n}\r\nexport function createChannelControllerPlugin(channelQueue, core) {\r\n function _getTelCtx() {\r\n return createProcessTelemetryContext(null, core[_DYN_CONFIG /* @min:%2econfig */], core, null);\r\n }\r\n function _processChannelQueue(theChannels, itemCtx, processFn, onComplete) {\r\n var waiting = theChannels ? (theChannels[_DYN_LENGTH /* @min:%2elength */] + 1) : 1;\r\n function _runChainOnComplete() {\r\n waiting--;\r\n if (waiting === 0) {\r\n onComplete && onComplete();\r\n onComplete = null;\r\n }\r\n }\r\n if (waiting > 0) {\r\n arrForEach(theChannels, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var channelChain = channels.chain;\r\n var chainCtx = itemCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](channelChain);\r\n chainCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_runChainOnComplete);\r\n // Cause this chain to start processing\r\n processFn(chainCtx);\r\n }\r\n else {\r\n waiting--;\r\n }\r\n });\r\n }\r\n _runChainOnComplete();\r\n }\r\n function _doUpdate(updateCtx, updateState) {\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n }, function () {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n });\r\n return true;\r\n }\r\n function _doTeardown(unloadCtx, unloadState) {\r\n var theUnloadState = unloadState || {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */,\r\n isAsync: false\r\n };\r\n _processChannelQueue(channelQueue, unloadCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }, function () {\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n isInitialized = false;\r\n });\r\n return true;\r\n }\r\n function _getChannel(pluginIdentifier) {\r\n var thePlugin = null;\r\n if (channelQueue && channelQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channelQueue, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channels.queue, function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier) {\r\n thePlugin = ext;\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n });\r\n if (thePlugin) {\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n }\r\n });\r\n }\r\n return thePlugin;\r\n }\r\n var isInitialized = false;\r\n var channelController = {\r\n identifier: \"ChannelControllerPlugin\",\r\n priority: ChannelControllerPriority,\r\n initialize: function (config, core, extensions, pluginChain) {\r\n isInitialized = true;\r\n arrForEach(channelQueue, function (channels) {\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n initializePlugins(createProcessTelemetryContext(channels.chain, config, core), extensions);\r\n }\r\n });\r\n },\r\n isInitialized: function () {\r\n return isInitialized;\r\n },\r\n processTelemetry: function (item, itemCtx) {\r\n _processChannelQueue(channelQueue, itemCtx || _getTelCtx(), function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n }, function () {\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n });\r\n },\r\n update: _doUpdate,\r\n pause: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.pause && plugin.pause();\r\n });\r\n }, null);\r\n },\r\n resume: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.resume && plugin.resume();\r\n });\r\n }, null);\r\n },\r\n teardown: _doTeardown,\r\n getChannel: _getChannel,\r\n flush: function (isAsync, callBack, sendReason, cbTimeout) {\r\n // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n var waiting = 1;\r\n var doneIterating = false;\r\n var cbTimer = null;\r\n cbTimeout = cbTimeout || 5000;\r\n function doCallback() {\r\n waiting--;\r\n if (doneIterating && waiting === 0) {\r\n if (cbTimer) {\r\n clearTimeout(cbTimer);\r\n cbTimer = null;\r\n }\r\n callBack && callBack(doneIterating);\r\n callBack = null;\r\n }\r\n }\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n if (plugin[_DYN_FLUSH /* @min:%2eflush */]) {\r\n waiting++;\r\n var handled_1 = false;\r\n // Not all channels will call this callback for every scenario\r\n if (!plugin[_DYN_FLUSH /* @min:%2eflush */](isAsync, function () {\r\n handled_1 = true;\r\n doCallback();\r\n }, sendReason)) {\r\n if (!handled_1) {\r\n // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n // followup function (such as unloading)\r\n if (isAsync && cbTimer == null) {\r\n cbTimer = setTimeout(function () {\r\n cbTimer = null;\r\n doCallback();\r\n }, cbTimeout);\r\n }\r\n else {\r\n doCallback();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }, function () {\r\n doneIterating = true;\r\n doCallback();\r\n });\r\n return true;\r\n },\r\n _setQueue: function (queue) {\r\n channelQueue = queue;\r\n }\r\n };\r\n return channelController;\r\n}\r\nexport function createChannelQueues(channels, extensions, core) {\r\n var channelQueue = [];\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n arrForEach(channels, function (queue) { return _addChannelQueue(channelQueue, queue, core); });\r\n }\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n var extensionQueue_1 = [];\r\n arrForEach(extensions, function (plugin) {\r\n if (plugin[STR_PRIORITY /* @min:%2epriority */] > ChannelControllerPriority) {\r\n extensionQueue_1[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n });\r\n _addChannelQueue(channelQueue, extensionQueue_1, core);\r\n }\r\n return channelQueue;\r\n}\r\n//# sourceMappingURL=ChannelController.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_DIAG_LOG, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach } from \"./HelperFuncs\";\r\nexport function createUnloadHandlerContainer() {\r\n var handlers = [];\r\n function _addHandler(handler) {\r\n if (handler) {\r\n handlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n function _runHandlers(unloadCtx, unloadState) {\r\n arrForEach(handlers, function (handler) {\r\n try {\r\n handler(unloadCtx, unloadState);\r\n }\r\n catch (e) {\r\n _throwInternal(unloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n }\r\n });\r\n handlers = [];\r\n }\r\n return {\r\n add: _addHandler,\r\n run: _runHandlers\r\n };\r\n}\r\n//# sourceMappingURL=UnloadHandlerContainer.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PROCESS_TEL_CONT0, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, proxyFunctionAs, setValue } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_EXTENSION_CONFIG, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _isinitialized;\r\n var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n var _unloadHandlerContainer;\r\n var _hooks;\r\n _initDefaults();\r\n dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n _setDefaults(config, core, pluginChain);\r\n _isinitialized = true;\r\n };\r\n _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n var _a;\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (unloadCtx && core !== unloadCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n return;\r\n }\r\n var result;\r\n var unloadDone = false;\r\n var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUnloadState = unloadState || (_a = {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = false,\r\n _a);\r\n function _unloadCallback() {\r\n if (!unloadDone) {\r\n unloadDone = true;\r\n _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n var oldHooks = _hooks;\r\n _hooks = [];\r\n // Remove all instrumentation hooks\r\n arrForEach(oldHooks, function (fn) {\r\n fn.rm();\r\n });\r\n if (result === true) {\r\n theUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }\r\n _initDefaults();\r\n }\r\n }\r\n if (!_self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] || _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n _unloadCallback();\r\n }\r\n else {\r\n // Tell the caller that we will be calling processNext()\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (updateCtx, updateState) {\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (updateCtx && core !== updateCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing\r\n return;\r\n }\r\n var result;\r\n var updateDone = false;\r\n var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n function _updateCallback() {\r\n if (!updateDone) {\r\n updateDone = true;\r\n _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n }\r\n }\r\n if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n _updateCallback();\r\n }\r\n else {\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self._addHook = function (hooks) {\r\n if (hooks) {\r\n if (isArray(hooks)) {\r\n _hooks = _hooks.concat(hooks);\r\n }\r\n else {\r\n _hooks[_DYN_PUSH /* @min:%2epush */](hooks);\r\n }\r\n }\r\n };\r\n proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n });\r\n // These are added after the dynamicProto so that are not moved to the prototype\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */] = function (itemCtx) {\r\n return _getTelCtx(itemCtx)[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n };\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Looks like backward compatibility or out of band processing. And as it looks\r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, null);\r\n }\r\n };\r\n _self._getTelCtx = _getTelCtx;\r\n function _getTelCtx(currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self[STR_CORE /* @min:%2ecore */]);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n }\r\n function _setDefaults(config, core, pluginChain) {\r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n setValue(config, STR_EXTENSION_CONFIG, [], null, isNullOrUndefined);\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */]()[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self[STR_CORE /* @min:%2ecore */] = core;\r\n _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n }\r\n function _initDefaults() {\r\n _isinitialized = false;\r\n _self[STR_CORE /* @min:%2ecore */] = null;\r\n _rootCtx = null;\r\n _nextPlugin = null;\r\n _hooks = [];\r\n _unloadHandlerContainer = createUnloadHandlerContainer();\r\n }\r\n }\r\n// Removed Stub for BaseTelemetryPlugin.prototype.initialize.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.teardown.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.update.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addUnloadCb.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addHook.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseTelemetryPlugin.__ieDyn=1;\n\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n//# sourceMappingURL=BaseTelemetryPlugin.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n// \r\n// \r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_APPLY, _DYN_DIAG_LOG, _DYN_LENGTH, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SPLICE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, getExceptionName } from \"./HelperFuncs\";\r\nimport { STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n __extends(TelemetryInitializerPlugin, _super);\r\n function TelemetryInitializerPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"TelemetryInitializerPlugin\";\r\n _this.priority = 199;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _id;\r\n var _initializers;\r\n _initDefaults();\r\n dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n var theInitializer = {\r\n id: _id++,\r\n fn: telemetryInitializer\r\n };\r\n _initializers[_DYN_PUSH /* @min:%2epush */](theInitializer);\r\n var handler = {\r\n remove: function () {\r\n arrForEach(_initializers, function (initializer, idx) {\r\n if (initializer.id === theInitializer.id) {\r\n _initializers[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n return handler;\r\n };\r\n _self[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */] = function (item, itemCtx) {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _initializers[_DYN_LENGTH /* @min:%2elength */];\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _initializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.fn[_DYN_APPLY /* @min:%2eapply */](null, [item]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item, itemCtx);\r\n }\r\n };\r\n _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function () {\r\n _initDefaults();\r\n };\r\n });\r\n function _initDefaults() {\r\n _id = 0;\r\n _initializers = [];\r\n }\r\n return _this;\r\n }\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.processTelemetry.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n TelemetryInitializerPlugin.__ieDyn=1;\n\n return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n//# sourceMappingURL=TelemetryInitializerPlugin.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { __spreadArrayFn as __spreadArray } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CONFIG, _DYN_FLUSH, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT0, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SET_ENABLED, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN__EXTENSIONS } from \"../__DynamicConstants\";\r\nimport { ChannelControllerPriority, createChannelControllerPlugin, createChannelQueues } from \"./ChannelController\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { arrForEach, arrIndexOf, getCfgValue, getSetValue, isFunction, isNullOrUndefined, objExtend, objFreeze, proxyFunctionAs, proxyFunctions, throwError, toISOString } from \"./HelperFuncs\";\r\nimport { STR_CHANNELS, STR_CORE, STR_CREATE_PERF_MGR, STR_DISABLED, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_EXTENSIONS, STR_EXTENSION_CONFIG, STR_GET_PERF_MGR, STR_PRIORITY } from \"./InternalConstants\";\r\nimport { PerfManager, getGblPerfMgr } from \"./PerfManager\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\nvar defaultInitConfig = {\r\n // Have the Diagnostic Logger default to log critical errors to the console\r\n loggingLevelConsole: 1 /* eLoggingSeverity.CRITICAL */\r\n};\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n var _a;\r\n // Concat all available extensions\r\n var coreExtensions = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the\r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n // Check for ext.initialize\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE /* @min:%2einitialize */])) {\r\n throwError(strValidationError);\r\n }\r\n var extPriority = ext[STR_PRIORITY /* @min:%2epriority */];\r\n var identifier = ext[_DYN_IDENTIFIER /* @min:%2eidentifier */];\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < channelPriority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions[_DYN_PUSH /* @min:%2epush */](ext);\r\n }\r\n });\r\n return _a = {\r\n all: allExtensions\r\n },\r\n _a[STR_CORE /* @min:core */] = coreExtensions,\r\n _a;\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n var exists = false;\r\n arrForEach(plugins, function (plugin) {\r\n if (plugin === thePlugin) {\r\n exists = true;\r\n return -1;\r\n }\r\n });\r\n return exists;\r\n}\r\nfunction _createDummyNotificationManager() {\r\n var _a;\r\n return objCreateFn((_a = {},\r\n _a[_DYN_ADD_NOTIFICATION_LIS1 /* @min:addNotificationListener */] = function (listener) { },\r\n _a[_DYN_REMOVE_NOTIFICATION_2 /* @min:removeNotificationListener */] = function (listener) { },\r\n _a[STR_EVENTS_SENT /* @min:eventsSent */] = function (events) { },\r\n _a[STR_EVENTS_DISCARDED /* @min:eventsDiscarded */] = function (events, reason) { },\r\n _a[STR_EVENTS_SEND_REQUEST /* @min:eventsSendRequest */] = function (sendReason, isAsync) { },\r\n _a));\r\n}\r\nvar BaseCore = /** @class */ (function () {\r\n function BaseCore() {\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _config;\r\n var _isInitialized;\r\n var _eventQueue;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cfgPerfManager;\r\n var _cookieManager;\r\n var _pluginChain;\r\n var _configExtensions;\r\n var _coreExtensions;\r\n var _channelControl;\r\n var _channelConfig;\r\n var _channelQueue;\r\n var _isUnloading;\r\n var _telemetryInitializerPlugin;\r\n var _internalLogsEventName;\r\n var _evtNamespace;\r\n var _unloadHandlers;\r\n var _debugListener;\r\n var _traceCtx;\r\n /**\r\n * Internal log poller\r\n */\r\n var _internalLogPoller = 0;\r\n var _forceStopInternalLogPoller = false;\r\n dynamicProto(BaseCore, this, function (_self) {\r\n // Set the default values (also called during teardown)\r\n _initDefaults();\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () { return _isInitialized; };\r\n // Creating the self.initialize = ()\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n if (_isUnloading) {\r\n throwError(strSdkUnloadingError);\r\n }\r\n // Make sure core is only initialized once\r\n if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n throwError(\"Core should not be initialized more than once\");\r\n }\r\n _config = config || {};\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n if (isNullOrUndefined(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */])) {\r\n throwError(\"Please provide instrumentation key\");\r\n }\r\n _notificationManager = notificationManager;\r\n // For backward compatibility only\r\n _self[strNotificationManager] = notificationManager;\r\n _initDebugListener();\r\n _initPerfManager();\r\n // add notification to the extensions in the config so other plugins can access it\r\n _initExtConfig();\r\n if (logger) {\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = logger;\r\n }\r\n var cfgExtensions = getSetValue(_config, STR_EXTENSIONS, []);\r\n // Extension validation\r\n _configExtensions = [];\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */].apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), cfgExtensions, false));\r\n _channelConfig = getSetValue(_config, STR_CHANNELS, []);\r\n _initPluginChain(null);\r\n if (!_channelQueue || _channelQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n throwError(\"No \" + STR_CHANNELS + \" available\");\r\n }\r\n _isInitialized = true;\r\n _self.releaseQueue();\r\n };\r\n _self.getTransmissionControls = function () {\r\n var controls = [];\r\n if (_channelQueue) {\r\n arrForEach(_channelQueue, function (channels) {\r\n controls[_DYN_PUSH /* @min:%2epush */](channels.queue);\r\n });\r\n }\r\n return objFreeze(controls);\r\n };\r\n _self.track = function (telemetryItem) {\r\n // setup default iKey if not passed in\r\n telemetryItem.iKey = telemetryItem.iKey || _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n // add default timestamp if not passed in\r\n telemetryItem[_DYN_TIME /* @min:%2etime */] = telemetryItem[_DYN_TIME /* @min:%2etime */] || toISOString(new Date());\r\n // Common Schema 4.0\r\n telemetryItem.ver = telemetryItem.ver || \"4.0\";\r\n if (!_isUnloading && _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n // Process the telemetry plugin chain\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](telemetryItem);\r\n }\r\n else {\r\n // Queue events until all extensions are initialized\r\n _eventQueue[_DYN_PUSH /* @min:%2epush */](telemetryItem);\r\n }\r\n };\r\n _self[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */] = _createTelCtx;\r\n _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */] = function () {\r\n if (!_notificationManager) {\r\n // Create Dummy notification manager\r\n _notificationManager = _createDummyNotificationManager();\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](listener);\r\n }\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](listener);\r\n }\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_config, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n _cookieManager = cookieMgr;\r\n };\r\n _self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */] = function () {\r\n if (!_perfManager && !_cfgPerfManager) {\r\n if (getCfgValue(_config.enablePerfMgr)) {\r\n var createPerfMgr = getCfgValue(_config[STR_CREATE_PERF_MGR /* @min:%2ecreatePerfMgr */]);\r\n if (isFunction(createPerfMgr)) {\r\n _cfgPerfManager = createPerfMgr(_self, _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]());\r\n }\r\n }\r\n }\r\n return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.releaseQueue = function () {\r\n if (_isInitialized && _eventQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var eventQueue = _eventQueue;\r\n _eventQueue = [];\r\n arrForEach(eventQueue, function (event) {\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](event);\r\n });\r\n }\r\n };\r\n _self.pollInternalLogs = function (eventName) {\r\n _internalLogsEventName = eventName || null;\r\n _forceStopInternalLogPoller = false;\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = null;\r\n }\r\n return _startInternalLogTimer(true);\r\n };\r\n function _startInternalLogTimer(alwaysStart) {\r\n if (!_internalLogPoller && !_forceStopInternalLogPoller) {\r\n var shouldStart = alwaysStart || (_self[_DYN_LOGGER /* @min:%2elogger */] && _self[_DYN_LOGGER /* @min:%2elogger */].queue[_DYN_LENGTH /* @min:%2elength */] > 0);\r\n if (shouldStart) {\r\n var interval = getCfgValue(_config.diagnosticLogInterval);\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n // Keeping as an interval timer for backward compatibility as it returns the result\r\n _internalLogPoller = setInterval(function () {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n _flushInternalLogs();\r\n }, interval);\r\n }\r\n }\r\n return _internalLogPoller;\r\n }\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */] = function () {\r\n _forceStopInternalLogPoller = true;\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n _flushInternalLogs();\r\n }\r\n };\r\n // Add addTelemetryInitializer\r\n proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_isInitialized) {\r\n // The SDK is not initialized\r\n throwError(strSdkNotInitialized);\r\n }\r\n // Check if the SDK still unloading so throw\r\n if (_isUnloading) {\r\n // The SDK is already unloading\r\n throwError(strSdkUnloadingError);\r\n }\r\n var unloadState = (_a = {\r\n reason: 50 /* TelemetryUnloadReason.SdkUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a.flushComplete = false,\r\n _a);\r\n var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n _initDefaults();\r\n unloadComplete && unloadComplete(unloadState);\r\n }, _self);\r\n function _doUnload(flushComplete) {\r\n unloadState.flushComplete = flushComplete;\r\n _isUnloading = true;\r\n // Run all of the unload handlers first (before unloading the plugins)\r\n _unloadHandlers.run(processUnloadCtx, unloadState);\r\n // Stop polling the internal logs\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */]();\r\n // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n processUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n _flushInternalLogs();\r\n if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n _doUnload(false);\r\n }\r\n };\r\n _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */] = _getPlugin;\r\n _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n if (!plugin) {\r\n addCb && addCb(false);\r\n _logOrThrowError(strValidationError);\r\n return;\r\n }\r\n var existingPlugin = _getPlugin(plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n if (existingPlugin && !replaceExisting) {\r\n addCb && addCb(false);\r\n _logOrThrowError(\"Plugin [\" + plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"] is already loaded!\");\r\n return;\r\n }\r\n var updateState = {\r\n reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n };\r\n function _addPlugin(removed) {\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n updateState.added = [plugin];\r\n // Re-Initialize the plugin chain\r\n _initPluginChain(updateState);\r\n addCb && addCb(true);\r\n }\r\n if (existingPlugin) {\r\n var removedPlugins_1 = [existingPlugin.plugin];\r\n var unloadState = {\r\n reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n isAsync: !!isAsync\r\n };\r\n _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n if (!removed) {\r\n // Previous plugin was successfully removed or was not installed\r\n addCb && addCb(false);\r\n }\r\n else {\r\n updateState.removed = removedPlugins_1;\r\n updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n _addPlugin(true);\r\n }\r\n });\r\n }\r\n else {\r\n _addPlugin(false);\r\n }\r\n };\r\n _self.evtNamespace = function () {\r\n return _evtNamespace;\r\n };\r\n _self[_DYN_FLUSH /* @min:%2eflush */] = _flushChannels;\r\n _self.getTraceCtx = function (createNew) {\r\n if (!_traceCtx) {\r\n _traceCtx = createDistributedTraceContext();\r\n }\r\n return _traceCtx;\r\n };\r\n _self.setTraceCtx = function (traceCtx) {\r\n _traceCtx = traceCtx || null;\r\n };\r\n // Create the addUnloadCb\r\n proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n function _initDefaults() {\r\n _isInitialized = false;\r\n // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n _config = objExtend(true, {}, defaultInitConfig);\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_config);\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = [];\r\n _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n _eventQueue = [];\r\n _notificationManager = null;\r\n _perfManager = null;\r\n _cfgPerfManager = null;\r\n _cookieManager = null;\r\n _pluginChain = null;\r\n _coreExtensions = null;\r\n _configExtensions = [];\r\n _channelControl = null;\r\n _channelConfig = null;\r\n _channelQueue = null;\r\n _isUnloading = false;\r\n _internalLogsEventName = null;\r\n _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n _unloadHandlers = createUnloadHandlerContainer();\r\n _traceCtx = null;\r\n }\r\n function _createTelCtx() {\r\n var theCtx = createProcessTelemetryContext(_getPluginChain(), _config, _self);\r\n theCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_startInternalLogTimer);\r\n return theCtx;\r\n }\r\n // Initialize or Re-initialize the plugins\r\n function _initPluginChain(updateState) {\r\n // Extension validation\r\n var theExtensions = _validateExtensions(_self[_DYN_LOGGER /* @min:%2elogger */], ChannelControllerPriority, _configExtensions);\r\n _coreExtensions = theExtensions[STR_CORE /* @min:%2ecore */];\r\n _pluginChain = null;\r\n // Sort the complete set of extensions by priority\r\n var allExtensions = theExtensions.all;\r\n // Initialize the Channel Queues and the channel plugins first\r\n _channelQueue = objFreeze(createChannelQueues(_channelConfig, allExtensions, _self));\r\n if (_channelControl) {\r\n // During add / remove of a plugin this may get called again, so don't re-add if already present\r\n // But we also want the controller as the last, so remove if already present\r\n // And reusing the existing instance, just in case an installed plugin has a reference and\r\n // is using it.\r\n var idx = arrIndexOf(allExtensions, _channelControl);\r\n if (idx !== -1) {\r\n allExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n idx = arrIndexOf(_coreExtensions, _channelControl);\r\n if (idx !== -1) {\r\n _coreExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n _channelControl._setQueue(_channelQueue);\r\n }\r\n else {\r\n _channelControl = createChannelControllerPlugin(_channelQueue, _self);\r\n }\r\n // Add on \"channelController\" as the last \"plugin\"\r\n allExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n _coreExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n // Required to allow plugins to call core.getPlugin() during their own initialization\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = sortPlugins(allExtensions);\r\n // Initialize the controls\r\n _channelControl[_DYN_INITIALIZE /* @min:%2einitialize */](_config, _self, allExtensions);\r\n var initCtx = _createTelCtx();\r\n initializePlugins(initCtx, allExtensions);\r\n // Now reset the extensions to just those being managed by Basecore\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = objFreeze(sortPlugins(_coreExtensions || [])).slice();\r\n if (updateState) {\r\n _doUpdate(updateState);\r\n }\r\n }\r\n function _getPlugin(pluginIdentifier) {\r\n var _a;\r\n var theExt = null;\r\n var thePlugin = null;\r\n arrForEach(_self[_DYN__EXTENSIONS /* @min:%2e_extensions */], function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {\r\n thePlugin = ext;\r\n return -1;\r\n }\r\n });\r\n if (!thePlugin && _channelControl) {\r\n // Check the channel Controller\r\n thePlugin = _channelControl.getChannel(pluginIdentifier);\r\n }\r\n if (thePlugin) {\r\n theExt = (_a = {\r\n plugin: thePlugin\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (enabled) {\r\n _getPluginState(thePlugin)[STR_DISABLED] = !enabled;\r\n },\r\n _a.isEnabled = function () {\r\n var pluginState = _getPluginState(thePlugin);\r\n return !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] && !pluginState[STR_DISABLED];\r\n },\r\n _a.remove = function (isAsync, removeCb) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n var pluginsToRemove = [thePlugin];\r\n var unloadState = (_a = {\r\n reason: 1 /* TelemetryUnloadReason.PluginUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a);\r\n _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n if (removed) {\r\n // Re-Initialize the plugin chain\r\n _initPluginChain({\r\n reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n removed: pluginsToRemove\r\n });\r\n }\r\n removeCb && removeCb(removed);\r\n });\r\n },\r\n _a);\r\n }\r\n return theExt;\r\n }\r\n function _getPluginChain() {\r\n if (!_pluginChain) {\r\n // copy the collection of extensions\r\n var extensions = (_coreExtensions || []).slice();\r\n // During add / remove this may get called again, so don't readd if already present\r\n if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n extensions[_DYN_PUSH /* @min:%2epush */](_telemetryInitializerPlugin);\r\n }\r\n _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _config, _self);\r\n }\r\n return _pluginChain;\r\n }\r\n function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n if (thePlugins && thePlugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var unloadChain = createTelemetryProxyChain(thePlugins, _config, _self);\r\n var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n unloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n var removed = false;\r\n // Remove the listed config extensions\r\n var newConfigExtensions = [];\r\n arrForEach(_configExtensions, function (plugin, idx) {\r\n if (!_isPluginPresent(plugin, thePlugins)) {\r\n newConfigExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n _configExtensions = newConfigExtensions;\r\n // Re-Create the channel config\r\n var newChannelConfig = [];\r\n if (_channelConfig) {\r\n arrForEach(_channelConfig, function (queue, idx) {\r\n var newQueue = [];\r\n arrForEach(queue, function (channel) {\r\n if (!_isPluginPresent(channel, thePlugins)) {\r\n newQueue[_DYN_PUSH /* @min:%2epush */](channel);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n newChannelConfig[_DYN_PUSH /* @min:%2epush */](newQueue);\r\n });\r\n _channelConfig = newChannelConfig;\r\n }\r\n removeComplete && removeComplete(removed);\r\n _startInternalLogTimer();\r\n });\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n else {\r\n removeComplete(false);\r\n }\r\n }\r\n function _flushInternalLogs() {\r\n if (_self[_DYN_LOGGER /* @min:%2elogger */] && _self[_DYN_LOGGER /* @min:%2elogger */].queue) {\r\n var queue = _self[_DYN_LOGGER /* @min:%2elogger */].queue.slice(0);\r\n _self[_DYN_LOGGER /* @min:%2elogger */].queue[_DYN_LENGTH /* @min:%2elength */] = 0;\r\n arrForEach(queue, function (logMessage) {\r\n var _a;\r\n var item = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage[_DYN_MESSAGE_ID /* @min:%2emessageId */],\r\n _a.iKey = getCfgValue(_config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]),\r\n _a.time = toISOString(new Date()),\r\n _a.baseType = _InternalLogMessage.dataType,\r\n _a.baseData = { message: logMessage[_DYN_MESSAGE /* @min:%2emessage */] },\r\n _a);\r\n _self.track(item);\r\n });\r\n }\r\n }\r\n function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n if (_channelControl) {\r\n return _channelControl[_DYN_FLUSH /* @min:%2eflush */](isAsync, callBack, sendReason || 6 /* SendRequestReason.SdkUnload */, cbTimeout);\r\n }\r\n callBack && callBack(false);\r\n return true;\r\n }\r\n function _initDebugListener() {\r\n var disableDbgExt = getCfgValue(_config.disableDbgExt);\r\n if (disableDbgExt === true && _debugListener) {\r\n // Remove any previously loaded debug listener\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](_debugListener);\r\n _debugListener = null;\r\n }\r\n if (_notificationManager && !_debugListener && disableDbgExt !== true) {\r\n _debugListener = getDebugListener(_config);\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](_debugListener);\r\n }\r\n }\r\n function _initPerfManager() {\r\n var enablePerfMgr = getCfgValue(_config.enablePerfMgr);\r\n if (!enablePerfMgr && _cfgPerfManager) {\r\n // Remove any existing config based performance manager\r\n _cfgPerfManager = null;\r\n }\r\n if (enablePerfMgr) {\r\n // Set the performance manager creation function if not defined\r\n getSetValue(_config, STR_CREATE_PERF_MGR, _createPerfManager);\r\n }\r\n }\r\n function _initExtConfig() {\r\n var extConfig = getSetValue(_config, STR_EXTENSION_CONFIG, {});\r\n extConfig.NotificationManager = _notificationManager;\r\n }\r\n function _doUpdate(updateState) {\r\n var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n updateCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_startInternalLogTimer);\r\n if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n function _logOrThrowError(message) {\r\n var logger = _self[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // there should always be a logger\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n _startInternalLogTimer();\r\n }\r\n else {\r\n throwError(message);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for BaseCore.prototype.initialize.\r\n// Removed Stub for BaseCore.prototype.getTransmissionControls.\r\n// Removed Stub for BaseCore.prototype.track.\r\n// Removed Stub for BaseCore.prototype.getProcessTelContext.\r\n// Removed Stub for BaseCore.prototype.getNotifyMgr.\r\n// Removed Stub for BaseCore.prototype.addNotificationListener.\r\n// Removed Stub for BaseCore.prototype.removeNotificationListener.\r\n// Removed Stub for BaseCore.prototype.getCookieMgr.\r\n// Removed Stub for BaseCore.prototype.setCookieMgr.\r\n// Removed Stub for BaseCore.prototype.getPerfMgr.\r\n// Removed Stub for BaseCore.prototype.setPerfMgr.\r\n// Removed Stub for BaseCore.prototype.eventCnt.\r\n// Removed Stub for BaseCore.prototype.pollInternalLogs.\r\n// Removed Stub for BaseCore.prototype.stopPollingInternalLogs.\r\n// Removed Stub for BaseCore.prototype.addTelemetryInitializer.\r\n// Removed Stub for BaseCore.prototype.unload.\r\n// Removed Stub for BaseCore.prototype.getPlugin.\r\n// Removed Stub for BaseCore.prototype.addPlugin.\r\n// Removed Stub for BaseCore.prototype.evtNamespace.\r\n// Removed Stub for BaseCore.prototype.addUnloadCb.\r\n// Removed Stub for BaseCore.prototype.flush.\r\n// Removed Stub for BaseCore.prototype.getTraceCtx.\r\n// Removed Stub for BaseCore.prototype.setTraceCtx.\r\n// Removed Stub for BaseCore.prototype.releaseQueue.\r\n// Removed Stub for BaseCore.prototype._updateHook.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseCore.__ieDyn=1;\n\n return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n//# sourceMappingURL=BaseCore.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LISTENERS, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { arrForEach, arrIndexOf } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_PERF_EVENT } from \"./InternalConstants\";\r\nfunction _runListeners(listeners, name, isAsync, callback) {\r\n arrForEach(listeners, function (listener) {\r\n if (listener && listener[name]) {\r\n if (isAsync) {\r\n setTimeout(function () { return callback(listener); }, 0);\r\n }\r\n else {\r\n try {\r\n callback(listener);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n _self.listeners[_DYN_PUSH /* @min:%2epush */](listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n var index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n while (index > -1) {\r\n _self.listeners[_DYN_SPLICE /* @min:%2esplice */](index, 1);\r\n index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n _self[STR_EVENTS_SENT /* @min:%2eeventsSent */] = function (events) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SENT, true, function (listener) {\r\n listener[STR_EVENTS_SENT /* @min:%2eeventsSent */](events);\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */] = function (events, reason) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_DISCARDED, true, function (listener) {\r\n listener[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */](events, reason);\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */] = function (sendReason, isAsync) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {\r\n listener[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendReason, isAsync);\r\n });\r\n };\r\n _self[STR_PERF_EVENT /* @min:%2eperfEvent */] = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */]()) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_PERF_EVENT, false, function (listener) {\r\n if (perfEvent[_DYN_IS_ASYNC /* @min:%2eisAsync */]) {\r\n setTimeout(function () { return listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent); }, 0);\r\n }\r\n else {\r\n listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for NotificationManager.prototype.addNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.removeNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.eventsSent.\r\n// Removed Stub for NotificationManager.prototype.eventsDiscarded.\r\n// Removed Stub for NotificationManager.prototype.eventsSendRequest.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n NotificationManager.__ieDyn=1;\n\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n//# sourceMappingURL=NotificationManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_GET_NOTIFY_MGR, _DYN_INITIALIZE, _DYN_NAME } from \"../__DynamicConstants\";\r\nimport { BaseCore } from \"./BaseCore\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport { isNullOrUndefined, throwError } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_GET_PERF_MGR } from \"./InternalConstants\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n __extends(AppInsightsCore, _super);\r\n function AppInsightsCore() {\r\n var _this = _super.call(this) || this;\r\n dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n _base[_DYN_INITIALIZE /* @min:%2einitialize */](config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */](), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n _validateTelemetryItem(telemetryItem);\r\n _base.track(telemetryItem);\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n function _validateTelemetryItem(telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[_DYN_NAME /* @min:%2ename */])) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throwError(\"telemetry name required\");\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]();\r\n if (manager) {\r\n manager[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */]([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AppInsightsCore.prototype.initialize.\r\n// Removed Stub for AppInsightsCore.prototype.track.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n AppInsightsCore.__ieDyn=1;\n\n return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n//# sourceMappingURL=AppInsightsCore.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nimport { _getObjProto, hasOwnProperty } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var _a;\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = aiHook.n,\r\n _a.inst = funcThis,\r\n _a.ctx = null,\r\n _a.set = _replaceArg,\r\n _a);\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n funcArgs.evt = getGlobalInst(\"event\");\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target[_DYN_PUSH /* @min:%2epush */](arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n if (theFunc) {\r\n try {\r\n funcArgs.rslt = theFunc[_DYN_APPLY /* @min:%2eapply */](funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype, checkParentProto) {\r\n var owner = null;\r\n if (target) {\r\n if (hasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, checkParentProto, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n var aiHook = fn && fn[aiInstrumentHooks];\r\n if (!aiHook) {\r\n // Only hook the function once\r\n aiHook = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook);\r\n newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook.i++;\r\n aiHook.h[_DYN_PUSH /* @min:%2epush */](theHook);\r\n return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype, checkParentProto) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype, checkParentProto);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strShimFunction) {\r\n return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype, checkParentProto) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype, checkParentProto);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks[_DYN_PUSH /* @min:%2epush */](hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n * @param checkParentProto - If the function doesn't exist on the target or it's prototype should it attempt to hook the parent's prototype\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype, checkParentProto) {\r\n if (target && evtName && callbacks) {\r\n var owner = _getOwner(target, evtName, checkPrototype, checkParentProto) || target;\r\n if (owner) {\r\n return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n }\r\n }\r\n return null;\r\n}\r\n//# sourceMappingURL=InstrumentHooks.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var DEFAULT_BREEZE_PATH = \"/v2/track\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n//# sourceMappingURL=Constants.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isFunction } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n var event = null;\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n }\r\n else { // Event has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n return event;\r\n}\r\n//# sourceMappingURL=DomHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SPLIT = \"split\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 41\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_INGESTIONENDPOINT = \"ingestionendpoint\"; // Count: 6\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 12\r\nexport var _DYN_REMOVE_ITEM = \"removeItem\"; // Count: 3\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 10\r\nexport var _DYN_COUNT = \"count\"; // Count: 8\r\nexport var _DYN_PRE_TRIGGER_DATE = \"preTriggerDate\"; // Count: 4\r\nexport var _DYN_DISABLED = \"disabled\"; // Count: 3\r\nexport var _DYN_INTERVAL = \"interval\"; // Count: 3\r\nexport var _DYN_DAYS_OF_MONTH = \"daysOfMonth\"; // Count: 3\r\nexport var _DYN_DATE = \"date\"; // Count: 5\r\nexport var _DYN_GET_UTCDATE = \"getUTCDate\"; // Count: 3\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 4\r\nexport var _DYN_PATHNAME = \"pathname\"; // Count: 4\r\nexport var _DYN_CORRELATION_HEADER_E0 = \"correlationHeaderExcludePatterns\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\nexport var _DYN_EXTENSION_CONFIG = \"extensionConfig\"; // Count: 4\r\nexport var _DYN_EXCEPTIONS = \"exceptions\"; // Count: 6\r\nexport var _DYN_PARSED_STACK = \"parsedStack\"; // Count: 13\r\nexport var _DYN_PROPERTIES = \"properties\"; // Count: 9\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 9\r\nexport var _DYN_SIZE_IN_BYTES = \"sizeInBytes\"; // Count: 11\r\nexport var _DYN_TYPE_NAME = \"typeName\"; // Count: 11\r\nexport var _DYN_SEVERITY_LEVEL = \"severityLevel\"; // Count: 5\r\nexport var _DYN_PROBLEM_GROUP = \"problemGroup\"; // Count: 3\r\nexport var _DYN_IS_MANUAL = \"isManual\"; // Count: 3\r\nexport var _DYN__CREATE_FROM_INTERFA1 = \"CreateFromInterface\"; // Count: 2\r\nexport var _DYN_ASSEMBLY = \"assembly\"; // Count: 7\r\nexport var _DYN_FILE_NAME = \"fileName\"; // Count: 8\r\nexport var _DYN_HAS_FULL_STACK = \"hasFullStack\"; // Count: 6\r\nexport var _DYN_LEVEL = \"level\"; // Count: 5\r\nexport var _DYN_METHOD = \"method\"; // Count: 7\r\nexport var _DYN_LINE = \"line\"; // Count: 6\r\nexport var _DYN_DURATION = \"duration\"; // Count: 4\r\nexport var _DYN_RECEIVED_RESPONSE = \"receivedResponse\"; // Count: 2\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 6\r\nexport var _DYN_SANITIZE_KEY_AND_ADD2 = \"sanitizeKeyAndAddUniqueness\"; // Count: 2\r\nexport var _DYN_SANITIZE_EXCEPTION = \"sanitizeException\"; // Count: 2\r\nexport var _DYN_SANITIZE_PROPERTIES = \"sanitizeProperties\"; // Count: 2\r\nexport var _DYN_SANITIZE_MEASUREMENT3 = \"sanitizeMeasurements\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n return str.toString()[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n totalms = Math.round(totalms);\r\n var ms = strEmpty + totalms % 1000;\r\n var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n ms = ms[_DYN_LENGTH /* @min:%2elength */] === 1 ? \"00\" + ms : ms[_DYN_LENGTH /* @min:%2elength */] === 2 ? \"0\" + ms : ms;\r\n sec = sec[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + sec : sec;\r\n min = min[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + min : min;\r\n hour = hour[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + hour : hour;\r\n return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n var extension = null;\r\n arrForEach(extensions, function (value) {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n//# sourceMappingURL=RequestResponseHeaders.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n AI: 0 /* eDistributedTracingModes.AI */,\r\n AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n//# sourceMappingURL=Enums.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _throwInternal, dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nimport { _DYN_REMOVE_ITEM, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\nvar _storagePrefix = \"\";\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n var uid = (new Date)[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n var name_1 = _storagePrefix + uid;\r\n storage.setItem(name_1, uid);\r\n var fail = storage.getItem(name_1) !== uid;\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name_1);\r\n if (!fail) {\r\n return storage;\r\n }\r\n }\r\n catch (exception) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\nexport function utlSetStoragePrefix(storagePrefix) {\r\n _storagePrefix = storagePrefix || \"\";\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n if (reset || _canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n if (reset || _canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n var keys = [];\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n keys.push(key);\r\n });\r\n }\r\n return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=StorageHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar _a;\r\nimport { _throwInternal, getJSON, hasJSON, isObject, objForEachKey, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_SANITIZE_EXCEPTION, _DYN_SANITIZE_KEY_AND_ADD2, _DYN_SANITIZE_MEASUREMENT3, _DYN_SANITIZE_PROPERTIES, _DYN_STRINGIFY, _DYN_SUBSTRING, _DYN_TO_STRING } from \"../../__DynamicConstants\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n var origLength = key[_DYN_LENGTH /* @min:%2elength */];\r\n var field = dataSanitizeKey(logger, key);\r\n // validation truncated the length. We need to add uniqueness\r\n if (field[_DYN_LENGTH /* @min:%2elength */] !== origLength) {\r\n var i = 0;\r\n var uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n var nameTrunc;\r\n if (name) {\r\n // Remove any leading or trailing whitespace\r\n name = strTrim(name[_DYN_TO_STRING /* @min:%2etoString */]());\r\n // truncate the string to 150 chars\r\n if (name[_DYN_LENGTH /* @min:%2elength */] > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n nameTrunc = name[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long. It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n }\r\n }\r\n return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n var valueTrunc;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n value = strTrim(value);\r\n if (value.toString()[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n valueTrunc = value[_DYN_TO_STRING /* @min:%2etoString */]()[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n }\r\n }\r\n return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n var messageTrunc;\r\n if (message) {\r\n if (message[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n messageTrunc = message[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n }\r\n }\r\n return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n var exceptionTrunc;\r\n if (exception) {\r\n // Make surte its a string\r\n var value = \"\" + exception;\r\n if (value[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n exceptionTrunc = value[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n }\r\n }\r\n return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n if (properties) {\r\n var tempProps_1 = {};\r\n objForEachKey(properties, function (prop, value) {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n }\r\n }\r\n value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n tempProps_1[prop] = value;\r\n });\r\n properties = tempProps_1;\r\n }\r\n return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n if (measurements) {\r\n var tempMeasurements_1 = {};\r\n objForEachKey(measurements, function (measure, value) {\r\n measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n tempMeasurements_1[measure] = value;\r\n });\r\n measurements = tempMeasurements_1;\r\n }\r\n return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */)[_DYN_TO_STRING /* @min:%2etoString */]() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n var inputTrunc;\r\n if (input) {\r\n input = strTrim(input);\r\n if (input[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n inputTrunc = input[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n }\r\n }\r\n return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n var s = \"00\" + num;\r\n return s.substr(s[_DYN_LENGTH /* @min:%2elength */] - 3);\r\n}\r\n/**\r\n * Provides the DataSanitizer functions within the previous namespace.\r\n */\r\nexport var DataSanitizer = (_a = {\r\n MAX_NAME_LENGTH: 150 /* DataSanitizerValues.MAX_NAME_LENGTH */,\r\n MAX_ID_LENGTH: 128 /* DataSanitizerValues.MAX_ID_LENGTH */,\r\n MAX_PROPERTY_LENGTH: 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */,\r\n MAX_STRING_LENGTH: 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */,\r\n MAX_URL_LENGTH: 2048 /* DataSanitizerValues.MAX_URL_LENGTH */,\r\n MAX_MESSAGE_LENGTH: 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */,\r\n MAX_EXCEPTION_LENGTH: 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */\r\n },\r\n _a[_DYN_SANITIZE_KEY_AND_ADD2 /* @min:sanitizeKeyAndAddUniqueness */] = dataSanitizeKeyAndAddUniqueness,\r\n _a.sanitizeKey = dataSanitizeKey,\r\n _a.sanitizeString = dataSanitizeString,\r\n _a.sanitizeUrl = dataSanitizeUrl,\r\n _a.sanitizeMessage = dataSanitizeMessage,\r\n _a[_DYN_SANITIZE_EXCEPTION /* @min:sanitizeException */] = dataSanitizeException,\r\n _a[_DYN_SANITIZE_PROPERTIES /* @min:sanitizeProperties */] = dataSanitizeProperties,\r\n _a[_DYN_SANITIZE_MEASUREMENT3 /* @min:sanitizeMeasurements */] = dataSanitizeMeasurements,\r\n _a.sanitizeId = dataSanitizeId,\r\n _a.sanitizeInput = dataSanitizeInput,\r\n _a.padNumber = dsPadNumber,\r\n _a.trim = strTrim,\r\n _a);\r\n//# sourceMappingURL=DataSanitizer.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PATHNAME, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n var anchorIdx = _htmlAnchorIdx;\r\n var anchorCache = _htmlAnchorElement;\r\n var tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) };\r\n }\r\n else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance\r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n }\r\n tempAnchor.href = url;\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache[_DYN_LENGTH /* @min:%2elength */]) {\r\n anchorIdx = 0;\r\n }\r\n _htmlAnchorIdx = anchorIdx;\r\n return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a[_DYN_PATHNAME /* @min:%2epathname */];\r\n }\r\n return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n }\r\n return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n if (fullHost) {\r\n var match = fullHost.match(/(www\\d{0,5}\\.)?([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 3 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n var result = null;\r\n if (url) {\r\n var match = url.match(/(\\w{1,150}):\\/\\/([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 2 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match[_DYN_LENGTH /* @min:%2elength */] > 2) {\r\n var protocol = (match[1] || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n }\r\n else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n result += port;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=UrlHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, attachEvent, canUseCookies as coreCanUseCookies, dateNow, deleteCookie as coreDeleteCookie, disableCookies as coreDisableCookies, dumpObj, generateW3CId, getCookie as coreGetCookie, getExceptionName as coreGetExceptionName, getIEVersion, getPerformance, isArray, isBeaconsSupported, isDate, isError, isNullOrUndefined, isValidSpanId, isValidTraceId, newId, random32, setCookie as coreSetCookie, strTrim, toISOString, uaDisallowsSameSiteNone } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nimport { createDomEvent } from \"./DomHelperFuncs\";\r\nimport { getExtensionByName, isCrossOriginError, msToTimeSpan, stringToBoolOrDefault } from \"./HelperFuncs\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetLocalStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlRemoveSessionStorage, utlRemoveStorage, utlSetLocalStorage, utlSetSessionStorage } from \"./StorageHelperFuncs\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\nimport { _DYN_CORRELATION_HEADER_E0, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PATHNAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH,\r\n \"https://breeze.aimon.applicationinsights.io\" + DEFAULT_BREEZE_PATH,\r\n \"https://dc-int.services.visualstudio.com\" + DEFAULT_BREEZE_PATH\r\n];\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n return arrIndexOf(_internalEndpoints, endpointUrl[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) !== -1;\r\n}\r\nexport var Util = {\r\n NotSpecified: strNotSpecified,\r\n createDomEvent: createDomEvent,\r\n disableStorage: utlDisableStorage,\r\n isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n canUseLocalStorage: utlCanUseLocalStorage,\r\n getStorage: utlGetLocalStorage,\r\n setStorage: utlSetLocalStorage,\r\n removeStorage: utlRemoveStorage,\r\n canUseSessionStorage: utlCanUseSessionStorage,\r\n getSessionStorageKeys: utlGetSessionStorageKeys,\r\n getSessionStorage: utlGetSessionStorage,\r\n setSessionStorage: utlSetSessionStorage,\r\n removeSessionStorage: utlRemoveSessionStorage,\r\n disableCookies: coreDisableCookies,\r\n canUseCookies: coreCanUseCookies,\r\n disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n setCookie: coreSetCookie,\r\n stringToBoolOrDefault: stringToBoolOrDefault,\r\n getCookie: coreGetCookie,\r\n deleteCookie: coreDeleteCookie,\r\n trim: strTrim,\r\n newId: newId,\r\n random32: function () {\r\n return random32(true);\r\n },\r\n generateW3CId: generateW3CId,\r\n isArray: isArray,\r\n isError: isError,\r\n isDate: isDate,\r\n toISOStringForIE8: toISOString,\r\n getIEVersion: getIEVersion,\r\n msToTimeSpan: msToTimeSpan,\r\n isCrossOriginError: isCrossOriginError,\r\n dump: dumpObj,\r\n getExceptionName: coreGetExceptionName,\r\n addEventHandler: attachEvent,\r\n IsBeaconApiSupported: isBeaconsSupported,\r\n getExtension: getExtensionByName\r\n};\r\nexport var UrlHelper = {\r\n parseUrl: urlParseUrl,\r\n getAbsoluteUrl: urlGetAbsoluteUrl,\r\n getPathName: urlGetPathName,\r\n getCompleteUrl: urlGetCompleteUrl,\r\n parseHost: urlParseHost,\r\n parseFullHost: urlParseFullHost\r\n};\r\nexport var CorrelationIdHelper = {\r\n correlationIdPrefix: \"cid-v1:\",\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader: function (config, requestUrl, currentHost) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n if (config && config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */]) {\r\n for (var i = 0; i < config.correlationHeaderExcludePatterns[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */][i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n var requestHost = urlParseUrl(requestUrl).host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n if (requestHost && (requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":443\") !== -1 || requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n }\r\n if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n return false;\r\n }\r\n var includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n var matchExists_1;\r\n arrForEach(includedDomains, function (domain) {\r\n var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n });\r\n if (!matchExists_1) {\r\n return false;\r\n }\r\n }\r\n var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return true;\r\n }\r\n for (var i = 0; i < excludedDomains[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n },\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext: function (responseHeader) {\r\n if (responseHeader) {\r\n var correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n },\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue: function (responseHeader, key) {\r\n if (responseHeader) {\r\n var keyValues = responseHeader[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n for (var i = 0; i < keyValues[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n var keyValue = keyValues[i][_DYN_SPLIT /* @min:%2esplit */](\"=\");\r\n if (keyValue[_DYN_LENGTH /* @min:%2elength */] === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n var target, name = commandName, data = commandName;\r\n if (absoluteUrl && absoluteUrl[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var parsedUrl = urlParseUrl(absoluteUrl);\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl[_DYN_PATHNAME /* @min:%2epathname */] != null) {\r\n var pathName = (parsedUrl.pathname[_DYN_LENGTH /* @min:%2elength */] === 0) ? \"/\" : parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n if (pathName.charAt(0) !== \"/\") {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n }\r\n else {\r\n name = dataSanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n }\r\n else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n return {\r\n target: target,\r\n name: name,\r\n data: data\r\n };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n var perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n var now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n var result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport var DateTimeUtils = {\r\n Now: dateTimeUtilsNow,\r\n GetDuration: dateTimeUtilsDuration\r\n};\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n var trace = telemetryTrace || {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace.traceID;\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace.traceID = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace.parentID;\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace.parentID = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace.traceFlags;\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace.traceFlags = newTraceFlags;\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=Util.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrReduce, objKeys, strEndsWith } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { _DYN_INGESTIONENDPOINT, _DYN_LENGTH, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n var kvPairs = connectionString[_DYN_SPLIT /* @min:%2esplit */](_FIELDS_SEPARATOR);\r\n var result = arrReduce(kvPairs, function (fields, kv) {\r\n var kvParts = kv[_DYN_SPLIT /* @min:%2esplit */](_FIELD_KEY_VALUE_SEPARATOR);\r\n if (kvParts[_DYN_LENGTH /* @min:%2elength */] === 2) { // only save fields with valid formats\r\n var key = kvParts[0][_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var value = kvParts[1];\r\n fields[key] = value;\r\n }\r\n return fields;\r\n }, {});\r\n if (objKeys(result)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // this is a valid connection string, so parse the results\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n if (strEndsWith(result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */], \"/\")) {\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */].slice(0, -1);\r\n }\r\n }\r\n // apply the default endpoints\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n//# sourceMappingURL=ConnectionStringParser.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nimport { _DYN_NAME } from \"../../__DynamicConstants\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nvar Envelope = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Envelope(logger, data, name) {\r\n var _this = this;\r\n var _self = this;\r\n _self.ver = 1;\r\n _self.sampleRate = 100.0;\r\n _self.tags = {};\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.data = data;\r\n _self.time = toISOString(new Date());\r\n _self.aiDataContract = {\r\n time: 1 /* FieldType.Required */,\r\n iKey: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n sampleRate: function () {\r\n return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n },\r\n tags: 1 /* FieldType.Required */,\r\n data: 1 /* FieldType.Required */\r\n };\r\n }\r\n return Envelope;\r\n}());\r\nexport { Envelope };\r\n//# sourceMappingURL=Envelope.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Event = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n function Event(logger, name, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n Event.dataType = \"EventData\";\r\n return Event;\r\n}());\r\nexport { Event };\r\n//# sourceMappingURL=Event.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { arrForEach, arrMap, isArray, isError, isFunction, isNullOrUndefined, isObject, isString, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_ASSEMBLY, _DYN_EXCEPTIONS, _DYN_FILE_NAME, _DYN_HAS_FULL_STACK, _DYN_INDEX_OF, _DYN_IS_MANUAL, _DYN_LENGTH, _DYN_LEVEL, _DYN_LINE, _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_METHOD, _DYN_NAME, _DYN_PARSED_STACK, _DYN_PROBLEM_GROUP, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL, _DYN_SIZE_IN_BYTES, _DYN_SPLIT, _DYN_STRINGIFY, _DYN_TO_STRING, _DYN_TYPE_NAME, _DYN__CREATE_FROM_INTERFA1 } from \"../__DynamicConstants\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar NoMethod = \"\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n var result = value;\r\n if (result && !isString(result)) {\r\n if (JSON && JSON[_DYN_STRINGIFY /* @min:%2estringify */]) {\r\n result = JSON[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n if (convertToString && (!result || result === \"{}\")) {\r\n if (isFunction(value[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n result = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n else {\r\n result = \"\" + value;\r\n }\r\n }\r\n }\r\n else {\r\n result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n }\r\n }\r\n return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n var evtMessage = theEvent;\r\n if (theEvent) {\r\n if (evtMessage && !isString(evtMessage)) {\r\n evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n }\r\n // Make sure the message is a string\r\n if (evtMessage && !isString(evtMessage)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n evtMessage = _stringify(evtMessage, true);\r\n }\r\n if (theEvent[\"filename\"]) {\r\n // Looks like an event object with filename\r\n evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n }\r\n }\r\n // Automatically add the error type to the message if it does already appear to be present\r\n if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && (evtMessage || \"\")[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) === -1) {\r\n evtMessage = errorType + \": \" + evtMessage;\r\n }\r\n return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n var src = errorStack || \"\";\r\n if (!isString(src)) {\r\n if (isString(src[strStack])) {\r\n src = src[strStack];\r\n }\r\n else {\r\n src = \"\" + src;\r\n }\r\n }\r\n var items = src[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n return {\r\n src: src,\r\n obj: items\r\n };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n var stack = [];\r\n var lines = errorMessage[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n for (var lp = 0; lp < lines[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var entry = lines[lp];\r\n if (lines[lp + 1]) {\r\n entry += \"@\" + lines[lp + 1];\r\n lp++;\r\n }\r\n stack.push(entry);\r\n }\r\n return {\r\n src: errorMessage,\r\n obj: stack\r\n };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n var details = null;\r\n if (errorObj) {\r\n try {\r\n /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n notation for undefined objects and we don't want to loose the error from being reported */\r\n if (errorObj[strStack]) {\r\n // Chrome/Firefox\r\n details = _convertStackObj(errorObj[strStack]);\r\n }\r\n else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n // Edge error event provides the stack and error object\r\n details = _convertStackObj(errorObj[strError][strStack]);\r\n }\r\n else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n details = _convertStackObj(errorObj.exception[strStack]);\r\n }\r\n else if (_isStackDetails(errorObj)) {\r\n details = errorObj;\r\n }\r\n else if (_isStackDetails(errorObj[strStackDetails])) {\r\n details = errorObj[strStackDetails];\r\n }\r\n else if (window && window[\"opera\"] && errorObj[strMessage]) {\r\n // Opera\r\n details = _getOperaStack(errorObj[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n else if (errorObj[\"reason\"] && errorObj.reason[strStack]) {\r\n // UnhandledPromiseRejection\r\n details = _convertStackObj(errorObj.reason[strStack]);\r\n }\r\n else if (isString(errorObj)) {\r\n details = _convertStackObj(errorObj);\r\n }\r\n else {\r\n var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n if (isString(errorObj[strErrorSrc])) {\r\n if (evtMessage) {\r\n evtMessage += \"\\n\";\r\n }\r\n evtMessage += \" from \" + errorObj[strErrorSrc];\r\n }\r\n if (evtMessage) {\r\n details = _convertStackObj(evtMessage);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n // and fallback to the callee/caller method\r\n details = _convertStackObj(e);\r\n }\r\n }\r\n return details || {\r\n src: \"\",\r\n obj: null\r\n };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n var stack = \"\";\r\n if (stackDetails) {\r\n if (stackDetails.obj) {\r\n arrForEach(stackDetails.obj, function (entry) {\r\n stack += entry + \"\\n\";\r\n });\r\n }\r\n else {\r\n stack = stackDetails.src || \"\";\r\n }\r\n }\r\n return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n var parsedStack;\r\n var frames = stack.obj;\r\n if (frames && frames[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n parsedStack = [];\r\n var level_1 = 0;\r\n var totalSizeInBytes_1 = 0;\r\n arrForEach(frames, function (frame) {\r\n var theFrame = frame[_DYN_TO_STRING /* @min:%2etoString */]();\r\n if (_StackFrame.regex.test(theFrame)) {\r\n var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n totalSizeInBytes_1 += parsedFrame[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n parsedStack.push(parsedFrame);\r\n }\r\n });\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n var exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n var left = 0;\r\n var right = parsedStack[_DYN_LENGTH /* @min:%2elength */] - 1;\r\n var size = 0;\r\n var acceptedLeft = left;\r\n var acceptedRight = right;\r\n while (left < right) {\r\n // check size\r\n var lSize = parsedStack[left][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n var rSize = parsedStack[right][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n size += lSize + rSize;\r\n if (size > exceptionParsedStackThreshold) {\r\n // remove extra frames from the middle\r\n var howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n var typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType[_DYN_NAME /* @min:%2ename */] || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,200})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor[_DYN_TO_STRING /* @min:%2etoString */]());\r\n typeName = (results && results[_DYN_LENGTH /* @min:%2elength */] > 1) ? results[1] : \"\";\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n }\r\n return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n if (errorObj) {\r\n try {\r\n if (!isString(errorObj)) {\r\n var errorType = _getErrorType(errorObj);\r\n var result = _stringify(errorObj, false);\r\n if (!result || result === \"{}\") {\r\n if (errorObj[strError]) {\r\n // Looks like an MS Error Event\r\n errorObj = errorObj[strError];\r\n errorType = _getErrorType(errorObj);\r\n }\r\n result = _stringify(errorObj, true);\r\n }\r\n if (result[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) !== 0 && errorType !== \"String\") {\r\n return errorType + \":\" + result;\r\n }\r\n return result;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n // Fallback to just letting the object format itself into a string\r\n return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n exceptions: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!_isExceptionInternal(exception)) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = [new _ExceptionDetails(logger, exception, properties)];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n if (id) {\r\n _self.id = id;\r\n }\r\n }\r\n else {\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */] || [];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = exception[_DYN_PROPERTIES /* @min:%2eproperties */];\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = exception[_DYN_MEASUREMENTS /* @min:%2emeasurements */];\r\n if (exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */]) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */];\r\n }\r\n if (exception.id) {\r\n _self.id = exception.id;\r\n }\r\n if (exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */]) {\r\n _self[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */] = exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */];\r\n }\r\n // bool/int types, use isNullOrUndefined\r\n if (!isNullOrUndefined(exception[_DYN_IS_MANUAL /* @min:%2eisManual */])) {\r\n _self[_DYN_IS_MANUAL /* @min:%2eisManual */] = exception[_DYN_IS_MANUAL /* @min:%2eisManual */];\r\n }\r\n }\r\n }\r\n Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n var _a;\r\n var errorType = _getErrorType(error || evt || message);\r\n return _a = {},\r\n _a[_DYN_MESSAGE /* @min:message */] = _formatMessage(message, errorType),\r\n _a.url = url,\r\n _a.lineNumber = lineNumber,\r\n _a.columnNumber = columnNumber,\r\n _a.error = _formatErrorCode(error || evt || message),\r\n _a.evt = _formatErrorCode(evt || message),\r\n _a[_DYN_TYPE_NAME /* @min:typeName */] = errorType,\r\n _a.stackDetails = _getStackFromErrorObj(stack || error || evt),\r\n _a.errorSrc = errorSrc,\r\n _a;\r\n };\r\n Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n var exceptions = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */]\r\n && arrMap(exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */], function (ex) { return _ExceptionDetails[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](logger, ex); });\r\n var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n return exceptionData;\r\n };\r\n Exception.prototype.toInterface = function () {\r\n var _a;\r\n var _b = this, exceptions = _b.exceptions, properties = _b.properties, measurements = _b.measurements, severityLevel = _b.severityLevel, problemGroup = _b.problemGroup, id = _b.id, isManual = _b.isManual;\r\n var exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n || undefined;\r\n return _a = {\r\n ver: \"4.0\"\r\n },\r\n _a[_DYN_EXCEPTIONS /* @min:exceptions */] = exceptionDetailsInterface,\r\n _a.severityLevel = severityLevel,\r\n _a.properties = properties,\r\n _a.measurements = measurements,\r\n _a.problemGroup = problemGroup,\r\n _a.id = id,\r\n _a.isManual = isManual,\r\n _a;\r\n };\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n var _a;\r\n return {\r\n exceptions: [\r\n (_a = {},\r\n _a[_DYN_HAS_FULL_STACK /* @min:hasFullStack */] = true,\r\n _a.message = message,\r\n _a.stack = details,\r\n _a.typeName = typeName,\r\n _a)\r\n ]\r\n };\r\n };\r\n Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n Exception.dataType = \"ExceptionData\";\r\n Exception.formatError = _formatErrorCode;\r\n return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n function _ExceptionDetails(logger, exception, properties) {\r\n this.aiDataContract = {\r\n id: 0 /* FieldType.Default */,\r\n outerId: 0 /* FieldType.Default */,\r\n typeName: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n hasFullStack: 0 /* FieldType.Default */,\r\n stack: 0 /* FieldType.Default */,\r\n parsedStack: 2 /* FieldType.Array */\r\n };\r\n var _self = this;\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n var error = exception;\r\n var evt = error && error.evt;\r\n if (!isError(error)) {\r\n error = error[strError] || evt || error;\r\n }\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, _formatMessage(exception || error, _self[_DYN_TYPE_NAME /* @min:%2etypeName */])) || strNotSpecified;\r\n var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = _parseStack(stack);\r\n // after parsedStack is inited, iterate over each frame object, sanitize its assembly field\r\n if (isArray(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */])) {\r\n arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) {\r\n frame[_DYN_ASSEMBLY /* @min:%2eassembly */] = dataSanitizeString(logger, frame[_DYN_ASSEMBLY /* @min:%2eassembly */]);\r\n frame[_DYN_FILE_NAME /* @min:%2efileName */] = dataSanitizeString(logger, frame[_DYN_FILE_NAME /* @min:%2efileName */]);\r\n });\r\n }\r\n _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n if (properties) {\r\n properties[_DYN_TYPE_NAME /* @min:%2etypeName */] = properties[_DYN_TYPE_NAME /* @min:%2etypeName */] || _self[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n }\r\n }\r\n else {\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = exception[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = exception[_DYN_MESSAGE /* @min:%2emessage */];\r\n _self[strStack] = exception[strStack];\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] || [];\r\n _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */] = exception[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */];\r\n }\r\n }\r\n _ExceptionDetails.prototype.toInterface = function () {\r\n var _a;\r\n var _self = this;\r\n var parsedStack = _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return frame.toInterface(); });\r\n var exceptionDetailsInterface = (_a = {\r\n id: _self.id,\r\n outerId: _self.outerId,\r\n typeName: _self[_DYN_TYPE_NAME /* @min:%2etypeName */],\r\n message: _self[_DYN_MESSAGE /* @min:%2emessage */],\r\n hasFullStack: _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */],\r\n stack: _self[strStack]\r\n },\r\n _a[_DYN_PARSED_STACK /* @min:parsedStack */] = parsedStack || undefined,\r\n _a);\r\n return exceptionDetailsInterface;\r\n };\r\n _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n var parsedStack = (exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return _StackFrame[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](frame); }))\r\n || exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */];\r\n var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n return exceptionDetails;\r\n };\r\n return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n function _StackFrame(sourceFrame, level) {\r\n this.aiDataContract = {\r\n level: 1 /* FieldType.Required */,\r\n method: 1 /* FieldType.Required */,\r\n assembly: 0 /* FieldType.Default */,\r\n fileName: 0 /* FieldType.Default */,\r\n line: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n var frame = sourceFrame;\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = level;\r\n _self[_DYN_METHOD /* @min:%2emethod */] = NoMethod;\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = strTrim(frame);\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = \"\";\r\n _self[_DYN_LINE /* @min:%2eline */] = 0;\r\n var matches = frame.match(_StackFrame.regex);\r\n if (matches && matches[_DYN_LENGTH /* @min:%2elength */] >= 5) {\r\n _self[_DYN_METHOD /* @min:%2emethod */] = strTrim(matches[2]) || _self[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = strTrim(matches[4]);\r\n _self[_DYN_LINE /* @min:%2eline */] = parseInt(matches[5]) || 0;\r\n }\r\n }\r\n else {\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = sourceFrame[_DYN_LEVEL /* @min:%2elevel */];\r\n _self[_DYN_METHOD /* @min:%2emethod */] = sourceFrame[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = sourceFrame[_DYN_ASSEMBLY /* @min:%2eassembly */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = sourceFrame[_DYN_FILE_NAME /* @min:%2efileName */];\r\n _self[_DYN_LINE /* @min:%2eline */] = sourceFrame[_DYN_LINE /* @min:%2eline */];\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n }\r\n _self.sizeInBytes += _self.method[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.fileName[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.assembly[_DYN_LENGTH /* @min:%2elength */];\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] += _StackFrame.baseSize;\r\n _self.sizeInBytes += _self.level.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.line.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n _StackFrame.CreateFromInterface = function (frame) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n };\r\n _StackFrame.prototype.toInterface = function () {\r\n var _self = this;\r\n return {\r\n level: _self[_DYN_LEVEL /* @min:%2elevel */],\r\n method: _self[_DYN_METHOD /* @min:%2emethod */],\r\n assembly: _self[_DYN_ASSEMBLY /* @min:%2eassembly */],\r\n fileName: _self[_DYN_FILE_NAME /* @min:%2efileName */],\r\n line: _self[_DYN_LINE /* @min:%2eline */]\r\n };\r\n };\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n//# sourceMappingURL=Exception.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar DataPoint = /** @class */ (function () {\r\n function DataPoint() {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n name: 1 /* FieldType.Required */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 1 /* FieldType.Required */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */\r\n };\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n this.kind = 0 /* DataPointType.Measurement */;\r\n }\r\n return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n//# sourceMappingURL=DataPoint.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_COUNT, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Metric = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n metrics: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n var dataPoint = new DataPoint();\r\n dataPoint[_DYN_COUNT /* @min:%2ecount */] = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n _self.metrics = [dataPoint];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n Metric.dataType = \"MetricData\";\r\n return Metric;\r\n}());\r\nexport { Metric };\r\n//# sourceMappingURL=Metric.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageView = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n id: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = dataSanitizeId(logger, id);\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(durationMs);\r\n }\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n PageView.dataType = \"PageviewData\";\r\n return PageView;\r\n}());\r\nexport { PageView };\r\n//# sourceMappingURL=PageView.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n this.aiDataContract = {\r\n id: 1 /* FieldType.Required */,\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n resultCode: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n success: 0 /* FieldType.Default */,\r\n data: 0 /* FieldType.Default */,\r\n target: 0 /* FieldType.Default */,\r\n type: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 0 /* FieldType.Default */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */,\r\n dependencyKind: 0 /* FieldType.Default */,\r\n dependencySource: 0 /* FieldType.Default */,\r\n commandName: 0 /* FieldType.Default */,\r\n dependencyTypeName: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = id;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(value);\r\n _self.success = success;\r\n _self.resultCode = resultCode + \"\";\r\n _self.type = dataSanitizeString(logger, requestAPI);\r\n var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n }\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, dependencyFields[_DYN_NAME /* @min:%2ename */]);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n//# sourceMappingURL=RemoteDependencyData.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties } from \"./Common/DataSanitizer\";\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n function Trace(logger, message, severityLevel, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n message = message || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, message);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n }\r\n Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n Trace.dataType = \"MessageData\";\r\n return Trace;\r\n}());\r\nexport { Trace };\r\n//# sourceMappingURL=Trace.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES, _DYN_RECEIVED_RESPONSE } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n perfTotal: 0 /* FieldType.Default */,\r\n networkConnect: 0 /* FieldType.Default */,\r\n sentRequest: 0 /* FieldType.Default */,\r\n receivedResponse: 0 /* FieldType.Default */,\r\n domProcessing: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (cs4BaseData) {\r\n _self.domProcessing = cs4BaseData.domProcessing;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = cs4BaseData[_DYN_DURATION /* @min:%2eduration */];\r\n _self.networkConnect = cs4BaseData.networkConnect;\r\n _self.perfTotal = cs4BaseData.perfTotal;\r\n _self[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */] = cs4BaseData[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */];\r\n _self.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n//# sourceMappingURL=PageViewPerformance.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Data = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Data(baseType, data) {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n baseType: 1 /* FieldType.Required */,\r\n baseData: 1 /* FieldType.Required */\r\n };\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n return Data;\r\n}());\r\nexport { Data };\r\n//# sourceMappingURL=Data.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n var aiName = \"ai.\" + baseName + \".\";\r\n return function (name) {\r\n return aiName + name;\r\n };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n __extends(ContextTagKeys, _super);\r\n function ContextTagKeys() {\r\n return _super.call(this) || this;\r\n }\r\n return ContextTagKeys;\r\n}(createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n//# sourceMappingURL=ContextTagKeys.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isNullOrUndefined, objForEachKey, throwError, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIkey, strNotSpecified } from \"./Constants\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { _DYN_NAME } from \"./__DynamicConstants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n var _a;\r\n envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throwError(\"Input doesn't contain all required fields\");\r\n }\r\n var iKey = \"\";\r\n if (item[strIkey]) {\r\n iKey = item[strIkey];\r\n delete item[strIkey];\r\n }\r\n var telemetryItem = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = envelopeName,\r\n _a.time = toISOString(new Date()),\r\n _a.iKey = iKey,\r\n _a.ext = systemProperties ? systemProperties : {},\r\n _a.tags = [],\r\n _a.data = {},\r\n _a.baseType = baseType,\r\n _a.baseData = item // Part B\r\n ,\r\n _a);\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, function (prop, value) {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n function TelemetryItemCreator() {\r\n }\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights..PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n TelemetryItemCreator.create = createTelemetryItem;\r\n return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n//# sourceMappingURL=TelemetryItemCreator.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n//# sourceMappingURL=PartAExtensions.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// Licensed under the\r\nexport { Util, CorrelationIdHelper, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration, UrlHelper, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { ThrottleMgr } from \"./ThrottleMgr\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { DataSanitizer, dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage, utlSetStoragePrefix } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n//# sourceMappingURL=applicationinsights-common.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 4\r\nexport var _DYN_DISABLE_EXCEPTION_TR0 = \"disableExceptionTracking\"; // Count: 3\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI1 = \"autoTrackPageVisitTime\"; // Count: 4\r\nexport var _DYN_OVERRIDE_PAGE_VIEW_D2 = \"overridePageViewDuration\"; // Count: 3\r\nexport var _DYN_ENABLE_UNHANDLED_PRO3 = \"enableUnhandledPromiseRejectionTracking\"; // Count: 3\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_IS_STORAGE_USE_DISAB4 = \"isStorageUseDisabled\"; // Count: 4\r\nexport var _DYN_IS_BROWSER_LINK_TRAC5 = \"isBrowserLinkTrackingEnabled\"; // Count: 4\r\nexport var _DYN_ENABLE_AUTO_ROUTE_TR6 = \"enableAutoRouteTracking\"; // Count: 3\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 3\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF7 = \"disableFlushOnBeforeUnload\"; // Count: 3\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL8 = \"disableFlushOnUnload\"; // Count: 2\r\nexport var _DYN_CORE = \"core\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 8\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 13\r\nexport var _DYN_TRACK = \"track\"; // Count: 7\r\nexport var _DYN_TRACK_PAGE_VIEW = \"trackPageView\"; // Count: 4\r\nexport var _DYN_TRACK_PREVIOUS_PAGE_9 = \"trackPreviousPageVisit\"; // Count: 3\r\nexport var _DYN_SEND_PAGE_VIEW_INTER10 = \"sendPageViewInternal\"; // Count: 7\r\nexport var _DYN_SEND_PAGE_VIEW_PERFO11 = \"sendPageViewPerformanceInternal\"; // Count: 3\r\nexport var _DYN_POPULATE_PAGE_VIEW_P12 = \"populatePageViewPerformanceEvent\"; // Count: 3\r\nexport var _DYN_HREF = \"href\"; // Count: 6\r\nexport var _DYN_SEND_EXCEPTION_INTER13 = \"sendExceptionInternal\"; // Count: 2\r\nexport var _DYN_EXCEPTION = \"exception\"; // Count: 3\r\nexport var _DYN_ERROR = \"error\"; // Count: 5\r\nexport var _DYN__ONERROR = \"_onerror\"; // Count: 3\r\nexport var _DYN_ERROR_SRC = \"errorSrc\"; // Count: 3\r\nexport var _DYN_LINE_NUMBER = \"lineNumber\"; // Count: 5\r\nexport var _DYN_COLUMN_NUMBER = \"columnNumber\"; // Count: 5\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 4\r\nexport var _DYN__CREATE_AUTO_EXCEPTI14 = \"CreateAutoException\"; // Count: 3\r\nexport var _DYN_ADD_TELEMETRY_INITIA15 = \"addTelemetryInitializer\"; // Count: 4\r\nexport var _DYN_DURATION = \"duration\"; // Count: 10\r\nexport var _DYN_LENGTH = \"length\"; // Count: 5\r\nexport var _DYN_IS_PERFORMANCE_TIMIN16 = \"isPerformanceTimingSupported\"; // Count: 2\r\nexport var _DYN_GET_PERFORMANCE_TIMI17 = \"getPerformanceTiming\"; // Count: 2\r\nexport var _DYN_NAVIGATION_START = \"navigationStart\"; // Count: 4\r\nexport var _DYN_SHOULD_COLLECT_DURAT18 = \"shouldCollectDuration\"; // Count: 3\r\nexport var _DYN_IS_PERFORMANCE_TIMIN19 = \"isPerformanceTimingDataReady\"; // Count: 2\r\nexport var _DYN_GET_ENTRIES_BY_TYPE = \"getEntriesByType\"; // Count: 3\r\nexport var _DYN_RESPONSE_START = \"responseStart\"; // Count: 5\r\nexport var _DYN_REQUEST_START = \"requestStart\"; // Count: 3\r\nexport var _DYN_LOAD_EVENT_END = \"loadEventEnd\"; // Count: 4\r\nexport var _DYN_RESPONSE_END = \"responseEnd\"; // Count: 5\r\nexport var _DYN_CONNECT_END = \"connectEnd\"; // Count: 4\r\nexport var _DYN_PAGE_VISIT_START_TIM20 = \"pageVisitStartTime\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, dumpObj, getDocument, getExceptionName, getLocation, isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DURATION, _DYN_GET_PERFORMANCE_TIMI17, _DYN_HREF, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_SHOULD_COLLECT_DURAT18, _DYN_TRACK_PAGE_VIEW } from \"../../__DynamicConstants\";\r\nvar _isWebWorker = null;\r\nfunction isWebWorker() {\r\n if (_isWebWorker == null) {\r\n try {\r\n _isWebWorker = !!(self && self instanceof WorkerGlobalScope);\r\n }\r\n catch (e) {\r\n _isWebWorker = false;\r\n }\r\n }\r\n return _isWebWorker;\r\n}\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var queueTimer = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels(isAsync) {\r\n if (core) {\r\n core.flush(isAsync);\r\n }\r\n }\r\n function _startTimer() {\r\n if (!queueTimer) {\r\n queueTimer = setTimeout((function () {\r\n queueTimer = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _startTimer();\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels(true);\r\n }\r\n }), 100);\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n _startTimer();\r\n }\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */]()) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n if (!isWebWorker()) {\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n }\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */]()[_DYN_NAVIGATION_START /* @min:%2enavigationStart */];\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties[_DYN_DURATION /* @min:%2eduration */])) {\r\n duration = customProperties[_DYN_DURATION /* @min:%2eduration */];\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n }\r\n // case 2\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */]()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = pageViewPerformance.durationMs;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = maxDurationLimit;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n _self.teardown = function (unloadCtx, unloadState) {\r\n if (queueTimer) {\r\n clearTimeout(queueTimer);\r\n queueTimer = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush_1 = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (item()) {\r\n doFlush_1 = true;\r\n }\r\n });\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for PageViewManager.prototype.trackPageView.\r\n// Removed Stub for PageViewManager.prototype.teardown.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageViewManager.__ieDyn=1;\n\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, getNavigator, getPerformance, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_CONNECT_END, _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI17, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_LOAD_EVENT_END, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_REQUEST_START, _DYN_RESPONSE_END, _DYN_RESPONSE_START, _DYN_SHOULD_COLLECT_DURAT18 } from \"../../__DynamicConstants\";\r\nvar MAX_DURATION_ALLOWED = 3600000; // 1h\r\nvar botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\nfunction _isPerformanceTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && !!perf.timing;\r\n}\r\nfunction _isPerformanceNavigationTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\")[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\nfunction _isPerformanceTimingDataReady() {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */] > 0\r\n && timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */] > 0\r\n && timing[_DYN_REQUEST_START /* @min:%2erequestStart */] > 0\r\n && timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */] > 0\r\n && timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */] > 0\r\n && timing[_DYN_CONNECT_END /* @min:%2econnectEnd */] > 0\r\n && timing.domLoading > 0;\r\n}\r\nfunction _getPerformanceTiming() {\r\n if (_isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n}\r\nfunction _getPerformanceNavigationTiming() {\r\n if (_isPerformanceNavigationTimingSupported()) {\r\n return getPerformance()[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\")[0];\r\n }\r\n return null;\r\n}\r\n/**\r\n* This method tells if given durations should be excluded from collection.\r\n*/\r\nfunction _shouldCollectDuration() {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (durations[i] < 0 || durations[i] >= MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n var _logger = safeGetLogger(core);\r\n dynamicProto(PageViewPerformanceManager, this, function (_self) {\r\n _self[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */] = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n *\r\n * total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n * network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n * request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n * response = Response time\r\n * dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n * = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n * + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n */\r\n var navigationTiming = _getPerformanceNavigationTiming();\r\n var timing = _getPerformanceTiming();\r\n var total = 0;\r\n var network = 0;\r\n var request = 0;\r\n var response = 0;\r\n var dom = 0;\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n total = navigationTiming[_DYN_DURATION /* @min:%2eduration */];\r\n /**\r\n * support both cases:\r\n * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n * - for older browsers where the startTime is not zero\r\n */\r\n network = navigationTiming.startTime === 0 ? navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */] : dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */], navigationTiming[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n else {\r\n total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */], timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n if (total === 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!_self[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](total, network, request, response, dom)) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n _self[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */] = _getPerformanceTiming;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */] = _isPerformanceTimingSupported;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */] = _isPerformanceTimingDataReady;\r\n _self[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */] = _shouldCollectDuration;\r\n });\r\n }\r\n// Removed Stub for PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent.\r\n// Removed Stub for PageViewPerformanceManager.prototype.getPerformanceTiming.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingSupported.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingDataReady.\r\n// Removed Stub for PageViewPerformanceManager.prototype.shouldCollectDuration.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageViewPerformanceManager.__ieDyn=1;\n\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _warnToConsole, dateNow, dumpObj, getJSON, hasJSON, objDefineAccessors, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_PAGE_VISIT_START_TIM20, _DYN_TRACK_PREVIOUS_PAGE_9 } from \"../../__DynamicConstants\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n var prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n dynamicProto(PageVisitTimeManager, this, function (_self) {\r\n _self[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */] = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n function restartPageVisitTimer(pageName, pageUrl) {\r\n var prevPageVisitData = null;\r\n try {\r\n prevPageVisitData = stopPageVisitTimer();\r\n startPageVisitTimer(pageName, pageUrl);\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Call to restart failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n function startPageVisitTimer(pageName, pageUrl) {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n _warnToConsole(logger, \"Call to start failed: \" + dumpObj(e));\r\n }\r\n }\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n function stopPageVisitTimer() {\r\n var prevPageVisitData = null;\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */];\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_logger\", function () { return logger; });\r\n objDefineAccessors(_self, \"pageVisitTimeTrackingHandler\", function () { return pageVisitTimeTrackingHandler; });\r\n });\r\n }\r\n// Removed Stub for PageVisitTimeManager.prototype.trackPreviousPageVisit.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageVisitTimeManager.__ieDyn=1;\n\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */] = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\nexport { Timing };\r\n//# sourceMappingURL=Timing.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* ApplicationInsights.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPluginIdentifier, Event as EventTelemetry, Exception, Metric, PageView, PageViewPerformance, PropertiesPluginIdentifier, RemoteDependencyData, Trace, createDistributedTraceContextFromTrace, createDomEvent, createTelemetryItem, dataSanitizeString, isCrossOriginError, strNotSpecified, stringToBoolOrDefault, utlDisableStorage, utlEnableStorage, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentEvent, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOff, eventOn, generateW3CId, getDocument, getExceptionName, getHistory, getLocation, getWindow, hasHistory, hasWindow, isError, isFunction, isNullOrUndefined, isString, isUndefined, mergeEvtNamespace, objDefineAccessors, objForEachKey, safeGetCookieMgr, strUndefined, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ADD_TELEMETRY_INITIA15, _DYN_AUTO_TRACK_PAGE_VISI1, _DYN_COLUMN_NUMBER, _DYN_CORE, _DYN_DATA_TYPE, _DYN_DIAG_LOG, _DYN_DISABLE_EXCEPTION_TR0, _DYN_DISABLE_FLUSH_ON_BEF7, _DYN_ENABLE_AUTO_ROUTE_TR6, _DYN_ENABLE_UNHANDLED_PRO3, _DYN_ENVELOPE_TYPE, _DYN_ERROR, _DYN_ERROR_SRC, _DYN_EXCEPTION, _DYN_HREF, _DYN_IS_BROWSER_LINK_TRAC5, _DYN_IS_STORAGE_USE_DISAB4, _DYN_LENGTH, _DYN_LINE_NUMBER, _DYN_MESSAGE, _DYN_NAME_PREFIX, _DYN_OVERRIDE_PAGE_VIEW_D2, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SAMPLING_PERCENTAGE, _DYN_SEND_EXCEPTION_INTER13, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_TO_STRING, _DYN_TRACK, _DYN_TRACK_PAGE_VIEW, _DYN_TRACK_PREVIOUS_PAGE_9, _DYN__CREATE_AUTO_EXCEPTI14, _DYN__ONERROR } from \"../__DynamicConstants\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { Timing } from \"./Timing\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _getReason(error) {\r\n if (error && error.reason) {\r\n var reason = error.reason;\r\n if (!isString(reason) && isFunction(reason[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n return reason[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n return dumpObj(reason);\r\n }\r\n // Pass the original object down which will eventually get evaluated for any message or description\r\n return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nfunction _configMilliseconds(value, defValue) {\r\n value = value || defValue;\r\n if (value < MinMilliSeconds) {\r\n value = MinMilliSeconds;\r\n }\r\n return value;\r\n}\r\nfunction _getDefaultConfig(config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);\r\n config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);\r\n config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */] = stringToBoolOrDefault(config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */]);\r\n config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */] = stringToBoolOrDefault(config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]);\r\n config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */] = stringToBoolOrDefault(config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */]);\r\n config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */]);\r\n if (isNaN(config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */]) || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] <= 0 || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] >= 100) {\r\n config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] = 100;\r\n }\r\n config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */] = stringToBoolOrDefault(config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]);\r\n config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] = stringToBoolOrDefault(config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */]);\r\n config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */]);\r\n config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n config.enableDebug = stringToBoolOrDefault(config.enableDebug);\r\n config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */] = stringToBoolOrDefault(config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n return config;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n // reset based if the configuration option is provided\r\n if (!isUndefined(extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */])) {\r\n if (extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]) {\r\n utlDisableStorage();\r\n }\r\n else {\r\n utlEnableStorage();\r\n }\r\n }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n __extends(AnalyticsPlugin, _super);\r\n function AnalyticsPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _pageViewManager;\r\n var _pageViewPerformanceManager;\r\n var _pageVisitTimeManager;\r\n var _preInitTelemetryInitializers;\r\n var _isBrowserLinkTrackingEnabled;\r\n var _browserLinkInitializerAdded;\r\n var _enableAutoRouteTracking;\r\n var _historyListenerAdded;\r\n var _disableExceptionTracking;\r\n var _autoExceptionInstrumented;\r\n var _enableUnhandledPromiseRejectionTracking;\r\n var _autoUnhandledPromiseInstrumented;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n var _evtNamespace;\r\n dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self[_DYN_CORE /* @min:%2ecore */]);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n _self.processNext(env, itemCtx);\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(event, EventTelemetry[_DYN_DATA_TYPE /* @min:%2edataType */], EventTelemetry[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties, measurements);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(trace, Trace[_DYN_DATA_TYPE /* @min:%2edataType */], Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(metric, Metric[_DYN_DATA_TYPE /* @min:%2edataType */], Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _pageViewManager[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */](inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */] = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = createTelemetryItem(pageView, PageView[_DYN_DATA_TYPE /* @min:%2edataType */], PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */] = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n var inPvp = pageViewPerformance || {};\r\n try {\r\n _pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](inPvp);\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](inPvp, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](name, url);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */] = function (exception, customProperties, systemProperties) {\r\n // Adding additional edge cases to handle\r\n // - Not passing anything (null / undefined)\r\n var theError = (exception && (exception[_DYN_EXCEPTION /* @min:%2eexception */] || exception[_DYN_ERROR /* @min:%2eerror */])) ||\r\n // - Handle someone calling trackException based of v1 API where the exception was the Error\r\n isError(exception) && exception ||\r\n // - Handles no error being defined and instead of creating a new Error() instance attempt to map so any stacktrace\r\n // is preserved and does not list ApplicationInsights code as the source\r\n { name: (exception && typeof exception), message: exception || strNotSpecified };\r\n // If no exception object was passed assign to an empty object to avoid internal exceptions\r\n exception = exception || {};\r\n var exceptionPartB = new Exception(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), theError, exception.properties || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = createTelemetryItem(exceptionPartB, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n if (exception && !exception[_DYN_EXCEPTION /* @min:%2eexception */] && exception[_DYN_ERROR /* @min:%2eerror */]) {\r\n exception[_DYN_EXCEPTION /* @min:%2eexception */] = exception[_DYN_ERROR /* @min:%2eerror */];\r\n }\r\n try {\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */](exception, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */] = function (exception) {\r\n var error = exception && exception[_DYN_ERROR /* @min:%2eerror */];\r\n var evt = exception && exception.evt;\r\n try {\r\n if (!evt) {\r\n var _window = getWindow();\r\n if (_window) {\r\n evt = _window[strEvent];\r\n }\r\n }\r\n var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n // If no error source is provided assume the default window.onerror handler\r\n var errorSrc = exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] || \"window.onerror@\" + url + \":\" + (exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0) + \":\" + (exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0);\r\n var properties = {\r\n errorSrc: errorSrc,\r\n url: url,\r\n lineNumber: exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0,\r\n columnNumber: exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0,\r\n message: exception[_DYN_MESSAGE /* @min:%2emessage */]\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception[_DYN_ERROR /* @min:%2eerror */])) {\r\n _sendCORSException(Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0, exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0, error, evt, null, errorSrc), properties);\r\n }\r\n else {\r\n if (!exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */]) {\r\n exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] = errorSrc;\r\n }\r\n _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = error ? (error.name + \", \" + error[_DYN_MESSAGE /* @min:%2emessage */]) : \"null\";\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */] = function (telemetryInitializer) {\r\n if (_self[_DYN_CORE /* @min:%2ecore */]) {\r\n // Just add to the core\r\n return _self[_DYN_CORE /* @min:%2ecore */][_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](telemetryInitializer);\r\n }\r\n // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n if (!_preInitTelemetryInitializers) {\r\n _preInitTelemetryInitializers = [];\r\n }\r\n _preInitTelemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throwError(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n try {\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n if (_preInitTelemetryInitializers) {\r\n arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n core[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](initializer);\r\n });\r\n _preInitTelemetryInitializers = null;\r\n }\r\n var extConfig = _populateDefaults(config);\r\n _updateStorageUsage(extConfig);\r\n _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE /* @min:%2ecore */]);\r\n _pageViewManager = new PageViewManager(_self, extConfig[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */], _self[_DYN_CORE /* @min:%2ecore */], _pageViewPerformanceManager);\r\n _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _updateBrowserLinkTracking(extConfig, config);\r\n _eventTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties, measurements) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n if (!measurements) {\r\n measurements = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n _self.trackEvent({ name: name, properties: properties, measurements: measurements });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageViewItem, properties);\r\n };\r\n if (hasWindow()) {\r\n _updateExceptionTracking(extConfig);\r\n _updateLocationChange(extConfig);\r\n }\r\n }\r\n catch (e) {\r\n // resetting the initialized state because of failure\r\n _self.setInitialized(false);\r\n throw e;\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n // Just register to remove all events associated with this namespace\r\n eventOff(window, null, null, _evtNamespace);\r\n _initDefaults();\r\n };\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n var identifier = _self.identifier;\r\n // load default values if specified\r\n var defaults = _getDefaultConfig(config);\r\n var extConfig = _self.config = ctx.getExtCfg(identifier);\r\n if (defaults !== undefined) {\r\n objForEachKey(defaults, function (field, value) {\r\n // for each unspecified field, set the default value\r\n extConfig[field] = ctx.getConfig(identifier, field, value);\r\n if (extConfig[field] === undefined) {\r\n extConfig = value;\r\n }\r\n });\r\n }\r\n return extConfig;\r\n }\r\n function _updateBrowserLinkTracking(extConfig, config) {\r\n _isBrowserLinkTrackingEnabled = extConfig[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] || config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */];\r\n _addDefaultTelemetryInitializers();\r\n }\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers() {\r\n if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](dropBrowserLinkRequests);\r\n _browserLinkInitializerAdded = true;\r\n }\r\n }\r\n function _sendCORSException(exception, properties) {\r\n var telemetryItem = createTelemetryItem(exception, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n function _updateExceptionTracking(extConfig) {\r\n var _window = getWindow();\r\n var locn = getLocation(true);\r\n _disableExceptionTracking = extConfig[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */];\r\n if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onerror\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoExceptionInstrumented = true;\r\n }\r\n _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);\r\n }\r\n function _updateLocationChange(extConfig) {\r\n var win = getWindow();\r\n var locn = getLocation(true);\r\n _enableAutoRouteTracking = extConfig[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] === true;\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (win && _enableAutoRouteTracking && hasHistory()) {\r\n var _history = getHistory();\r\n if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n _addHistoryListener(extConfig, win, _history, locn);\r\n }\r\n }\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n if (!distributedTraceCtx) {\r\n // Fallback when using an older Core and PropertiesPlugin\r\n var properties = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (properties) {\r\n var context = properties.plugin.context;\r\n if (context) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n }\r\n }\r\n }\r\n return distributedTraceCtx;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n function _addHistoryListener(extConfig, win, history, locn) {\r\n var namePrefix = extConfig[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n function _popstateHandler() {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n function _locationChangeHandler() {\r\n // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n else {\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n if (_enableAutoRouteTracking) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n if (distributedTraceCtx) {\r\n distributedTraceCtx.setTraceId(generateW3CId());\r\n var traceLocationName = \"_unknown_\";\r\n if (locn && locn.pathname) {\r\n traceLocationName = locn.pathname + (locn.hash || \"\");\r\n }\r\n // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), traceLocationName));\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */]({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(_self, _prevUri), _self.autoRoutePVDelay);\r\n }\r\n }\r\n if (!_historyListenerAdded) {\r\n _addHook(InstrumentEvent(history, \"pushState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"pushState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n _addHook(InstrumentEvent(history, \"replaceState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"replaceState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n eventOn(win, namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n eventOn(win, namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n _historyListenerAdded = true;\r\n }\r\n }\r\n function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {\r\n _enableUnhandledPromiseRejectionTracking = extConfig[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] === true;\r\n if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, error) {\r\n if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](_getReason(error), _location ? _location[_DYN_HREF /* @min:%2ehref */] : \"\", 0, 0, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoUnhandledPromiseInstrumented = true;\r\n extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;\r\n }\r\n }\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {eLoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n }\r\n function _initDefaults() {\r\n _eventTracking = null;\r\n _pageTracking = null;\r\n _pageViewManager = null;\r\n _pageViewPerformanceManager = null;\r\n _pageVisitTimeManager = null;\r\n _preInitTelemetryInitializers = null;\r\n _isBrowserLinkTrackingEnabled = false;\r\n _browserLinkInitializerAdded = false;\r\n _enableAutoRouteTracking = false;\r\n _historyListenerAdded = false;\r\n _disableExceptionTracking = false;\r\n _autoExceptionInstrumented = false;\r\n _enableUnhandledPromiseRejectionTracking = false;\r\n _autoUnhandledPromiseInstrumented = false;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var location = getLocation(true);\r\n _prevUri = location && location[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n _currUri = null;\r\n _evtNamespace = null;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_pageViewManager\", function () { return _pageViewManager; });\r\n objDefineAccessors(_self, \"_pageViewPerformanceManager\", function () { return _pageViewPerformanceManager; });\r\n objDefineAccessors(_self, \"_pageVisitTimeManager\", function () { return _pageVisitTimeManager; });\r\n objDefineAccessors(_self, \"_evtNamespace\", function () { return \".\" + _evtNamespace; });\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AnalyticsPlugin.prototype.getCookieMgr.\r\n// Removed Stub for AnalyticsPlugin.prototype.processTelemetry.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackTrace.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackMetric.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageView.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewPerformanceInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageViewPerformance.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendExceptionInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackException.\r\n// Removed Stub for AnalyticsPlugin.prototype._onerror.\r\n// Removed Stub for AnalyticsPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for AnalyticsPlugin.prototype.initialize.\r\n AnalyticsPlugin.Version = '2.8.18'; // Not currently used anywhere\r\n AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;\r\n return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n//# sourceMappingURL=AnalyticsPlugin.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TAGS = \"tags\"; // Count: 17\r\nexport var _DYN_DEVICE_TYPE = \"deviceType\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 13\r\nexport var _DYN_NAME = \"name\"; // Count: 8\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 37\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 5\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 10\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 7\r\nexport var _DYN_ON_LINE = \"onLine\"; // Count: 4\r\nexport var _DYN_IS_ONLINE = \"isOnline\"; // Count: 3\r\nexport var _DYN_ENQUEUE = \"enqueue\"; // Count: 5\r\nexport var _DYN_COUNT = \"count\"; // Count: 6\r\nexport var _DYN_EVENTS_LIMIT_IN_MEM = \"eventsLimitInMem\"; // Count: 2\r\nexport var _DYN_PUSH = \"push\"; // Count: 6\r\nexport var _DYN_EMIT_LINE_DELIMITED_0 = \"emitLineDelimitedJson\"; // Count: 3\r\nexport var _DYN_CLEAR = \"clear\"; // Count: 6\r\nexport var _DYN_BATCH_PAYLOADS = \"batchPayloads\"; // Count: 5\r\nexport var _DYN_MARK_AS_SENT = \"markAsSent\"; // Count: 6\r\nexport var _DYN_CLEAR_SENT = \"clearSent\"; // Count: 5\r\nexport var _DYN_BUFFER_OVERRIDE = \"bufferOverride\"; // Count: 3\r\nexport var _DYN__BUFFER__KEY = \"BUFFER_KEY\"; // Count: 5\r\nexport var _DYN__SENT__BUFFER__KEY = \"SENT_BUFFER_KEY\"; // Count: 7\r\nexport var _DYN__MAX__BUFFER__SIZE = \"MAX_BUFFER_SIZE\"; // Count: 5\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 6\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_TRIGGER_SEND = \"triggerSend\"; // Count: 6\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 15\r\nexport var _DYN_ONUNLOAD_DISABLE_BEA2 = \"onunloadDisableBeacon\"; // Count: 2\r\nexport var _DYN_IS_BEACON_API_DISABL3 = \"isBeaconApiDisabled\"; // Count: 3\r\nexport var _DYN__SENDER = \"_sender\"; // Count: 5\r\nexport var _DYN__SENDER_CONFIG = \"_senderConfig\"; // Count: 4\r\nexport var _DYN_ENABLE_SESSION_STORA4 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN__BUFFER = \"_buffer\"; // Count: 9\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 2\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 8\r\nexport var _DYN_CUSTOM_HEADERS = \"customHeaders\"; // Count: 4\r\nexport var _DYN_DISABLE_XHR = \"disableXhr\"; // Count: 5\r\nexport var _DYN_ONUNLOAD_DISABLE_FET5 = \"onunloadDisableFetch\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_BASE_TYPE = \"baseType\"; // Count: 4\r\nexport var _DYN_SAMPLE_RATE = \"sampleRate\"; // Count: 4\r\nexport var _DYN_CONVERT_UNDEFINED = \"convertUndefined\"; // Count: 2\r\nexport var _DYN__XHR_READY_STATE_CHA6 = \"_xhrReadyStateChange\"; // Count: 2\r\nexport var _DYN__ON_ERROR = \"_onError\"; // Count: 11\r\nexport var _DYN__ON_PARTIAL_SUCCESS = \"_onPartialSuccess\"; // Count: 3\r\nexport var _DYN__ON_SUCCESS = \"_onSuccess\"; // Count: 6\r\nexport var _DYN_ITEMS_ACCEPTED = \"itemsAccepted\"; // Count: 5\r\nexport var _DYN_ITEMS_RECEIVED = \"itemsReceived\"; // Count: 6\r\nexport var _DYN_IS_RETRY_DISABLED = \"isRetryDisabled\"; // Count: 5\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 2\r\nexport var _DYN_EVENTS_SEND_REQUEST = \"eventsSendRequest\"; // Count: 2\r\nexport var _DYN_DISABLE_INSTRUMENTAT7 = \"disableInstrumentationKeyValidation\"; // Count: 2\r\nexport var _DYN_GET_SAMPLING_SCORE = \"getSamplingScore\"; // Count: 2\r\nexport var _DYN_GET_HASH_CODE_SCORE = \"getHashCodeScore\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { CtxTagKeys, Data, Envelope, Event, Exception, HttpMethod, Metric, PageView, PageViewPerformance, RemoteDependencyData, SampleRate, Trace, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, _warnToConsole, getJSON, hasJSON, isNullOrUndefined, isNumber, isString, isTruthy, objForEachKey, optimizeObject, setValue, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION } from \"./InternalConstants\";\r\nimport { _DYN_DATA, _DYN_DATA_TYPE, _DYN_DEVICE_TYPE, _DYN_ENVELOPE_TYPE, _DYN_LENGTH, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_STRINGIFY, _DYN_TAGS, _DYN_TO_STRING, _DYN_TRACE_ID } from \"./__DynamicConstants\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env[_DYN_TAGS /* @min:%2etags */] = env[_DYN_TAGS /* @min:%2etags */] || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item[_DYN_TAGS /* @min:%2etags */] = item[_DYN_TAGS /* @min:%2etags */] || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice[_DYN_DEVICE_TYPE /* @min:%2edeviceType */]);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env[_DYN_DATA /* @min:%2edata */] = env[_DYN_DATA /* @min:%2edata */] || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace[_DYN_NAME /* @min:%2ename */]));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags[_DYN_LENGTH /* @min:%2elength */] - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = dataSanitizeString(logger, \"javascript:\".concat(EnvelopeCreator.Version), 64);\r\n }\r\n env[_DYN_TAGS /* @min:%2etags */] = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope[_DYN_NAME /* @min:%2ename */] = envelope[_DYN_NAME /* @min:%2ename */].replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem[_DYN_TAGS /* @min:%2etags */] = telemetryItem[_DYN_TAGS /* @min:%2etags */] || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: '2.8.18'\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n _warnToConsole(logger, \"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd[_DYN_NAME /* @min:%2ename */], bd[STR_DURATION /* @min:%2eduration */], bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */], remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event[_DYN_DATA_TYPE /* @min:%2edataType */]) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData][_DYN_NAME /* @min:%2ename */];\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event[_DYN_DATA_TYPE /* @min:%2edataType */], eventData);\r\n return _createEnvelope(logger, Event[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception[_DYN_DATA_TYPE /* @min:%2edataType */], exData);\r\n return _createEnvelope(logger, Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData[_DYN_NAME /* @min:%2ename */], baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric[_DYN_DATA_TYPE /* @min:%2edataType */], baseMetricData);\r\n return _createEnvelope(logger, Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][STR_DURATION])) { // from part B properties\r\n duration = baseData[strProperties][STR_DURATION];\r\n delete baseData[strProperties][STR_DURATION];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */]) &&\r\n !isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION])) { // from custom properties\r\n duration = telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n delete telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {})[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n currentContextId = telemetryItem.ext.trace[_DYN_TRACE_ID /* @min:%2etraceID */];\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView[_DYN_DATA_TYPE /* @min:%2edataType */], pageViewData);\r\n return _createEnvelope(logger, PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { createUniqueNamespace, eventOff, eventOn, getDocument, getNavigator, getWindow, isNullOrUndefined, isUndefined, mergeEvtNamespace } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_IS_ONLINE, _DYN_ON_LINE } from \"./__DynamicConstants\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n var _a;\r\n var _document = getDocument();\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n var _isListening = false;\r\n var _onlineStatus = true;\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n try {\r\n if (_enableEvents(getWindow())) {\r\n _isListening = true;\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (target.ononline) {\r\n if (_enableEvents(target)) {\r\n _isListening = true;\r\n }\r\n }\r\n }\r\n if (_isListening) {\r\n // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n _onlineStatus = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n _isListening = false;\r\n }\r\n function _enableEvents(target) {\r\n var enabled = false;\r\n if (target) {\r\n enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n if (enabled) {\r\n eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n }\r\n }\r\n return enabled;\r\n }\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n function _isOnline() {\r\n var result = true;\r\n if (_isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n result = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n return result;\r\n }\r\n function _unload() {\r\n var win = getWindow();\r\n if (win && _isListening) {\r\n _disableEvents(win, _evtNamespace);\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n _disableEvents(target, _evtNamespace);\r\n }\r\n }\r\n _isListening = false;\r\n }\r\n }\r\n return _a = {},\r\n _a[_DYN_IS_ONLINE /* @min:isOnline */] = _isOnline,\r\n _a.isListening = function () { return _isListening; },\r\n _a.unload = _unload,\r\n _a;\r\n}\r\n//# sourceMappingURL=Offline.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlGetSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, arrIndexOf, dumpObj, getExceptionName, getJSON, isArray, isFunction, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_BATCH_PAYLOADS, _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_COUNT, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_NAME_PREFIX, _DYN_PUSH, _DYN_STRINGIFY, _DYN__BUFFER__KEY, _DYN__MAX__BUFFER__SIZE, _DYN__SENT__BUFFER__KEY } from \"./__DynamicConstants\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n function BaseSendBuffer(logger, config) {\r\n var _buffer = [];\r\n var _bufferFullMessageSent = false;\r\n this._get = function () {\r\n return _buffer;\r\n };\r\n this._set = function (buffer) {\r\n _buffer = buffer;\r\n return _buffer;\r\n };\r\n dynamicProto(BaseSendBuffer, this, function (_self) {\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= config[_DYN_EVENTS_LIMIT_IN_MEM /* @min:%2eeventsLimitInMem */]()) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _buffer[_DYN_PUSH /* @min:%2epush */](payload);\r\n };\r\n _self[_DYN_COUNT /* @min:%2ecount */] = function () {\r\n return _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.size = function () {\r\n var size = _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < _buffer[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n size += _buffer[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if (!config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]()) {\r\n size += 2;\r\n }\r\n return size;\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _buffer = [];\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */] = function (payload) {\r\n if (payload && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var batch = config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n });\r\n }\r\n// Removed Stub for BaseSendBuffer.prototype.enqueue.\r\n// Removed Stub for BaseSendBuffer.prototype.count.\r\n// Removed Stub for BaseSendBuffer.prototype.size.\r\n// Removed Stub for BaseSendBuffer.prototype.clear.\r\n// Removed Stub for BaseSendBuffer.prototype.getItems.\r\n// Removed Stub for BaseSendBuffer.prototype.batchPayloads.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseSendBuffer.__ieDyn=1;\n\n return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n __extends(ArraySendBuffer, _super);\r\n function ArraySendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n // not supported\r\n };\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for ArraySendBuffer.prototype.markAsSent.\r\n// Removed Stub for ArraySendBuffer.prototype.clearSent.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n ArraySendBuffer.__ieDyn=1;\n\n return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n __extends(SessionStorageSendBuffer, _super);\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n var _bufferFullMessageSent = false;\r\n var _a = config[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */]() || { getItem: utlGetSessionStorage, setItem: utlSetSessionStorage }, getItem = _a.getItem, setItem = _a.setItem;\r\n dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */]);\r\n var notDeliveredItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n var buffer = _self._set(bufferItems.concat(notDeliveredItems));\r\n // If the buffer has too many items, drop items from the end.\r\n if (buffer[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n buffer[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], buffer);\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _base[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._set(_removePayloadsFromBuffer(payload, _self._get())));\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n if (sentElements[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements[_DYN_LENGTH /* @min:%2elength */], true);\r\n sentElements[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n }\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n remaining[_DYN_PUSH /* @min:%2epush */](value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = getItem(logger, prefixedKey);\r\n if (bufferJson) {\r\n var buffer_1 = getJSON().parse(bufferJson);\r\n if (isString(buffer_1)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer_1 = getJSON().parse(buffer_1);\r\n }\r\n if (buffer_1 && isArray(buffer_1)) {\r\n return buffer_1;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON[_DYN_STRINGIFY /* @min:%2estringify */](buffer);\r\n setItem(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n setItem(logger, prefixedKey, JSON[_DYN_STRINGIFY /* @min:%2estringify */]([]));\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for SessionStorageSendBuffer.prototype.enqueue.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clear.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.markAsSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clearSent.\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n//# sourceMappingURL=SendBuffer.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _throwInternal, getJSON, isArray, isFunction, isObject, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_STRINGIFY, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self.serialize = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n var isArray = contract & 2 /* FieldType.Array */;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) { // Don't serialize hidden fields\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output[_DYN_PUSH /* @min:%2epush */](item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value[_DYN_TO_STRING /* @min:%2etoString */]) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n// Removed Stub for Serializer.prototype.serialize.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n Serializer.__ieDyn=1;\n\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n//# sourceMappingURL=Serializer.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_LENGTH } from \"../../__DynamicConstants\";\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input[_DYN_LENGTH /* @min:%2elength */] < MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n//# sourceMappingURL=HashCodeScoreGenerator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nimport { _DYN_GET_HASH_CODE_SCORE, _DYN_GET_SAMPLING_SCORE, _DYN_TAGS, _DYN_TRACE_ID } from \"../../__DynamicConstants\";\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n var _self = this;\r\n var hashCodeGenerator = new HashCodeScoreGenerator();\r\n var keys = new ContextTagKeys();\r\n _self[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */] = function (item) {\r\n var score = 0;\r\n if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.userId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = hashCodeGenerator[_DYN_GET_HASH_CODE_SCORE /* @min:%2egetHashCodeScore */](item.ext.user.id);\r\n }\r\n else if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.operationId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n }\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n//# sourceMappingURL=SamplingScoreGenerator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DATA_TYPE, _DYN_GET_SAMPLING_SCORE, _DYN_SAMPLE_RATE } from \"../__DynamicConstants\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n var _logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n sampleRate = 100;\r\n }\r\n this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */]; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */](envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n//# sourceMappingURL=Sample.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, arrIndexOf, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion, getJSON, getNavigator, getWindow, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, isXhrSupported, mergeEvtNamespace, objForEachKey, objKeys, useXDomainRequest } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { createOfflineListener } from \"./Offline\";\r\nimport { ArraySendBuffer, SessionStorageSendBuffer } from \"./SendBuffer\";\r\nimport { Serializer } from \"./Serializer\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport { _DYN_BASE_TYPE, _DYN_BATCH_PAYLOADS, _DYN_BUFFER_OVERRIDE, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CUSTOM_HEADERS, _DYN_DIAG_LOG, _DYN_DISABLE_INSTRUMENTAT7, _DYN_DISABLE_TELEMETRY, _DYN_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SESSION_STORA4, _DYN_ENDPOINT_URL, _DYN_ENQUEUE, _DYN_EVENTS_LIMIT_IN_MEM, _DYN_EVENTS_SEND_REQUEST, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_IS_ONLINE, _DYN_IS_RETRY_DISABLED, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_NAME_PREFIX, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET5, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SAMPLING_PERCENTAGE, _DYN_SET_REQUEST_HEADER, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER, _DYN__SENDER_CONFIG, _DYN__XHR_READY_STATE_CHA6 } from \"./__DynamicConstants\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nfunction _getDefaultAppInsightsChannelConfig() {\r\n var _a;\r\n var defaultValue;\r\n var defaultCustomHeaders;\r\n // set default values\r\n return _a = {\r\n endpointUrl: function () { return DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH; }\r\n },\r\n _a[_DYN_EMIT_LINE_DELIMITED_0 /* @min:emitLineDelimitedJson */] = function () { return false; },\r\n _a[_DYN_MAX_BATCH_INTERVAL /* @min:maxBatchInterval */] = function () { return 15000; },\r\n _a[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:maxBatchSizeInBytes */] = function () { return 102400; },\r\n _a[_DYN_DISABLE_TELEMETRY /* @min:disableTelemetry */] = function () { return false; },\r\n _a[_DYN_ENABLE_SESSION_STORA4 /* @min:enableSessionStorageBuffer */] = function () { return true; },\r\n _a[_DYN_BUFFER_OVERRIDE /* @min:bufferOverride */] = function () { return false; },\r\n _a[_DYN_IS_RETRY_DISABLED /* @min:isRetryDisabled */] = function () { return false; },\r\n _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = function () { return true; },\r\n _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:onunloadDisableFetch */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = function () { return false; },\r\n _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = function () { return defaultValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SAMPLING_PERCENTAGE /* @min:samplingPercentage */] = function () { return 100; },\r\n _a[_DYN_CUSTOM_HEADERS /* @min:customHeaders */] = function () { return defaultCustomHeaders; },\r\n _a[_DYN_CONVERT_UNDEFINED /* @min:convertUndefined */] = function () { return defaultValue; },\r\n _a[_DYN_EVENTS_LIMIT_IN_MEM /* @min:eventsLimitInMem */] = function () { return 10000; },\r\n _a.retryCodes = function () { return null; },\r\n _a;\r\n}\r\nvar EnvelopeTypeCreator = (_a = {},\r\n _a[Event.dataType] = EventEnvelopeCreator,\r\n _a[Trace.dataType] = TraceEnvelopeCreator,\r\n _a[PageView.dataType] = PageViewEnvelopeCreator,\r\n _a[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n _a[Exception.dataType] = ExceptionEnvelopeCreator,\r\n _a[Metric.dataType] = MetricEnvelopeCreator,\r\n _a[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n _a);\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n /**\r\n * The configuration for this sender instance\r\n */\r\n _this._senderConfig = _getDefaultAppInsightsChannelConfig();\r\n // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n var _lastSend; // The time of the last send operation.\r\n var _paused; // Flag indicating that the sending should be paused\r\n var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n var _headers;\r\n var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _fallbackSender; // The sender to use if the payload size is too large\r\n var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n var _offlineListener;\r\n var _evtNamespace;\r\n var _retryCodes;\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.pause = function () {\r\n _clearScheduledTimer();\r\n _paused = true;\r\n };\r\n _self.resume = function () {\r\n if (_paused) {\r\n _paused = false;\r\n _retryAt = null;\r\n // flush if we have exceeded the max-size already\r\n if (_self._buffer.size() > _self._senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n _setupTimer();\r\n }\r\n };\r\n _self.flush = function (isAsync, callBack, sendReason) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_paused) {\r\n // Clear the normal schedule timer as we are going to try and flush ASAP\r\n _clearScheduledTimer();\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if (!_paused) {\r\n if ((_self._senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */]() === false || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() === false) && isBeaconsSupported()) {\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush();\r\n }\r\n }\r\n };\r\n _self.addHeader = function (name, value) {\r\n _headers[name] = value;\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _stamp_specific_redirects = 0;\r\n var diagLog = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(_evtNamespace);\r\n // TODO v3.x: Change the ISenderConfig to not be function calls\r\n var defaultConfig = _getDefaultAppInsightsChannelConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][field] = function () {\r\n var theValue = ctx.getConfig(identifier, field, value());\r\n if (!theValue && field === \"endpointUrl\") {\r\n // Use the default value (handles empty string in the configuration)\r\n theValue = value();\r\n }\r\n return theValue;\r\n };\r\n });\r\n _retryCodes = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */].retryCodes();\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n var useSessionStorage = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENABLE_SESSION_STORA4 /* @min:%2eenableSessionStorageBuffer */]() &&\r\n !!(_self._senderConfig[_DYN_BUFFER_OVERRIDE /* @min:%2ebufferOverride */]() || utlCanUseSessionStorage());\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = useSessionStorage\r\n ? new SessionStorageSendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */])\r\n : new ArraySendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]);\r\n _self._sample = new Sample(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */](), diagLog);\r\n if (!_validateInstrumentationKey(config)) {\r\n _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders()[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */](), function (customHeader) {\r\n _this.addHeader(customHeader.header, customHeader.value);\r\n });\r\n }\r\n var senderConfig = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */];\r\n var sendPostFunc = null;\r\n if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n sendPostFunc = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n sendPostFunc = _xhrSender;\r\n }\r\n if (!sendPostFunc && isFetchSupported()) {\r\n sendPostFunc = _fetchSender;\r\n }\r\n // always fallback to XHR\r\n _fallbackSender = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() && isBeaconsSupported()) {\r\n // Config is set to always used beacon sending\r\n sendPostFunc = _beaconSender;\r\n }\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:%2eonunloadDisableFetch */]() && isFetchSupported(true)) {\r\n // Try and use the fetch with keepalive\r\n _syncUnloadSender = _fetchKeepAliveSender;\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Try and use sendBeacon\r\n _syncUnloadSender = _beaconSender;\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n _syncUnloadSender = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n _syncUnloadSender = _xhrSender;\r\n }\r\n else {\r\n _syncUnloadSender = _fallbackSender;\r\n }\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n var diagLogger = itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n try {\r\n // if master off switch is set, don't send any data\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n if (!telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n // Default\r\n telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */] = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self[_DYN__SENDER /* @min:%2e_sender */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n return;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] });\r\n return;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */];\r\n }\r\n var convertUndefined = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CONVERT_UNDEFINED /* @min:%2econvertUndefined */]() || undefined;\r\n // construct an envelope that Application Insights endpoint can understand\r\n // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n var defaultEnvelopeIkey = telemetryItem.iKey || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]();\r\n var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, diagLogger, convertUndefined);\r\n if (!aiEnvelope_1) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem_1 = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem[_DYN_TAGS /* @min:%2etags */] && telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy]) {\r\n arrForEach(telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope_1) === false) {\r\n doNotSendItem_1 = true;\r\n _warnToConsole(diagLogger, \"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy];\r\n }\r\n if (doNotSendItem_1) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer.serialize(aiEnvelope_1);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var bufferSize = buffer.size();\r\n if ((bufferSize + payload[_DYN_LENGTH /* @min:%2elength */]) > _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n if (!_offlineListener || _offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]()) { // only trigger send when currently online\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n }\r\n // enqueue the payload\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self[_DYN__XHR_READY_STATE_CHA6 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n }\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */] = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n if (!_paused) {\r\n try {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n // Send data only if disableTelemetry is false\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n if (buffer[_DYN_COUNT /* @min:%2ecount */]() > 0) {\r\n var payload = buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(_self, payload, async);\r\n }\r\n else {\r\n _self[_DYN__SENDER /* @min:%2e_sender */](payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n }\r\n _clearScheduledTimer();\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self.onunloadFlush();\r\n _offlineListener.unload();\r\n _initDefaults();\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */] = function (payload, message, event) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer && _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */] = function (payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n }\r\n if (payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);\r\n }\r\n if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, _formatErrorMessageXhr(null, [\"partial success\", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], \"of\", results.itemsReceived].join(\" \")));\r\n }\r\n if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _resendPayload(retry);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n \"Delivered: \" + payload[_DYN_LENGTH /* @min:%2elength */] + \", Failed: \" + failed[_DYN_LENGTH /* @min:%2elength */] +\r\n \". Will retry to send \" + retry[_DYN_LENGTH /* @min:%2elength */] + \" our of \" + results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] + \" items\");\r\n }\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */] = function (payload, countOfItemsInPayload) {\r\n _self._buffer && _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);\r\n }\r\n else {\r\n var results = _parseResponse(responseText);\r\n if (results && results.itemsReceived && results.itemsReceived > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]\r\n && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n };\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = _parseResponse(res);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((status < 200 || status >= 300) && status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (status === 301 || status === 307 || status === 308) {\r\n if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n return;\r\n }\r\n }\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]() && _isRetriable(status)) {\r\n _resendPayload(payload);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Response code \" + status + \". Will retry to send \" + payload[_DYN_LENGTH /* @min:%2elength */] + \" items.\");\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else if (_offlineListener && !_offlineListener[_DYN_IS_ONLINE /* @min:%2eisOnline */]()) { // offline\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(responseUrl);\r\n if (status === 206) {\r\n if (!response) {\r\n response = _parseResponse(res);\r\n }\r\n if (response && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n function _checkAndUpdateEndPointUrl(responseUrl) {\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n if (responseUrl !== _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]()) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = function () { return responseUrl; };\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _doUnloadSend(payload, isAsync) {\r\n if (_syncUnloadSender) {\r\n // We are unloading so always call the sender with sync set to false\r\n _syncUnloadSender(payload, false);\r\n }\r\n else {\r\n // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n _beaconSender(payload, isAsync);\r\n }\r\n }\r\n function _doBeaconSend(payload) {\r\n var nav = getNavigator();\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var url = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = new Blob([batch], { type: \"text/plain;charset=UTF-8\" });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = nav.sendBeacon(url, plainTextBatch);\r\n if (queued) {\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n // no response from beaconSender, clear buffer\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n return queued;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, isAsync) {\r\n if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n if (!_doBeaconSend(payload)) {\r\n // Failed to send entire payload so try and split data and try to send as much events as possible\r\n var droppedPayload = [];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var thePayload = payload[lp];\r\n if (!_doBeaconSend([thePayload])) {\r\n // Can't send anymore, so split the batch and drop the rest\r\n droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);\r\n }\r\n }\r\n if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _fallbackSender && _fallbackSender(droppedPayload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n function _xhrSender(payload, isAsync) {\r\n var xhr = new XMLHttpRequest();\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](\"Content-type\", \"application/json\");\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, _headers[headerName]);\r\n });\r\n xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload[_DYN_LENGTH /* @min:%2elength */]); };\r\n xhr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXhr(xhr), event); };\r\n // compose an array of payloads\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xhr.send(batch);\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _fetchKeepAliveSender(payload, isAsync) {\r\n if (isArray(payload)) {\r\n var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n payloadSize += payload[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n _doFetchSender(payload, false);\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n _beaconSender(payload, isAsync);\r\n }\r\n else {\r\n // Payload is going to be too big so just try and send via XHR\r\n _fallbackSender && _fallbackSender(payload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n */\r\n function _fetchSender(payload, isAsync) {\r\n _doFetchSender(payload, true);\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n */\r\n function _doFetchSender(payload, isAsync) {\r\n var _a;\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n var plainTextBatch = new Blob([batch], { type: \"application/json\" });\r\n var requestHeaders = new Headers();\r\n var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];\r\n var ignoreResponse = false;\r\n var responseHandled = false;\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n requestHeaders.append(RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n requestHeaders.append(headerName, _headers[headerName]);\r\n });\r\n var init = (_a = {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n body: plainTextBatch\r\n },\r\n _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n ,\r\n _a);\r\n if (!isAsync) {\r\n init.keepalive = true;\r\n // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n // just like beacon send assume that the events have been accepted and processed\r\n ignoreResponse = true;\r\n _syncFetchPayload += batchLength;\r\n }\r\n var request = new Request(endPointUrl, init);\r\n try {\r\n // Also try and tag the request (just in case the value in init is not copied over)\r\n request[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n try {\r\n fetch(request).then(function (response) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n /**\r\n * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n * or if anything prevented the request from completing.\r\n */\r\n if (!response.ok) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response.statusText);\r\n }\r\n else {\r\n response.text().then(function (text) {\r\n _checkResponsStatus(response.status, payload, response.url, payload[_DYN_LENGTH /* @min:%2elength */], response.statusText, text);\r\n });\r\n }\r\n }\r\n })[\"catch\"](function (error) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, error.message);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n if (!responseHandled) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, dumpObj(e));\r\n }\r\n }\r\n if (ignoreResponse && !responseHandled) {\r\n // Assume success during unload processing as we most likely won't get the response\r\n responseHandled = true;\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n }\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n function _parseResponse(response) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result.itemsReceived && result.itemsReceived >= result[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */] &&\r\n result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + getExceptionName(e), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return;\r\n }\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && !_paused) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_INTERVAL /* @min:%2emaxBatchInterval */](), retryInterval);\r\n _timeoutHandle = setTimeout(function () {\r\n _timeoutHandle = null;\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n clearTimeout(_timeoutHandle);\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n // retryCodes = [] means should not retry\r\n if (!isNullOrUndefined(_retryCodes)) {\r\n return _retryCodes[_DYN_LENGTH /* @min:%2elength */] && arrIndexOf(_retryCodes, statusCode) > -1;\r\n }\r\n return statusCode === 401 // Unauthorized\r\n // Removing as private links can return a 403 which causes excessive retries and session storage usage\r\n //|| statusCode === 403 // Forbidden\r\n || statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 502 // Bad Gateway.\r\n || statusCode === 503 // Service unavailable.\r\n || statusCode === 504; // Gateway timeout.\r\n }\r\n function _formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, isAsync) {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n xdr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr), event); };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n return;\r\n }\r\n var endpointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().replace(/^(https?:)/, \"\");\r\n xdr.open(\"POST\", endpointUrl);\r\n // compose an array of payloads\r\n var batch = buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xdr.send(batch);\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = \"getNotifyMgr\";\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core[\"_notificationManager\"];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */]) {\r\n try {\r\n manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(config) {\r\n var disableIKeyValidationFlag = isNullOrUndefined(config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */]) ? false : config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */];\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n function _initDefaults() {\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = null;\r\n _self._appId = null;\r\n _self._sample = null;\r\n _headers = {};\r\n _offlineListener = null;\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = null;\r\n _paused = false;\r\n _timeoutHandle = null;\r\n _serializer = null;\r\n _stamp_specific_redirects = 0;\r\n _syncFetchPayload = 0;\r\n _fallbackSender = null;\r\n _syncUnloadSender = null;\r\n _evtNamespace = null;\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n return creator(logger, envelope, convertUndefined);\r\n };\r\n// Removed Stub for Sender.prototype.pause.\r\n// Removed Stub for Sender.prototype.resume.\r\n// Removed Stub for Sender.prototype.flush.\r\n// Removed Stub for Sender.prototype.onunloadFlush.\r\n// Removed Stub for Sender.prototype.initialize.\r\n// Removed Stub for Sender.prototype.processTelemetry.\r\n// Removed Stub for Sender.prototype._xhrReadyStateChange.\r\n// Removed Stub for Sender.prototype.triggerSend.\r\n// Removed Stub for Sender.prototype._onError.\r\n// Removed Stub for Sender.prototype._onPartialSuccess.\r\n// Removed Stub for Sender.prototype._onSuccess.\r\n// Removed Stub for Sender.prototype._xdrOnLoad.\r\n// Removed Stub for Sender.prototype.addHeader.\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n//# sourceMappingURL=Sender.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\nexport var STR_PROPERTIES = \"properties\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_REQUEST_URL = \"requestUrl\"; // Count: 12\r\nexport var _DYN_INST = \"inst\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 10\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 9\r\nexport var _DYN_SPAN_ID = \"spanID\"; // Count: 8\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 13\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 7\r\nexport var _DYN_ABORTED = \"aborted\"; // Count: 7\r\nexport var _DYN_TRACE_ID0 = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID1 = \"spanId\"; // Count: 5\r\nexport var _DYN_CORE = \"core\"; // Count: 8\r\nexport var _DYN_INCLUDE_CORRELATION_2 = \"includeCorrelationHeaders\"; // Count: 4\r\nexport var _DYN_CAN_INCLUDE_CORRELAT3 = \"canIncludeCorrelationHeader\"; // Count: 2\r\nexport var _DYN_GET_ABSOLUTE_URL = \"getAbsoluteUrl\"; // Count: 3\r\nexport var _DYN_HEADERS = \"headers\"; // Count: 6\r\nexport var _DYN_REQUEST_HEADERS = \"requestHeaders\"; // Count: 13\r\nexport var _DYN_APP_ID = \"appId\"; // Count: 5\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_TRACK_DEPENDENCY_DAT4 = \"trackDependencyDataInternal\"; // Count: 2\r\nexport var _DYN_DISTRIBUTED_TRACING_5 = \"distributedTracingMode\"; // Count: 3\r\nexport var _DYN_START_TIME = \"startTime\"; // Count: 6\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_ENABLE_REQUEST_HEADE6 = \"enableRequestHeaderTracking\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_ERROR_ST7 = \"enableAjaxErrorStatusText\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_PERF_TRA8 = \"enableAjaxPerfTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V9 = \"maxAjaxCallsPerView\"; // Count: 2\r\nexport var _DYN_ENABLE_RESPONSE_HEAD10 = \"enableResponseHeaderTracking\"; // Count: 2\r\nexport var _DYN_EXCLUDE_REQUEST_FROM11 = \"excludeRequestFromAutoTrackingPatterns\"; // Count: 2\r\nexport var _DYN_ADD_REQUEST_CONTEXT = \"addRequestContext\"; // Count: 2\r\nexport var _DYN_DISABLE_AJAX_TRACKIN12 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_FETCH_TRACKI13 = \"disableFetchTracking\"; // Count: 2\r\nexport var _DYN_STATUS = \"status\"; // Count: 11\r\nexport var _DYN_STATUS_TEXT = \"statusText\"; // Count: 9\r\nexport var _DYN_HEADER_MAP = \"headerMap\"; // Count: 8\r\nexport var _DYN_OPEN_DONE = \"openDone\"; // Count: 3\r\nexport var _DYN_SEND_DONE = \"sendDone\"; // Count: 3\r\nexport var _DYN_REQUEST_SENT_TIME = \"requestSentTime\"; // Count: 9\r\nexport var _DYN_ABORT_DONE = \"abortDone\"; // Count: 3\r\nexport var _DYN_GET_TRACE_ID = \"getTraceId\"; // Count: 3\r\nexport var _DYN_GET_TRACE_FLAGS = \"getTraceFlags\"; // Count: 3\r\nexport var _DYN_METHOD = \"method\"; // Count: 8\r\nexport var _DYN_ERROR_STATUS_TEXT = \"errorStatusText\"; // Count: 3\r\nexport var _DYN_STATE_CHANGE_ATTACHE14 = \"stateChangeAttached\"; // Count: 2\r\nexport var _DYN_RESPONSE_TEXT = \"responseText\"; // Count: 6\r\nexport var _DYN_RESPONSE_FINISHED_TI15 = \"responseFinishedTime\"; // Count: 7\r\nexport var _DYN__CREATE_TRACK_ITEM = \"CreateTrackItem\"; // Count: 3\r\nexport var _DYN_RESPONSE = \"response\"; // Count: 4\r\nexport var _DYN_GET_ALL_RESPONSE_HEA16 = \"getAllResponseHeaders\"; // Count: 2\r\nexport var _DYN_GET_PART_APROPS = \"getPartAProps\"; // Count: 3\r\nexport var _DYN_GET_CORRELATION_CONT17 = \"getCorrelationContext\"; // Count: 2\r\nexport var _DYN_PERF_MARK = \"perfMark\"; // Count: 4\r\nexport var _DYN_AJAX_PERF_LOOKUP_DEL18 = \"ajaxPerfLookupDelay\"; // Count: 2\r\nexport var _DYN_NAME = \"name\"; // Count: 6\r\nexport var _DYN_PERF_TIMING = \"perfTiming\"; // Count: 3\r\nexport var _DYN_AJAX_DIAGNOSTICS_MES19 = \"ajaxDiagnosticsMessage\"; // Count: 3\r\nexport var _DYN_CORRELATION_CONTEXT = \"correlationContext\"; // Count: 3\r\nexport var _DYN_AJAX_TOTAL_DURATION = \"ajaxTotalDuration\"; // Count: 3\r\nexport var _DYN_EVENT_TRACE_CTX = \"eventTraceCtx\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Extensions, dataSanitizeUrl, dateTimeUtilsDuration, msToTimeSpan, urlGetAbsoluteUrl, urlGetCompleteUrl } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isNullOrUndefined, isNumber, isString, normalizeJsName, objForEachKey, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION, STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_AJAX_TOTAL_DURATION, _DYN_CORRELATION_CONTEXT, _DYN_ERROR_STATUS_TEXT, _DYN_EVENT_TRACE_CTX, _DYN_GET_ABSOLUTE_URL, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADER_MAP, _DYN_LENGTH, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_SEND_DONE, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */];\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[STR_DURATION /* @min:%2eduration */];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, STR_DURATION, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */]) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self[_DYN_OPEN_DONE /* @min:%2eopenDone */] = false;\r\n self.setRequestHeaderDone = false;\r\n self[_DYN_SEND_DONE /* @min:%2esendDone */] = false;\r\n self[_DYN_ABORT_DONE /* @min:%2eabortDone */] = false;\r\n // True, if onreadyStateChangeCallback function attached to xhr, otherwise false\r\n self[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceId, spanId, logger, traceCtx) {\r\n var _a;\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self[_DYN_PERF_MARK /* @min:%2eperfMark */] = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] = null;\r\n self[_DYN_ABORTED /* @min:%2eaborted */] = 0;\r\n self.pageUrl = null;\r\n self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = null;\r\n self.requestSize = 0;\r\n self[_DYN_METHOD /* @min:%2emethod */] = null;\r\n self[_DYN_STATUS /* @min:%2estatus */] = null;\r\n self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = null;\r\n self.responseStartedTime = null;\r\n self[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self[_DYN_TRACE_ID /* @min:%2etraceID */] = traceId;\r\n self[_DYN_SPAN_ID /* @min:%2espanID */] = spanId;\r\n self[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx === null || traceCtx === void 0 ? void 0 : traceCtx.getTraceFlags();\r\n if (traceCtx) {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = (_a = {},\r\n _a[_DYN_TRACE_ID0 /* @min:traceId */] = traceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */](),\r\n _a[_DYN_SPAN_ID1 /* @min:spanId */] = traceCtx.getSpanId(),\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = traceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */](),\r\n _a);\r\n }\r\n else {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = null;\r\n }\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? urlGetAbsoluteUrl(self[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) : null;\r\n };\r\n self.getPathName = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self[_DYN_METHOD /* @min:%2emethod */], self[_DYN_REQUEST_URL /* @min:%2erequestUrl */])) : null;\r\n };\r\n self[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */] = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n var _a;\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + self[_DYN_SPAN_ID /* @min:%2espanID */],\r\n target: self[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */]()\r\n },\r\n _a[_DYN_NAME /* @min:name */] = self.getPathName(),\r\n _a.type = ajaxType,\r\n _a[_DYN_START_TIME /* @min:startTime */] = null,\r\n _a.duration = self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */],\r\n _a.success = (+(self[_DYN_STATUS /* @min:%2estatus */])) >= 200 && (+(self[_DYN_STATUS /* @min:%2estatus */])) < 400,\r\n _a.responseCode = (+(self[_DYN_STATUS /* @min:%2estatus */])),\r\n _a[STR_PROPERTIES] = { HttpMethod: self[_DYN_METHOD /* @min:%2emethod */] },\r\n _a);\r\n var props = dependency[STR_PROPERTIES];\r\n if (self[_DYN_ABORTED /* @min:%2eaborted */]) {\r\n props[_DYN_ABORTED /* @min:%2eaborted */] = true;\r\n }\r\n if (self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]) {\r\n // Set the correct dependency start time\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */].setTime(self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n props[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */];\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response[_DYN_CORRELATION_CONTEXT /* @min:%2ecorrelationContext */];\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response[_DYN_HEADER_MAP /* @min:%2eheaderMap */]) {\r\n if (objKeys(response.headerMap)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n props.responseHeaders = response[_DYN_HEADER_MAP /* @min:%2eheaderMap */];\r\n }\r\n }\r\n if (self[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */]) {\r\n if (self[_DYN_STATUS /* @min:%2estatus */] >= 400) {\r\n var responseType = response.type;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n props.responseText = response.responseText ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + response[strResponseText] : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n if (responseType === \"json\") {\r\n props.responseText = response.response ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + JSON.stringify(response[_DYN_RESPONSE /* @min:%2eresponse */]) : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n }\r\n else if (self[_DYN_STATUS /* @min:%2estatus */] === 0) {\r\n props.responseText = response[_DYN_STATUS_TEXT /* @min:%2estatusText */] || \"\";\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n };\r\n self[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */] = function () {\r\n var _a;\r\n var partA = null;\r\n var traceCtx = self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */];\r\n if (traceCtx && (traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */] || traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */])) {\r\n partA = {};\r\n var traceExt = partA[Extensions.TraceExt] = (_a = {},\r\n _a[_DYN_TRACE_ID /* @min:traceID */] = traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */],\r\n _a.parentID = traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */],\r\n _a);\r\n if (!isNullOrUndefined(traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */])) {\r\n traceExt[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n }\r\n }\r\n return partA;\r\n };\r\n });\r\n }\r\n// Removed Stub for ajaxRecord.prototype.getAbsoluteUrl.\r\n// Removed Stub for ajaxRecord.prototype.getPathName.\r\n// Removed Stub for ajaxRecord.prototype.CreateTrackItem.\r\n// Removed Stub for ajaxRecord.prototype.getPartAProps.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n ajaxRecord.__ieDyn=1;\n\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n//# sourceMappingURL=ajaxRecord.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CorrelationIdHelper, DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, deepFreeze, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, objForEachKey, strPrototype, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORTED, _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_PERF_LOOKUP_DEL18, _DYN_APP_ID, _DYN_CAN_INCLUDE_CORRELAT3, _DYN_CONTEXT, _DYN_CORE, _DYN_DISABLE_AJAX_TRACKIN12, _DYN_DISABLE_FETCH_TRACKI13, _DYN_DISTRIBUTED_TRACING_5, _DYN_ENABLE_AJAX_ERROR_ST7, _DYN_ENABLE_AJAX_PERF_TRA8, _DYN_ENABLE_REQUEST_HEADE6, _DYN_ENABLE_RESPONSE_HEAD10, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM11, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA16, _DYN_GET_CORRELATION_CONT17, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V9, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT4, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar AJAX_DATA_CONTAINER = \"_ajaxData\";\r\nvar STR_FETCH = \"fetch\";\r\nvar ERROR_HEADER = \"Failed to monitor XMLHttpRequest\";\r\nvar ERROR_PREFIX = \", monitoring data for this ajax call \";\r\nvar ERROR_POSTFIX = ERROR_PREFIX + \"may be incorrect.\";\r\nvar ERROR_NOT_SENT = ERROR_PREFIX + \"won't be sent.\";\r\nvar CORRELATION_HEADER_ERROR = \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\";\r\nvar CUSTOM_REQUEST_CONTEXT_ERROR = \"Failed to add custom defined request context as configured call back may missing a null check.\";\r\nvar FAILED_TO_CALCULATE_DURATION_ERROR = \"Failed to calculate the duration of the \";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[STR_FETCH])) {\r\n return null;\r\n }\r\n return _global[STR_FETCH];\r\n}\r\nvar _isWebWorker = null;\r\nfunction isWebWorker() {\r\n if (_isWebWorker == null) {\r\n try {\r\n _isWebWorker = !!(self && self instanceof WorkerGlobalScope);\r\n }\r\n catch (e) {\r\n _isWebWorker = false;\r\n }\r\n }\r\n return _isWebWorker;\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance, ajaxDataId) {\r\n var _a;\r\n var result = false;\r\n if (isXhrSupported()) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n var xhrData = {\r\n xh: [],\r\n i: (_a = {},\r\n _a[ajaxDataId] = {},\r\n _a)\r\n };\r\n xhr[AJAX_DATA_CONTAINER] = xhrData;\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Internal helper to fetch the SDK instance tracking data for this XHR request\r\n * @param xhr\r\n * @param ajaxDataId\r\n * @returns\r\n */\r\nvar _getAjaxData = function (xhr, ajaxDataId) {\r\n if (xhr && ajaxDataId && xhr[AJAX_DATA_CONTAINER]) {\r\n return (xhr[AJAX_DATA_CONTAINER].i || {})[ajaxDataId];\r\n }\r\n return null;\r\n};\r\n/**\r\n * @ignore\r\n * Internal helper to track the singleton shared tracking headers, so we can attempt to not create headers\r\n * that might cause an issue if multiple values are populated.\r\n * @param xhr - The instrumented XHR instance\r\n */\r\nvar _addSharedXhrHeaders = function (xhr, name, value) {\r\n if (xhr) {\r\n var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;\r\n if (headers) {\r\n headers.push({\r\n n: name,\r\n v: value\r\n });\r\n }\r\n }\r\n};\r\nvar _isHeaderSet = function (xhr, name) {\r\n var isPresent = false;\r\n if (xhr) {\r\n var headers = (xhr[AJAX_DATA_CONTAINER] || {}).xh;\r\n if (headers) {\r\n arrForEach(headers, function (header) {\r\n if (header.n === name) {\r\n isPresent = true;\r\n return -1;\r\n }\r\n });\r\n }\r\n }\r\n return isPresent;\r\n};\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr, ajaxDataId) {\r\n var result = \"\";\r\n try {\r\n var ajaxData = _getAjaxData(xhr, ajaxDataId);\r\n if (ajaxData && ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {\r\n result += \"(url: '\" + ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] + \"')\";\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (callDetails) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(callDetails[_DYN_INST /* @min:%2einst */], ajaxMonitorInstance._ajaxDataId),\r\n exception: dumpObj(callDetails.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nfunction _addHandler(container, id, theFunc) {\r\n var theHandler = {\r\n id: id,\r\n fn: theFunc\r\n };\r\n container.push(theHandler);\r\n return {\r\n remove: function () {\r\n arrForEach(container, function (initializer, idx) {\r\n if (initializer.id === theHandler.id) {\r\n container.splice(idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n}\r\nfunction _processDependencyContainer(core, container, details, message) {\r\n var result = true;\r\n arrForEach(container, function (theFunc, idx) {\r\n try {\r\n if (theFunc.fn.call(null, details) === false) {\r\n result = false;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency \" + message + \" [#\" + idx + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n return result;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = {\r\n core: core,\r\n xhr: xhr,\r\n input: input,\r\n init: init,\r\n traceId: ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],\r\n spanId: ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],\r\n traceFlags: ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],\r\n context: ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},\r\n aborted: !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */]\r\n };\r\n _processDependencyContainer(core, listeners, details, \"listener\");\r\n ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];\r\n ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];\r\n }\r\n}\r\nvar BLOB_CORE = \"*.blob.core.\";\r\nexport var DfltAjaxCorrelationHeaderExDomains = deepFreeze([\r\n BLOB_CORE + \"windows.net\",\r\n BLOB_CORE + \"chinacloudapi.cn\",\r\n BLOB_CORE + \"cloudapi.de\",\r\n BLOB_CORE + \"usgovcloudapi.net\"\r\n]);\r\nvar _internalExcludeEndpoints = [\r\n /https:\\/\\/[^\\/]*(\\.pipe\\.aria|aria\\.pipe|events\\.data|collector\\.azure)\\.[^\\/]+\\/(OneCollector\\/1|Collector\\/3)\\.0/i\r\n];\r\nfunction _getDefaultConfig() {\r\n var config = {\r\n maxAjaxCallsPerView: 500,\r\n disableAjaxTracking: false,\r\n disableFetchTracking: false,\r\n excludeRequestFromAutoTrackingPatterns: undefined,\r\n disableCorrelationHeaders: false,\r\n distributedTracingMode: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n correlationHeaderExcludedDomains: DfltAjaxCorrelationHeaderExDomains,\r\n correlationHeaderDomains: undefined,\r\n correlationHeaderExcludePatterns: undefined,\r\n appId: undefined,\r\n enableCorsCorrelation: false,\r\n enableRequestHeaderTracking: false,\r\n enableResponseHeaderTracking: false,\r\n enableAjaxErrorStatusText: false,\r\n enableAjaxPerfTracking: false,\r\n maxAjaxPerfLookupAttempts: 3,\r\n ajaxPerfLookupDelay: 25,\r\n ignoreHeaders: [\r\n \"Authorization\",\r\n \"X-API-Key\",\r\n \"WWW-Authenticate\"\r\n ],\r\n addRequestContext: undefined,\r\n addIntEndpoints: true\r\n };\r\n return config;\r\n}\r\nfunction _getEmptyConfig() {\r\n var emptyConfig = _getDefaultConfig();\r\n objForEachKey(emptyConfig, function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var _fetchInitialized; // fetch monitoring initialized\r\n var _xhrInitialized; // XHR monitoring initialized\r\n var _currentWindowHost;\r\n var _config;\r\n var _enableRequestHeaderTracking;\r\n var _enableAjaxErrorStatusText;\r\n var _trackAjaxAttempts;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking;\r\n var _maxAjaxCallsPerView;\r\n var _enableResponseHeaderTracking;\r\n var _disabledUrls;\r\n var _disableAjaxTracking;\r\n var _disableFetchTracking;\r\n var _excludeRequestFromAutoTrackingPatterns;\r\n var _addRequestContext;\r\n var _evtNamespace;\r\n var _ajaxDataId;\r\n var _dependencyHandlerId;\r\n var _dependencyListeners;\r\n var _dependencyInitializers;\r\n dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n _populateDefaults(config);\r\n _instrumentXhr();\r\n _instrumentFetch();\r\n _populateContext();\r\n }\r\n };\r\n _self._doTeardown = function () {\r\n _initDefaults();\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);\r\n };\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);\r\n if (input || input === \"\") { // Fetch\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n var headers = new Headers(init[_DYN_HEADERS /* @min:%2eheaders */] || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n init[_DYN_HEADERS /* @min:%2eheaders */] = headers;\r\n }\r\n return init;\r\n }\r\n else if (xhr) { // XHR\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n if (!_isHeaderSet(xhr, RequestHeaders[3 /* eRequestHeaders.requestIdHeader */])) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[3 /* eRequestHeaders.requestIdHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n if (!_isHeaderSet(xhr, RequestHeaders[0 /* eRequestHeaders.requestContextHeader */])) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[0 /* eRequestHeaders.requestContextHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n if (!_isHeaderSet(xhr, RequestHeaders[4 /* eRequestHeaders.traceParentHeader */])) {\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n else {\r\n _throwInternalWarning(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, \"Unable to set [\" + RequestHeaders[4 /* eRequestHeaders.traceParentHeader */] + \"] as it has already been set by another instance\");\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 2 /* eDistributedTracingModes.W3C */\r\n || _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id[_DYN_LENGTH /* @min:%2elength */] - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n }\r\n var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */].track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n _self.addDependencyListener = function (dependencyListener) {\r\n return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);\r\n };\r\n _self.addDependencyInitializer = function (dependencyInitializer) {\r\n return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);\r\n };\r\n function _initDefaults() {\r\n var location = getLocation();\r\n _fetchInitialized = false; // fetch monitoring initialized\r\n _xhrInitialized = false; // XHR monitoring initialized\r\n _currentWindowHost = location && location.host && location.host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _config = AjaxMonitor.getEmptyConfig();\r\n _enableRequestHeaderTracking = false;\r\n _enableAjaxErrorStatusText = false;\r\n _trackAjaxAttempts = 0;\r\n _context = null;\r\n _isUsingW3CHeaders = false;\r\n _isUsingAIHeaders = false;\r\n _markPrefix = null;\r\n _enableAjaxPerfTracking = false;\r\n _maxAjaxCallsPerView = 0;\r\n _enableResponseHeaderTracking = false;\r\n _disabledUrls = {};\r\n _disableAjaxTracking = false;\r\n _disableFetchTracking = false;\r\n _excludeRequestFromAutoTrackingPatterns = null;\r\n _addRequestContext = null;\r\n _evtNamespace = null;\r\n _dependencyHandlerId = 0;\r\n _dependencyListeners = [];\r\n _dependencyInitializers = [];\r\n _ajaxDataId = createUniqueNamespace(\"ajaxData\");\r\n _self._ajaxDataId = _ajaxDataId;\r\n }\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n // Reset to the empty config\r\n _config = _getEmptyConfig();\r\n var defaultConfig = _getDefaultConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);\r\n });\r\n var distributedTracingMode = _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */];\r\n _enableRequestHeaderTracking = _config[_DYN_ENABLE_REQUEST_HEADE6 /* @min:%2eenableRequestHeaderTracking */];\r\n _enableAjaxErrorStatusText = _config[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:%2eenableAjaxErrorStatusText */];\r\n _enableAjaxPerfTracking = _config[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:%2eenableAjaxPerfTracking */];\r\n _maxAjaxCallsPerView = _config[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:%2emaxAjaxCallsPerView */];\r\n _enableResponseHeaderTracking = _config[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:%2eenableResponseHeaderTracking */];\r\n _excludeRequestFromAutoTrackingPatterns = [].concat(_config[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _config.addIntEndpoints !== false ? _internalExcludeEndpoints : []);\r\n _addRequestContext = _config[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];\r\n _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey[_DYN_LENGTH /* @min:%2elength */] > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey[_DYN_LENGTH /* @min:%2elength */] - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n _disableAjaxTracking = !!_config[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:%2edisableAjaxTracking */];\r\n _disableFetchTracking = !!_config[_DYN_DISABLE_FETCH_TRACKI13 /* @min:%2edisableFetchTracking */];\r\n }\r\n function _populateContext() {\r\n var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (propExt) {\r\n _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n function _canIncludeHeaders(header) {\r\n var rlt = true;\r\n if (header || _config.ignoreHeaders) {\r\n arrForEach(_config.ignoreHeaders, (function (key) {\r\n if (key[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === header[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) {\r\n rlt = false;\r\n return -1;\r\n }\r\n }));\r\n }\r\n return rlt;\r\n }\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (!_disableFetchTracking && !_fetchInitialized) {\r\n _addHook(InstrumentFunc(global, STR_FETCH, {\r\n ns: _evtNamespace,\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (!_disableFetchTracking && _fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n if (!_disableFetchTracking) {\r\n var fetchData_1 = callDetails.ctx().data;\r\n if (fetchData_1) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {})[_DYN_STATUS /* @min:%2estatus */], input, response, fetchData_1, function () {\r\n var ajaxResponse = {\r\n statusText: (response || {})[_DYN_STATUS_TEXT /* @min:%2estatusText */],\r\n headerMap: null,\r\n correlationContext: _getFetchCorrelationContext(response)\r\n };\r\n if (_enableResponseHeaderTracking && response) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n if (_canIncludeHeaders(name)) {\r\n responseHeaderMap_1[name] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message || dumpObj(reason) });\r\n throw reason;\r\n });\r\n }\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch\" + ERROR_POSTFIX)\r\n }, true, isWebWorker()));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _addHook(InstrumentFunc(global, STR_FETCH, {\r\n ns: _evtNamespace,\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[STR_FETCH].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _addHook(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self, _ajaxDataId) && !_disableAjaxTracking && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, method, url, async) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, ajaxData, true)) {\r\n if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {\r\n // Only create a single ajaxData (even when multiple AI instances are running)\r\n ajaxData = _openHandler(xhr, method, url, async);\r\n }\r\n // always attach to the on ready state change (required for handling multiple instances)\r\n _attachToOnReadyStateChange(xhr, ajaxData);\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + \".open\" + ERROR_POSTFIX)\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, context) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (_isMonitoredXhrInstance(xhr, ajaxData) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {\r\n ajaxData[_DYN_ABORTED /* @min:%2eaborted */] = 1;\r\n ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + \".abort\" + ERROR_POSTFIX)\r\n });\r\n // Instrument setRequestHeader\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n ns: _evtNamespace,\r\n req: function (callDetails, header, value) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = callDetails[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n if (ajaxData && _isMonitoredXhrInstance(xhr, ajaxData)) {\r\n _addSharedXhrHeaders(xhr, header, value);\r\n if (_enableRequestHeaderTracking && _canIncludeHeaders(header)) {\r\n if (ajaxData) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;\r\n }\r\n }\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + \".setRequestHeader\" + ERROR_POSTFIX)\r\n });\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n var theRegex = regex;\r\n if (isString(regex)) {\r\n theRegex = new RegExp(regex);\r\n }\r\n if (!isDisabled) {\r\n isDisabled = theRegex.test(theUrl);\r\n }\r\n });\r\n // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n if (isDisabled) {\r\n return isDisabled;\r\n }\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) { // fetch\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n isDisabled = true;\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// Verifies that particular instance of XMLHttpRequest needs to be monitored\r\n /// Optional parameter. True if ajaxData must be excluded from verification\r\n /// True if instance needs to be monitored, otherwise false\r\n function _isMonitoredXhrInstance(xhr, ajaxData, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(ajaxData);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n // Fall back\r\n if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n }\r\n return distributedTraceCtx;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var xhrRequestData = xhr[AJAX_DATA_CONTAINER] = (xhr[AJAX_DATA_CONTAINER] || { xh: [], i: {} });\r\n var ajaxDataCntr = xhrRequestData.i = (xhrRequestData.i || {});\r\n var ajaxData = ajaxDataCntr[_ajaxDataId] = (ajaxDataCntr[_ajaxDataId] || new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx()));\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;\r\n ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */] = true;\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};\r\n ajaxData.async = async;\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n return ajaxData;\r\n }\r\n function _attachToOnReadyStateChange(xhr, ajaxData) {\r\n ajaxData.xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = eventOn(xhr, \"readystatechange\", function () {\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr, ajaxData)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + \" 'readystatechange' event handler\" + ERROR_POSTFIX, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),\r\n exception: exceptionText\r\n });\r\n }\r\n }\r\n }, _evtNamespace);\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr[_DYN_RESPONSE_TEXT /* @min:%2eresponseText */];\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = _getAjaxData(xhr, _ajaxDataId);\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + \"ajax call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var ajaxResponse = {\r\n statusText: xhr[_DYN_STATUS_TEXT /* @min:%2estatusText */],\r\n headerMap: null,\r\n correlationContext: _getAjaxCorrelationContext(xhr),\r\n type: xhr.responseType,\r\n responseText: _getResponseText(xhr),\r\n response: xhr[_DYN_RESPONSE /* @min:%2eresponse */]\r\n };\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n if (_canIncludeHeaders(header)) {\r\n responseHeaderMap_2[header] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n var properties = void 0;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: xhr[_DYN_STATUS /* @min:%2estatus */], xhr: xhr });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n var xhrRequestData = (xhr[AJAX_DATA_CONTAINER] || { i: {} });\r\n var ajaxDataCntr = (xhrRequestData.i || {});\r\n if (ajaxDataCntr[_ajaxDataId]) {\r\n ajaxDataCntr[_ajaxDataId] = null;\r\n }\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n try {\r\n var responseHeadersString = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(xhr, _ajaxDataId),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */] = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */];\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:%2eajaxPerfLookupDelay */];\r\n var requestUrl = ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */];\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries[_DYN_LENGTH /* @min:%2elength */] - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry[_DYN_NAME /* @min:%2ename */], requestUrl) !== -1 || _indexOf(requestUrl, entry[_DYN_NAME /* @min:%2ename */]) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry[_DYN_NAME /* @min:%2ename */] === perfMark[_DYN_NAME /* @min:%2ename */]) {\r\n // We hit the start event\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] = perfTiming;\r\n break;\r\n }\r\n if (entry[_DYN_START_TIME /* @min:%2estartTime */] < perfMark[_DYN_START_TIME /* @min:%2estartTime */] - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) { // - this is a sync request\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n if (input instanceof Request) {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init[_DYN_METHOD /* @min:%2emethod */]) {\r\n method = init[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init[_DYN_HEADERS /* @min:%2eheaders */] : 0) || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n if (_canIncludeHeaders(key)) {\r\n requestHeaders[key] = value;\r\n }\r\n });\r\n }\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = requestHeaders;\r\n _createMarkId(STR_FETCH, ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (isString(input)) {\r\n result += \"(url: '\".concat(input, \"')\");\r\n }\r\n else {\r\n result += \"(url: '\".concat(input.url, \"')\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + \"fetch call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;\r\n _findPerfResourceEntry(STR_FETCH, ajaxData, function () {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n var properties;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: status, request: input, response: response });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response[_DYN_HEADERS /* @min:%2eheaders */]) {\r\n try {\r\n var responseHeader = response[_DYN_HEADERS /* @min:%2eheaders */].get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n }\r\n function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {\r\n var result = true;\r\n var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = {\r\n item: dependency,\r\n properties: properties,\r\n sysProperties: systemProperties,\r\n context: ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,\r\n aborted: ajaxData ? !!ajaxData[_DYN_ABORTED /* @min:%2eaborted */] : false\r\n };\r\n result = _processDependencyContainer(core, initializers, details, \"initializer\");\r\n }\r\n if (result) {\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AjaxMonitor.prototype.initialize.\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyData.\r\n// Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.\r\n// Removed Stub for AjaxMonitor.prototype.addDependencyListener.\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n AjaxMonitor.getDefaultConfig = _getDefaultConfig;\r\n AjaxMonitor.getEmptyConfig = _getEmptyConfig;\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n//# sourceMappingURL=Application.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n//# sourceMappingURL=Device.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SESSION_MANAGER = \"sessionManager\"; // Count: 3\r\nexport var _DYN_UPDATE = \"update\"; // Count: 4\r\nexport var _DYN_IS_USER_COOKIE_SET = \"isUserCookieSet\"; // Count: 4\r\nexport var _DYN_IS_NEW_USER = \"isNewUser\"; // Count: 4\r\nexport var _DYN_GET_TRACE_CTX = \"getTraceCtx\"; // Count: 3\r\nexport var _DYN_TELEMETRY_TRACE = \"telemetryTrace\"; // Count: 3\r\nexport var _DYN_APPLY_SESSION_CONTEX0 = \"applySessionContext\"; // Count: 2\r\nexport var _DYN_APPLY_APPLICATION_CO1 = \"applyApplicationContext\"; // Count: 2\r\nexport var _DYN_APPLY_DEVICE_CONTEXT = \"applyDeviceContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATION_CONT2 = \"applyOperationContext\"; // Count: 2\r\nexport var _DYN_APPLY_USER_CONTEXT = \"applyUserContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATING_SYST3 = \"applyOperatingSystemContxt\"; // Count: 2\r\nexport var _DYN_APPLY_LOCATION_CONTE4 = \"applyLocationContext\"; // Count: 2\r\nexport var _DYN_APPLY_INTERNAL_CONTE5 = \"applyInternalContext\"; // Count: 2\r\nexport var _DYN_ACCOUNT_ID = \"accountId\"; // Count: 8\r\nexport var _DYN_SDK_EXTENSION = \"sdkExtension\"; // Count: 4\r\nexport var _DYN_GET_SESSION_ID = \"getSessionId\"; // Count: 4\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 7\r\nexport var _DYN_SESSION_COOKIE_POSTF6 = \"sessionCookiePostfix\"; // Count: 4\r\nexport var _DYN_USER_COOKIE_POSTFIX = \"userCookiePostfix\"; // Count: 4\r\nexport var _DYN_ID_LENGTH = \"idLength\"; // Count: 5\r\nexport var _DYN_GET_NEW_ID = \"getNewId\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 4\r\nexport var _DYN_AUTOMATIC_SESSION = \"automaticSession\"; // Count: 5\r\nexport var _DYN_AUTHENTICATED_ID = \"authenticatedId\"; // Count: 6\r\nexport var _DYN_SESSION_EXPIRATION_M7 = \"sessionExpirationMs\"; // Count: 5\r\nexport var _DYN_SESSION_RENEWAL_MS = \"sessionRenewalMs\"; // Count: 4\r\nexport var _DYN_CONFIG = \"config\"; // Count: 4\r\nexport var _DYN_ACQUISITION_DATE = \"acquisitionDate\"; // Count: 5\r\nexport var _DYN_RENEWAL_DATE = \"renewalDate\"; // Count: 4\r\nexport var _DYN_COOKIE_DOMAIN = \"cookieDomain\"; // Count: 3\r\nexport var _DYN_JOIN = \"join\"; // Count: 5\r\nexport var _DYN_COOKIE_SEPARATOR = \"cookieSeparator\"; // Count: 5\r\nexport var _DYN_AUTH_USER_COOKIE_NAM8 = \"authUserCookieName\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_SDK_EXTENSION } from \"../__DynamicConstants\";\r\nvar Version = '2.8.18';\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config) {\r\n this.sdkVersion = (config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */] && config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() ? config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n//# sourceMappingURL=Internal.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n//# sourceMappingURL=Location.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, dateNow, dumpObj, getExceptionName, isFunction, newId, safeGetCookieMgr, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACQUISITION_DATE, _DYN_AUTOMATIC_SESSION, _DYN_CONFIG, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_RENEWAL_DATE, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_EXPIRATION_M7, _DYN_SESSION_RENEWAL_MS, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nvar cookieNameConst = \"ai_session\";\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!isFunction(config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */])) {\r\n config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */] = function () { return _SessionManager.acquisitionSpan; };\r\n }\r\n if (!isFunction(config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */])) {\r\n config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */] = function () { return _SessionManager.renewalSpan; };\r\n }\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n var sessionCookiePostfix = (_self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]()) ?\r\n _self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]() :\r\n ((_self.config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() : \"\");\r\n _storageNamePrefix = function () { return cookieNameConst + sessionCookiePostfix; };\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */] = new Session();\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n var sessionExpirationMs = _self.config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]();\r\n if (!isExpired && sessionExpirationMs > 0) {\r\n var sessionRenewalMs = _self.config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n var timeSinceAcqMs = nowMs - session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n var timeSinceRenewalMs = nowMs - session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */];\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n _setStorage(session.id, session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */], session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */]);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens[_DYN_LENGTH /* @min:%2elength */] >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = acqMs;\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var theConfig = (_self[_DYN_CONFIG /* @min:%2econfig */] || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n _self.automaticSession.id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */][_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = nowMs;\r\n _setCookie(_self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */], nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = nowMs;\r\n var config = _self[_DYN_CONFIG /* @min:%2econfig */];\r\n var renewalPeriodMs = config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]()) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */] ? config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */]() : null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires.\r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix(), cookie.join(\"|\"), config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]() > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal][_DYN_JOIN /* @min:%2ejoin */](\"|\"));\r\n }\r\n });\r\n }\r\n// Removed Stub for _SessionManager.prototype.update.\r\n// Removed Stub for _SessionManager.prototype.backup.\r\n _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n//# sourceMappingURL=Session.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n name = location.pathname;\r\n }\r\n _self.name = dataSanitizeString(logger, name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n//# sourceMappingURL=TelemetryTrace.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, newId, safeGetCookieMgr, safeGetLogger, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_AUTHENTICATED_ID, _DYN_AUTH_USER_COOKIE_NAM8, _DYN_CONFIG, _DYN_COOKIE_SEPARATOR, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"../__DynamicConstants\";\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== \"string\" ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core) {\r\n /**\r\n * A flag indicating whether this represents a new user\r\n */\r\n this.isNewUser = false;\r\n /**\r\n * A flag indicating whether the user cookie has been set\r\n */\r\n this.isUserCookieSet = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _storageNamePrefix;\r\n dynamicProto(User, this, function (_self) {\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n var userCookiePostfix = (_self.config[_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]() : \"\";\r\n _storageNamePrefix = function () { return User.userCookieName + userCookiePostfix; };\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(_storageNamePrefix());\r\n if (cookie) {\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var params = cookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (params[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self.id = params[0];\r\n // we already have a cookie\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = !!_self.id;\r\n }\r\n }\r\n function _generateNewId() {\r\n var theConfig = (config || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n var id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? config[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n return id;\r\n }\r\n function _generateNewCookie(userId) {\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = true;\r\n var newCookie = [userId, acqStr];\r\n return newCookie;\r\n }\r\n function _setUserCookie(cookie) {\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000\r\n var oneYear = 31536000;\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = _cookieManager.set(_storageNamePrefix(), cookie, oneYear);\r\n }\r\n if (!_self.id) {\r\n _self.id = _generateNewId();\r\n var newCookie = _generateNewCookie(_self.id);\r\n _setUserCookie(newCookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"ai_session\" : \"ai_session\";\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility.\r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] ? config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */]() : undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: |\r\n var authCookie = _cookieManager.get(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (authCookieString[0]) {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authCookieString[0];\r\n }\r\n if (authCookieString[_DYN_LENGTH /* @min:%2elength */] > 1 && authCookieString[1]) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = authCookieString[1];\r\n }\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authenticatedUserId;\r\n var authCookie = _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */];\r\n if (accountId) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = accountId;\r\n authCookie = [_self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], _self.accountId][_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */], encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = null;\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = null;\r\n _cookieManager.del(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (userId) {\r\n // Optimizations to avoid setting and processing the cookie when not needed\r\n if (_self.id !== userId || !_self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n var user_id = userId ? userId : _generateNewId();\r\n var user_cookie = _generateNewCookie(user_id);\r\n _setUserCookie(user_cookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for User.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.clearAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.update.\r\n User.cookieSeparator = \"|\";\r\n User.userCookieName = \"ai_user\";\r\n User.authUserCookieName = \"ai_authUser\";\r\n return User;\r\n}());\r\nexport { User };\r\n//# sourceMappingURL=User.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* TelemetryContext.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CtxTagKeys, Extensions, PageView, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalLogMessage, getSetValue, hasWindow, isNullOrUndefined, isString, objKeys, setValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nimport { User } from \"./Context/User\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_AUTHENTICATED_ID, _DYN_AUTOMATIC_SESSION, _DYN_GET_SESSION_ID, _DYN_LENGTH, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE } from \"./__DynamicConstants\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name])[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n delete target[name];\r\n }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig, previousTraceCtx) {\r\n var _this = this;\r\n var logger = core.logger;\r\n this.appId = function () { return null; };\r\n this[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () { return null; };\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig);\r\n if (hasWindow()) {\r\n _self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] = new _SessionManager(defaultConfig, core);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core);\r\n var traceId = void 0;\r\n var parentId = void 0;\r\n var name_1;\r\n if (previousTraceCtx) {\r\n traceId = previousTraceCtx.getTraceId();\r\n parentId = previousTraceCtx.getSpanId();\r\n name_1 = previousTraceCtx.getName();\r\n }\r\n _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */] = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n _self.session = new Session();\r\n }\r\n _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () {\r\n var session = _self.session;\r\n var sesId = null;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n sesId = session.id;\r\n }\r\n else {\r\n // Gets the automatic session if it exists or an empty object\r\n var autoSession = (_self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] || {})[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n }\r\n return sesId;\r\n };\r\n _self[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */] = function (evt, itemCtx) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */](), isString);\r\n };\r\n _self[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */] = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */] = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */] = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */] = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, dataSanitizeString(logger, internal.sdkVersion, 64), isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */] = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */] = function (evt, itemCtx) {\r\n var telemetryTrace = _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */];\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString, isNullOrUndefined);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString, isNullOrUndefined);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString, isNullOrUndefined);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */] = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user[_DYN_ACCOUNT_ID /* @min:%2eaccountId */], isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for TelemetryContext.prototype.applySessionContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperatingSystemContxt.\r\n// Removed Stub for TelemetryContext.prototype.applyApplicationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyDeviceContext.\r\n// Removed Stub for TelemetryContext.prototype.applyInternalContext.\r\n// Removed Stub for TelemetryContext.prototype.applyLocationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyWebContext.\r\n// Removed Stub for TelemetryContext.prototype.applyUserContext.\r\n// Removed Stub for TelemetryContext.prototype.cleanUp.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n TelemetryContext.__ieDyn=1;\n\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n//# sourceMappingURL=TelemetryContext.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* PropertiesPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, PageView, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace, utlSetStoragePrefix } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _InternalLogMessage, _logInternalMessage, createProcessTelemetryContext, getNavigator, getSetValue, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_GET_SESSION_ID, _DYN_GET_TRACE_CTX, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_NAME_PREFIX, _DYN_SDK_EXTENSION, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"./__DynamicConstants\";\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _extensionConfig;\r\n var _distributedTraceCtx;\r\n var _previousTraceCtx;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _populateDefaults(config);\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n }\r\n else {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_self.context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _self.context.session.id !== \"string\" && theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */]) {\r\n theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */][_DYN_UPDATE /* @min:%2eupdate */]();\r\n }\r\n }\r\n var userCtx = theContext.user;\r\n if (userCtx && !userCtx[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n userCtx[_DYN_UPDATE /* @min:%2eupdate */](theContext.user.id);\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (userCtx && userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */]) {\r\n userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n var core = (unloadCtx || {}).core();\r\n if (core && core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */]) {\r\n var traceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n if (traceCtx === _distributedTraceCtx) {\r\n core.setTraceCtx(_previousTraceCtx);\r\n }\r\n }\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _extensionConfig = null;\r\n _distributedTraceCtx = null;\r\n _previousTraceCtx = null;\r\n }\r\n function _populateDefaults(config) {\r\n var identifier = _self.identifier;\r\n var core = _self.core;\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n _extensionConfig = _extensionConfig || {};\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n if (config.storagePrefix) {\r\n utlSetStoragePrefix(config.storagePrefix);\r\n }\r\n _previousTraceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n _self.context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx);\r\n _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */], _previousTraceCtx);\r\n core.setTraceCtx(_distributedTraceCtx);\r\n _self.context.appId = function () {\r\n var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n };\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n }\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */](evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */](evt, itemCtx); // legacy tags\r\n ctx[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */](evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n PropertiesPlugin.getDefaultConfig = function () {\r\n var _a;\r\n var defaultValue;\r\n var nullValue = null;\r\n var defaultConfig = (_a = {\r\n instrumentationKey: function () { return defaultValue; }\r\n },\r\n _a[_DYN_ACCOUNT_ID /* @min:accountId */] = function () { return nullValue; },\r\n _a.sessionRenewalMs = function () { return 30 * 60 * 1000; },\r\n _a.samplingPercentage = function () { return 100; },\r\n _a.sessionExpirationMs = function () { return 24 * 60 * 60 * 1000; },\r\n _a[_DYN_COOKIE_DOMAIN /* @min:cookieDomain */] = function () { return nullValue; },\r\n _a[_DYN_SDK_EXTENSION /* @min:sdkExtension */] = function () { return nullValue; },\r\n _a.isBrowserLinkTrackingEnabled = function () { return false; },\r\n _a.appId = function () { return nullValue; },\r\n _a[_DYN_GET_SESSION_ID /* @min:getSessionId */] = function () { return nullValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SESSION_COOKIE_POSTF6 /* @min:sessionCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_USER_COOKIE_POSTFIX /* @min:userCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_ID_LENGTH /* @min:idLength */] = function () { return 22; },\r\n _a[_DYN_GET_NEW_ID /* @min:getNewId */] = function () { return nullValue; },\r\n _a);\r\n return defaultConfig;\r\n };\r\n// Removed Stub for PropertiesPlugin.prototype.initialize.\r\n// Removed Stub for PropertiesPlugin.prototype.processTelemetry.\r\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n//# sourceMappingURL=PropertiesPlugin.js.map","/*\n * Application Insights JavaScript SDK - Web, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nvar _AUTHENTICATED_USER_CONTEXT = \"AuthenticatedUserContext\";\r\nvar _TRACK = \"track\";\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_SNIPPET = \"snippet\";\r\nexport var STR_GET_COOKIE_MGR = \"getCookieMgr\";\r\nexport var STR_START_TRACK_PAGE = \"startTrackPage\";\r\nexport var STR_STOP_TRACK_PAGE = \"stopTrackPage\";\r\nexport var STR_FLUSH = \"flush\";\r\nexport var STR_START_TRACK_EVENT = \"startTrackEvent\";\r\nexport var STR_STOP_TRACK_EVENT = \"stopTrackEvent\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZER = \"addTelemetryInitializer\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZERS = STR_ADD_TELEMETRY_INITIALIZER + \"s\";\r\nexport var STR_POLL_INTERNAL_LOGS = \"pollInternalLogs\";\r\nexport var STR_GET_PLUGIN = \"getPlugin\";\r\nexport var STR_EVT_NAMESPACE = \"evtNamespace\";\r\nexport var STR_TRACK_EVENT = _TRACK + \"Event\";\r\nexport var STR_TRACK_TRACE = _TRACK + \"Trace\";\r\nexport var STR_TRACK_METRIC = _TRACK + \"Metric\";\r\nexport var STR_TRACK_PAGE_VIEW = _TRACK + \"PageView\";\r\nexport var STR_TRACK_EXCEPTION = _TRACK + \"Exception\";\r\nexport var STR_TRACK_DEPENDENCY_DATA = _TRACK + \"DependencyData\";\r\nexport var STR_SET_AUTHENTICATED_USER_CONTEXT = \"set\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var STR_CLEAR_AUTHENTICATED_USER_CONTEXT = \"clear\" + _AUTHENTICATED_USER_CONTEXT;\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Web, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_UPDATE_SNIPPET_DEFIN0 = \"updateSnippetDefinitions\"; // Count: 4\r\nexport var _DYN_LOAD_APP_INSIGHTS = \"loadAppInsights\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 4\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 3\r\nexport var _DYN_DISABLE_EXCEPTION_TR2 = \"disableExceptionTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_EMIT_LINE_DELIMITED_3 = \"emitLineDelimitedJson\"; // Count: 2\r\nexport var _DYN_DIAGNOSTIC_LOG_INTER4 = \"diagnosticLogInterval\"; // Count: 6\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI5 = \"autoTrackPageVisitTime\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_DISABLE_AJAX_TRACKIN6 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V7 = \"maxAjaxCallsPerView\"; // Count: 3\r\nexport var _DYN_IS_BEACON_API_DISABL8 = \"isBeaconApiDisabled\"; // Count: 2\r\nexport var _DYN_DISABLE_CORRELATION_9 = \"disableCorrelationHeaders\"; // Count: 2\r\nexport var _DYN_CORRELATION_HEADER_E10 = \"correlationHeaderExcludedDomains\"; // Count: 2\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF11 = \"disableFlushOnBeforeUnload\"; // Count: 4\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL12 = \"disableFlushOnUnload\"; // Count: 3\r\nexport var _DYN_ENABLE_SESSION_STORA13 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_IS_COOKIE_USE_DISABL14 = \"isCookieUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_STORAGE_USE_DISAB15 = \"isStorageUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_BROWSER_LINK_TRAC16 = \"isBrowserLinkTrackingEnabled\"; // Count: 2\r\nexport var _DYN_ENABLE_CORS_CORRELAT17 = \"enableCorsCorrelation\"; // Count: 2\r\nexport var _DYN_CONFIG = \"config\"; // Count: 6\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 5\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_QUEUE = \"queue\"; // Count: 6\r\nexport var _DYN_CONNECTION_STRING = \"connectionString\"; // Count: 3\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN_APP_INSIGHTS = \"appInsights\"; // Count: 3\r\nexport var _DYN_DISABLE_IKEY_DEPRECA18 = \"disableIkeyDeprecationMessage\"; // Count: 2\r\nexport var _DYN_GET_TRANSMISSION_CON19 = \"getTransmissionControls\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 6\r\nexport var _DYN_ADD_HOUSEKEEPING_BEF20 = \"addHousekeepingBeforeUnload\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Web, 2.8.18\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { AnalyticsPluginIdentifier, BreezeChannelIdentifier, ConfigurationManager, ConnectionStringParser, ContextTagKeys, CorrelationIdHelper, CtxTagKeys, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Data, DataSanitizer, DateTimeUtils, DisabledPropertyName, DistributedTracingModes, Envelope, Event, Exception, Extensions, HttpMethod, Metric, PageView, PageViewPerformance, ProcessLegacy, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, SampleRate, SeverityLevel, TelemetryItemCreator, Trace, UrlHelper, Util, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\nimport { AppInsightsCore, _throwInternal, addPageHideEventListener, addPageUnloadEventListener, arrForEach, arrIndexOf, createUniqueNamespace, doPerf, hasDocument, hasWindow, isArray, isFunction, isNullOrUndefined, isReactNative, isString, mergeEvtNamespace, objForEachKey, proxyAssign, proxyFunctions, removePageHideEventListener, removePageUnloadEventListener, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { STR_ADD_TELEMETRY_INITIALIZER, STR_CLEAR_AUTHENTICATED_USER_CONTEXT, STR_EVT_NAMESPACE, STR_FLUSH, STR_GET_COOKIE_MGR, STR_GET_PLUGIN, STR_POLL_INTERNAL_LOGS, STR_SET_AUTHENTICATED_USER_CONTEXT, STR_SNIPPET, STR_START_TRACK_EVENT, STR_START_TRACK_PAGE, STR_STOP_TRACK_EVENT, STR_STOP_TRACK_PAGE, STR_TRACK_DEPENDENCY_DATA, STR_TRACK_EVENT, STR_TRACK_EXCEPTION, STR_TRACK_METRIC, STR_TRACK_PAGE_VIEW, STR_TRACK_TRACE } from \"./InternalConstants\";\r\nimport { _DYN_ADD_HOUSEKEEPING_BEF20, _DYN_APP_INSIGHTS, _DYN_CONFIG, _DYN_CONNECTION_STRING, _DYN_CONTEXT, _DYN_DIAGNOSTIC_LOG_INTER4, _DYN_DISABLE_FLUSH_ON_BEF11, _DYN_DISABLE_FLUSH_ON_UNL12, _DYN_DISABLE_IKEY_DEPRECA18, _DYN_ENDPOINT_URL, _DYN_GET_TRANSMISSION_CON19, _DYN_INDEX_OF, _DYN_INSTRUMENTATION_KEY, _DYN_LOAD_APP_INSIGHTS, _DYN_ONUNLOAD_FLUSH, _DYN_PUSH, _DYN_QUEUE, _DYN_UPDATE_SNIPPET_DEFIN0, _DYN_VERSION } from \"./__DynamicConstants\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n STR_SNIPPET, \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\nvar fieldType = {\r\n Default: 0 /* FieldType.Default */,\r\n Required: 1 /* FieldType.Required */,\r\n Array: 2 /* FieldType.Array */,\r\n Hidden: 4 /* FieldType.Hidden */\r\n};\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n __proto__: null,\r\n PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n Util: Util,\r\n CorrelationIdHelper: CorrelationIdHelper,\r\n UrlHelper: UrlHelper,\r\n DateTimeUtils: DateTimeUtils,\r\n ConnectionStringParser: ConnectionStringParser,\r\n FieldType: fieldType,\r\n RequestHeaders: RequestHeaders,\r\n DisabledPropertyName: DisabledPropertyName,\r\n ProcessLegacy: ProcessLegacy,\r\n SampleRate: SampleRate,\r\n HttpMethod: HttpMethod,\r\n DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n Envelope: Envelope,\r\n Event: Event,\r\n Exception: Exception,\r\n Metric: Metric,\r\n PageView: PageView,\r\n RemoteDependencyData: RemoteDependencyData,\r\n Trace: Trace,\r\n PageViewPerformance: PageViewPerformance,\r\n Data: Data,\r\n SeverityLevel: SeverityLevel,\r\n ConfigurationManager: ConfigurationManager,\r\n ContextTagKeys: ContextTagKeys,\r\n DataSanitizer: DataSanitizer,\r\n TelemetryItemCreator: TelemetryItemCreator,\r\n CtxTagKeys: CtxTagKeys,\r\n Extensions: Extensions,\r\n DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _this = this;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var dependencies;\r\n var properties;\r\n var _sender;\r\n var _snippetVersion;\r\n var _evtNamespace;\r\n var _houseKeepingNamespace;\r\n var _core;\r\n dynamicProto(Initialization, this, function (_self) {\r\n _initDefaults();\r\n // initialize the queue and config in case they are undefined\r\n _snippetVersion = \"\" + (snippet.sv || snippet[_DYN_VERSION /* @min:%2eversion */] || \"\");\r\n snippet[_DYN_QUEUE /* @min:%2equeue */] = snippet[_DYN_QUEUE /* @min:%2equeue */] || [];\r\n snippet[_DYN_VERSION /* @min:%2eversion */] = snippet[_DYN_VERSION /* @min:%2eversion */] || 2.0; // Default to new version\r\n var config = snippet[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n if (config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]) {\r\n var cs = parseConnectionString(config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]);\r\n var ingest = cs.ingestionendpoint;\r\n config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = ingest ? (ingest + DEFAULT_BREEZE_PATH) : config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]; // only add /v2/track when from connectionstring\r\n config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = cs.instrumentationkey || config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n }\r\n _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */] = new AnalyticsPlugin();\r\n properties = new PropertiesPlugin();\r\n dependencies = new DependenciesPlugin();\r\n _sender = new Sender();\r\n _core = new AppInsightsCore();\r\n _self.core = _core;\r\n var isErrMessageDisabled = isNullOrUndefined(config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */]) ? true : config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */];\r\n if (!config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] && !isErrMessageDisabled) {\r\n _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"Instrumentation key support will end soon, see aka.ms/IkeyMigrate\");\r\n }\r\n _self[STR_SNIPPET /* @min:%2esnippet */] = snippet;\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n _getSKUDefaults();\r\n _self[STR_FLUSH /* @min:%2eflush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n });\r\n });\r\n }, null, async);\r\n };\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n if (channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]) {\r\n channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n }\r\n else {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n }\r\n });\r\n });\r\n };\r\n _self[_DYN_LOAD_APP_INSIGHTS /* @min:%2eloadAppInsights */] = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_snippetVersion)) {\r\n snippetVer += _snippetVersion;\r\n }\r\n if (legacyMode) {\r\n snippetVer += \".lg\";\r\n }\r\n if (_self[_DYN_CONTEXT /* @min:%2econtext */] && _self[_DYN_CONTEXT /* @min:%2econtext */].internal) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n snippet[field] = value;\r\n }\r\n });\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _self[_DYN_CONFIG /* @min:%2econfig */].extensions && _self[_DYN_CONFIG /* @min:%2econfig */].extensions.length > 0) {\r\n throwError(\"Extensions not allowed in legacy mode\");\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n var extensions = [];\r\n extensions[_DYN_PUSH /* @min:%2epush */](_sender);\r\n extensions[_DYN_PUSH /* @min:%2epush */](properties);\r\n extensions[_DYN_PUSH /* @min:%2epush */](dependencies);\r\n extensions[_DYN_PUSH /* @min:%2epush */](_self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */]);\r\n // initialize core\r\n _core.initialize(_self[_DYN_CONFIG /* @min:%2econfig */], extensions, logger, notificationManager);\r\n _self[_DYN_CONTEXT /* @min:%2econtext */] = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n if (_internalSdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */]) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc = _internalSdkSrc;\r\n }\r\n _updateSnippetProperties(_self[STR_SNIPPET /* @min:%2esnippet */]);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self[STR_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */](_self);\r\n });\r\n return _self;\r\n };\r\n _self[_DYN_UPDATE_SNIPPET_DEFIN0 /* @min:%2eupdateSnippetDefinitions */] = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, _self, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n });\r\n };\r\n _self.emptyQueue = function () {\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet[_DYN_QUEUE /* @min:%2equeue */])) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet[_DYN_QUEUE /* @min:%2equeue */].length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet[_DYN_QUEUE /* @min:%2equeue */][i];\r\n call();\r\n }\r\n _self.snippet[_DYN_QUEUE /* @min:%2equeue */] = undefined;\r\n delete _self.snippet[_DYN_QUEUE /* @min:%2equeue */];\r\n }\r\n }\r\n catch (exception) {\r\n var properties_1 = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties_1.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // eLoggingSeverity.WARNING,\r\n // _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */] = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n if (isFunction(_this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */])) {\r\n var loadedPlugin = _this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */](PropertiesPluginIdentifier);\r\n if (loadedPlugin) {\r\n var propertiesPlugin = loadedPlugin.plugin;\r\n if (propertiesPlugin && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */] && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager) {\r\n propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager.backup();\r\n }\r\n }\r\n }\r\n };\r\n var added = false;\r\n var excludePageUnloadEvents = appInsightsInstance.appInsights[_DYN_CONFIG /* @min:%2econfig */].disablePageUnloadEvents;\r\n if (!_houseKeepingNamespace) {\r\n _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */] && _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */]());\r\n }\r\n if (!appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_BEF11 /* @min:%2edisableFlushOnBeforeUnload */]) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n if (addPageUnloadEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n if (addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added && !isReactNative()) {\r\n _throwInternal(appInsightsInstance[_DYN_APP_INSIGHTS /* @min:%2eappInsights */].core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n }\r\n }\r\n if (!added && !appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_UNL12 /* @min:%2edisableFlushOnUnload */]) {\r\n // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace);\r\n }\r\n }\r\n };\r\n _self.getSender = function () {\r\n return _sender;\r\n };\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](isAsync);\r\n // Remove any registered event handlers\r\n if (_houseKeepingNamespace) {\r\n removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n removePageHideEventListener(null, _houseKeepingNamespace);\r\n }\r\n _core.unload && _core.unload(isAsync, unloadComplete, cbTimeout);\r\n };\r\n proxyFunctions(_self, _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */], [\r\n STR_GET_COOKIE_MGR,\r\n STR_TRACK_EVENT,\r\n STR_TRACK_PAGE_VIEW,\r\n \"trackPageViewPerformance\",\r\n STR_TRACK_EXCEPTION,\r\n \"_onerror\",\r\n STR_TRACK_TRACE,\r\n STR_TRACK_METRIC,\r\n STR_START_TRACK_PAGE,\r\n STR_STOP_TRACK_PAGE,\r\n STR_START_TRACK_EVENT,\r\n STR_STOP_TRACK_EVENT\r\n ]);\r\n proxyFunctions(_self, _getCurrentDependencies, [\r\n STR_TRACK_DEPENDENCY_DATA,\r\n \"addDependencyListener\",\r\n \"addDependencyInitializer\"\r\n ]);\r\n proxyFunctions(_self, _core, [\r\n STR_ADD_TELEMETRY_INITIALIZER,\r\n STR_POLL_INTERNAL_LOGS,\r\n \"stopPollingInternalLogs\",\r\n STR_GET_PLUGIN,\r\n \"addPlugin\",\r\n STR_EVT_NAMESPACE,\r\n \"addUnloadCb\",\r\n \"getTraceCtx\"\r\n ]);\r\n proxyFunctions(_self, function () {\r\n var context = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n return context ? context.user : null;\r\n }, [\r\n STR_SET_AUTHENTICATED_USER_CONTEXT,\r\n STR_CLEAR_AUTHENTICATED_USER_CONTEXT\r\n ]);\r\n function _getSKUDefaults() {\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] =\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] > 0 ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] : 10000;\r\n }\r\n // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n function _getCurrentDependencies() {\r\n return dependencies;\r\n }\r\n function _initDefaults() {\r\n _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n _houseKeepingNamespace = null;\r\n dependencies = null;\r\n properties = null;\r\n _sender = null;\r\n _snippetVersion = null;\r\n }\r\n });\r\n }\r\n // Analytics Plugin\r\n// Removed Stub for Initialization.prototype.getCookieMgr.\r\n// Removed Stub for Initialization.prototype.trackEvent.\r\n// Removed Stub for Initialization.prototype.trackPageView.\r\n// Removed Stub for Initialization.prototype.trackPageViewPerformance.\r\n// Removed Stub for Initialization.prototype.trackException.\r\n// Removed Stub for Initialization.prototype._onerror.\r\n// Removed Stub for Initialization.prototype.trackTrace.\r\n// Removed Stub for Initialization.prototype.trackMetric.\r\n// Removed Stub for Initialization.prototype.startTrackPage.\r\n// Removed Stub for Initialization.prototype.stopTrackPage.\r\n// Removed Stub for Initialization.prototype.startTrackEvent.\r\n// Removed Stub for Initialization.prototype.stopTrackEvent.\r\n// Removed Stub for Initialization.prototype.addTelemetryInitializer.\r\n // Properties Plugin\r\n// Removed Stub for Initialization.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for Initialization.prototype.clearAuthenticatedUserContext.\r\n // Dependencies Plugin\r\n// Removed Stub for Initialization.prototype.trackDependencyData.\r\n // Misc\r\n// Removed Stub for Initialization.prototype.flush.\r\n// Removed Stub for Initialization.prototype.onunloadFlush.\r\n// Removed Stub for Initialization.prototype.loadAppInsights.\r\n// Removed Stub for Initialization.prototype.updateSnippetDefinitions.\r\n// Removed Stub for Initialization.prototype.emptyQueue.\r\n// Removed Stub for Initialization.prototype.pollInternalLogs.\r\n// Removed Stub for Initialization.prototype.stopPollingInternalLogs.\r\n// Removed Stub for Initialization.prototype.addHousekeepingBeforeUnload.\r\n// Removed Stub for Initialization.prototype.getSender.\r\n// Removed Stub for Initialization.prototype.unload.\r\n// Removed Stub for Initialization.prototype.getPlugin.\r\n// Removed Stub for Initialization.prototype.addPlugin.\r\n// Removed Stub for Initialization.prototype.evtNamespace.\r\n// Removed Stub for Initialization.prototype.addUnloadCb.\r\n// Removed Stub for Initialization.prototype.addDependencyListener.\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n Initialization.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n// Removed Stub for Initialization.prototype.getTraceCtx.\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url = sdkSrc.toLowerCase();\r\n if (url) {\r\n var src = \"\";\r\n for (var idx = 0; idx < cdns.length; idx++) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](cdns[idx]) !== -1) {\r\n src = \"cdn\" + (idx + 1);\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/scripts/\") === -1) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/next/\") !== -1) {\r\n src += \"-next\";\r\n }\r\n else if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/beta/\") !== -1) {\r\n src += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n})();\r\n//# sourceMappingURL=Initialization.js.map","import { createStore, compose, applyMiddleware, combineReducers } from \"redux\";\r\n\r\nimport thunk from \"redux-thunk\";\r\nimport { lazyReducerEnhancer } from \"pwa-helpers/lazy-reducer-enhancer.js\";\r\nimport { ApplicationInsights } from \"@microsoft/applicationinsights-web\";\r\n\r\nconst devCompose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n\r\nfunction getInstrumentationKey() {\r\n let enviroment = window.location.host.toLowerCase();\r\n switch (enviroment) {\r\n case \"development\":\r\n return \"3249972f-3016-447a-834c-b74a3bc5da74\";\r\n case \"staging\":\r\n return \"ccc001a3-7bf5-4a10-b308-c9baef0e7c86\";\r\n case \"production\":\r\n return \"09fb2b54-62df-4299-b383-7db850b99d26\";\r\n default:\r\n return \"3249972f-3016-447a-834c-b74a3bc5da74\";\r\n }\r\n}\r\nexport const store = createStore(\r\n (state) => state,\r\n devCompose(lazyReducerEnhancer(combineReducers), applyMiddleware(thunk))\r\n);\r\n\r\nwindow.Algo.appInsights = new ApplicationInsights({\r\n config: {\r\n instrumentationKey: getInstrumentationKey(), \r\n disableCookiesUsage: true,\r\n },\r\n});\r\nwindow.Algo.appInsights.loadAppInsights();\r\nwindow.Algo.appInsights.trackEvent({ name: \"appInsights geladen\" });\r\n","import { css } from \"lit\";\r\n\r\nexport const SbAdmin2Styles = css`\r\n /*!\r\n* Start Bootstrap - SB Admin 2 v4.0.2 (https://startbootstrap.com/template-overviews/sb-admin-2)\r\n* Copyright 2013-2019 Start Bootstrap\r\n* Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap-sb-admin-2/blob/master/LICENSE)\r\n*/\r\n\r\n /*!\r\n* Bootstrap v4.3.1 (https://getbootstrap.com/)\r\n* Copyright 2011-2019 The Bootstrap Authors\r\n* Copyright 2011-2019 Twitter, Inc.\r\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\r\n*/\r\n :root {\r\n --white: #fff;\r\n --gray-dark: #404040;\r\n --primary: #4e73df;\r\n --secondary: #858796;\r\n --success: #3ca085;\r\n --info: #36b9cc;\r\n --warning: #f5bb00;\r\n --danger: #d34a4aff;\r\n --light: #f8f9fc;\r\n --white-grey: #d9d9d9;\r\n --dark: #5a5c69;\r\n --breakpoint-xs: 0;\r\n --breakpoint-sm: 576px;\r\n --breakpoint-md: 768px;\r\n --breakpoint-lg: 992px;\r\n --breakpoint-xl: 1200px;\r\n --font-family-sans-serif: \"Nunito\", -apple-system, BlinkMacSystemFont,\r\n \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif,\r\n \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\",\r\n \"Noto Color Emoji\";\r\n --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas,\r\n \"Liberation Mono\", \"Courier New\", monospace;\r\n }\r\n\r\n *,\r\n *::before,\r\n *::after {\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n }\r\n\r\n html {\r\n font-family: sans-serif;\r\n line-height: 1.15;\r\n -webkit-text-size-adjust: 100%;\r\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n }\r\n\r\n .handbuch {\r\n text-decoration: none;\r\n }\r\n .handbuch:focus {\r\n text-decoration: underline;\r\n }\r\n\r\n article,\r\n aside,\r\n figcaption,\r\n figure,\r\n footer,\r\n header,\r\n hgroup,\r\n main,\r\n nav,\r\n section {\r\n display: block;\r\n }\r\n\r\n body {\r\n margin: 0;\r\n font-family: \"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\",\r\n Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\",\r\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\r\n font-size: 1rem;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n color: var(--secondary);\r\n text-align: left;\r\n background-color: var(--white);\r\n overflow-x: scroll;\r\n }\r\n #progressContrainer {\r\n padding-left: 15px;\r\n }\r\n\r\n .input-group {\r\n display: inherit !important;\r\n }\r\n\r\n .invalid-feedback {\r\n display: inline;\r\n padding-left: 5px;\r\n }\r\n\r\n input.form-control {\r\n overflow: hidden !important;\r\n }\r\n\r\n input[type=\"file\"]::file-selector-button {\r\n display: none;\r\n }\r\n\r\n input[type=\"date\"]::-webkit-calendar-picker-indicator {\r\n display: none;\r\n }\r\n .fa-spin {\r\n color: var(--gray-dark) !important;\r\n }\r\n\r\n .details > tbody > tr > th,\r\n .details > tbody > tr {\r\n background: white !important;\r\n background-color: white !important;\r\n color: var(--gray-dark) !important;\r\n }\r\n\r\n table.details td {\r\n border: none !important;\r\n }\r\n\r\n table.details th:first-child {\r\n border-left: none !important;\r\n }\r\n\r\n table.details th:last-child {\r\n border-right: none !important;\r\n }\r\n\r\n table.details tfoot th:last-child,\r\n table.details td:last-child,\r\n table.details td:last-child {\r\n border-right: none !important;\r\n }\r\n\r\n table.details tfoot th:first-child,\r\n table.dataTable td:first-child,\r\n table.dataTable td:first-child {\r\n border-left: none !important;\r\n }\r\n [tabindex=\"-1\"]:focus {\r\n outline: 0 !important;\r\n }\r\n\r\n hr {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n height: 0;\r\n overflow: visible;\r\n }\r\n\r\n h1,\r\n h2,\r\n h3,\r\n h4,\r\n h5,\r\n h6 {\r\n margin-top: 0;\r\n margin-bottom: 0.5rem;\r\n }\r\n\r\n p {\r\n margin-top: 0;\r\n margin-bottom: 1rem;\r\n }\r\n\r\n abbr[title],\r\n abbr[data-original-title] {\r\n text-decoration: underline;\r\n -webkit-text-decoration: underline dotted;\r\n text-decoration: underline dotted;\r\n cursor: help;\r\n border-bottom: 0;\r\n -webkit-text-decoration-skip-ink: none;\r\n text-decoration-skip-ink: none;\r\n }\r\n\r\n address {\r\n margin-bottom: 1rem;\r\n font-style: normal;\r\n line-height: inherit;\r\n }\r\n\r\n ol,\r\n ul,\r\n dl {\r\n margin-top: 0;\r\n margin-bottom: 1rem;\r\n }\r\n\r\n ol ol,\r\n ul ul,\r\n ol ul,\r\n ul ol {\r\n margin-bottom: 0;\r\n }\r\n\r\n dt {\r\n font-weight: 700;\r\n }\r\n\r\n dd {\r\n margin-bottom: 0.5rem;\r\n margin-left: 0;\r\n }\r\n\r\n blockquote {\r\n margin: 0 0 1rem;\r\n }\r\n\r\n b,\r\n strong {\r\n font-weight: bolder;\r\n }\r\n\r\n small {\r\n font-size: 0, 835rem;\r\n }\r\n\r\n sub,\r\n sup {\r\n position: relative;\r\n font-size: 75%;\r\n line-height: 0;\r\n vertical-align: baseline;\r\n }\r\n\r\n sub {\r\n bottom: -0.25em;\r\n }\r\n\r\n sup {\r\n top: -0.5em;\r\n }\r\n\r\n a {\r\n color: var(--gray-dark) !important;\r\n background-color: transparent;\r\n }\r\n\r\n a:hover {\r\n color: var(--warning) !important;\r\n text-decoration: underline;\r\n }\r\n\r\n a:not([href]):not([tabindex]) {\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n\r\n a:not([href]):not([tabindex]):hover,\r\n a:not([href]):not([tabindex]):focus {\r\n color: inherit;\r\n text-decoration: none;\r\n }\r\n\r\n a:not([href]):not([tabindex]):focus {\r\n outline: 0;\r\n }\r\n\r\n .link {\r\n text-decoration: underline !important;\r\n }\r\n\r\n .link:hover {\r\n text-decoration: underline !important;\r\n }\r\n\r\n pre,\r\n code,\r\n kbd,\r\n samp {\r\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\r\n \"Courier New\", monospace;\r\n font-size: 1em;\r\n }\r\n\r\n pre {\r\n margin-top: 0;\r\n margin-bottom: 1rem;\r\n overflow: auto;\r\n }\r\n\r\n figure {\r\n margin: 0 0 1rem;\r\n }\r\n\r\n img {\r\n vertical-align: middle;\r\n border-style: none;\r\n }\r\n\r\n svg {\r\n overflow: hidden;\r\n vertical-align: middle;\r\n }\r\n\r\n caption {\r\n padding-top: 0.75rem;\r\n padding-bottom: 0.75rem;\r\n color: var(--secondary);\r\n text-align: left;\r\n caption-side: bottom;\r\n }\r\n\r\n th {\r\n text-align: inherit;\r\n }\r\n\r\n span.text {\r\n max-width: 225px;\r\n }\r\n\r\n span.text,\r\n label.col-form-label {\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n label {\r\n display: inline-block;\r\n margin-bottom: 0.5rem;\r\n }\r\n\r\n .transparentBtn {\r\n border: none;\r\n background-color: transparent;\r\n }\r\n\r\n .transparentBtn:hover {\r\n color: var(--warning);\r\n }\r\n\r\n button {\r\n border-radius: 0;\r\n }\r\n\r\n button:focus {\r\n outline: 1px dotted;\r\n outline: 5px auto -webkit-focus-ring-color;\r\n }\r\n\r\n input,\r\n button,\r\n select,\r\n optgroup,\r\n textarea {\r\n margin: 0;\r\n font-family: inherit;\r\n font-size: inherit;\r\n line-height: inherit;\r\n }\r\n\r\n button,\r\n input {\r\n overflow: visible;\r\n }\r\n\r\n button,\r\n select {\r\n text-transform: none;\r\n }\r\n\r\n select {\r\n word-wrap: normal;\r\n }\r\n\r\n button,\r\n [type=\"button\"],\r\n [type=\"reset\"],\r\n [type=\"submit\"] {\r\n -webkit-appearance: button;\r\n }\r\n\r\n button:not(:disabled),\r\n [type=\"button\"]:not(:disabled),\r\n [type=\"reset\"]:not(:disabled),\r\n [type=\"submit\"]:not(:disabled) {\r\n cursor: pointer;\r\n }\r\n\r\n button::-moz-focus-inner,\r\n [type=\"button\"]::-moz-focus-inner,\r\n [type=\"reset\"]::-moz-focus-inner,\r\n [type=\"submit\"]::-moz-focus-inner {\r\n padding: 0;\r\n border-style: none;\r\n }\r\n\r\n input[type=\"radio\"],\r\n input[type=\"checkbox\"] {\r\n -webkit-box-sizing: border-box;\r\n box-sizing: border-box;\r\n padding: 0;\r\n }\r\n\r\n input[type=\"date\"],\r\n input[type=\"time\"],\r\n input[type=\"datetime-local\"],\r\n input[type=\"month\"] {\r\n -webkit-appearance: listbox;\r\n }\r\n\r\n textarea {\r\n overflow: auto;\r\n resize: vertical;\r\n }\r\n\r\n fieldset {\r\n min-width: 0;\r\n padding: 0;\r\n margin: 0;\r\n border: 0;\r\n }\r\n\r\n legend {\r\n display: block;\r\n width: 100%;\r\n max-width: 100%;\r\n padding: 0;\r\n margin-bottom: 0.5rem;\r\n font-size: 1.5rem;\r\n line-height: inherit;\r\n color: inherit;\r\n white-space: normal;\r\n }\r\n\r\n progress {\r\n vertical-align: baseline;\r\n }\r\n\r\n [type=\"number\"]::-webkit-inner-spin-button,\r\n [type=\"number\"]::-webkit-outer-spin-button {\r\n height: auto;\r\n }\r\n\r\n [type=\"search\"] {\r\n outline-offset: -2px;\r\n -webkit-appearance: none;\r\n }\r\n\r\n [type=\"search\"]::-webkit-search-decoration {\r\n -webkit-appearance: none;\r\n }\r\n\r\n ::-webkit-file-upload-button {\r\n font: inherit;\r\n -webkit-appearance: button;\r\n }\r\n\r\n output {\r\n display: inline-block;\r\n }\r\n\r\n summary {\r\n display: list-item;\r\n cursor: pointer;\r\n }\r\n\r\n template {\r\n display: none;\r\n }\r\n\r\n [hidden] {\r\n display: none !important;\r\n }\r\n\r\n h1,\r\n h2,\r\n h3,\r\n h4,\r\n h5,\r\n h6,\r\n .h1,\r\n .h2,\r\n .h3,\r\n .h4,\r\n .h5,\r\n .h6 {\r\n margin-bottom: 0.5rem;\r\n font-weight: 400;\r\n line-height: 1.2;\r\n }\r\n\r\n h1,\r\n .h1 {\r\n font-size: 2.5rem;\r\n }\r\n\r\n h2,\r\n .h2 {\r\n font-size: 2rem;\r\n }\r\n\r\n h3,\r\n .h3 {\r\n font-size: 1.75rem;\r\n }\r\n\r\n h4,\r\n .h4 {\r\n font-size: 1.5rem;\r\n }\r\n\r\n h5,\r\n .h5 {\r\n font-size: 1.25rem;\r\n }\r\n\r\n h6,\r\n .h6 {\r\n font-size: 1rem;\r\n }\r\n\r\n .container-kacheln {\r\n border: 1px solid rgb(40, 40, 40);\r\n min-width: 45px;\r\n min-height: 25px;\r\n max-height: 25px;\r\n text-align: center;\r\n }\r\n\r\n .grau {\r\n background-color: var(--gray-dark);\r\n }\r\n .gelb {\r\n background-color: var(--warning);\r\n color: white;\r\n }\r\n\r\n .weiss {\r\n background-color: var(--white-grey);\r\n }\r\n\r\n .rot {\r\n background-color: var(--danger);\r\n color: white;\r\n }\r\n\r\n .gruen {\r\n background-color: var(--success);\r\n color: white;\r\n }\r\n\r\n .blau {\r\n background-color: var(--primary);\r\n color: white;\r\n }\r\n\r\n .lead {\r\n font-size: 1.25rem;\r\n font-weight: 300;\r\n }\r\n\r\n .display-1 {\r\n font-size: 6rem;\r\n font-weight: 300;\r\n line-height: 1.2;\r\n }\r\n\r\n .display-2 {\r\n font-size: 5.5rem;\r\n font-weight: 300;\r\n line-height: 1.2;\r\n }\r\n\r\n .display-3 {\r\n font-size: 4.5rem;\r\n font-weight: 300;\r\n line-height: 1.2;\r\n }\r\n\r\n .display-4 {\r\n font-size: 3.5rem;\r\n font-weight: 300;\r\n line-height: 1.2;\r\n }\r\n\r\n hr {\r\n margin-top: 1rem;\r\n margin-bottom: 1rem;\r\n border: 0;\r\n border-top: 1px solid rgba(0, 0, 0, 0.1);\r\n }\r\n\r\n small,\r\n .small {\r\n font-size: 0.835rem;\r\n font-weight: 400;\r\n }\r\n\r\n mark,\r\n .mark {\r\n padding: 0.2em;\r\n background-color: #fcf8e3;\r\n }\r\n\r\n .list-unstyled {\r\n padding-left: 0;\r\n list-style: none;\r\n }\r\n\r\n .list-inline {\r\n padding-left: 0;\r\n list-style: none;\r\n }\r\n\r\n .list-inline-item {\r\n display: inline-block;\r\n }\r\n\r\n .list-inline-item:not(:last-child) {\r\n margin-right: 0.5rem;\r\n }\r\n\r\n .initialism {\r\n font-size: 90%;\r\n text-transform: uppercase;\r\n }\r\n\r\n .blockquote {\r\n margin-bottom: 1rem;\r\n font-size: 1.25rem;\r\n }\r\n\r\n .blockquote-footer {\r\n display: block;\r\n font-size: 80%;\r\n color: var(--secondary);\r\n }\r\n\r\n .blockquote-footer::before {\r\n content: \"\\\\2014\\\\00A0\";\r\n }\r\n\r\n .img-fluid {\r\n max-width: 100%;\r\n height: auto;\r\n }\r\n\r\n .img-thumbnail {\r\n padding: 0.25rem;\r\n background-color: var(--white);\r\n border: 1px solid #dddfeb;\r\n border-radius: 0.35rem;\r\n max-width: 100%;\r\n height: auto;\r\n }\r\n\r\n .figure {\r\n display: inline-block;\r\n }\r\n\r\n .figure-img {\r\n margin-bottom: 0.5rem;\r\n line-height: 1;\r\n }\r\n\r\n .figure-caption {\r\n font-size: 90%;\r\n color: var(--secondary);\r\n }\r\n\r\n a > code {\r\n color: inherit;\r\n }\r\n\r\n kbd {\r\n padding: 0.2rem 0.4rem;\r\n font-size: 87.5%;\r\n color: var(--white);\r\n background-color: #3a3b45;\r\n border-radius: 0.2rem;\r\n }\r\n\r\n kbd kbd {\r\n padding: 0;\r\n font-size: 100%;\r\n font-weight: 700;\r\n }\r\n\r\n pre {\r\n display: block;\r\n font-size: 87.5%;\r\n color: #3a3b45;\r\n }\r\n\r\n pre code {\r\n font-size: inherit;\r\n color: inherit;\r\n word-break: normal;\r\n }\r\n\r\n .pre-scrollable {\r\n max-height: 340px;\r\n overflow-y: scroll;\r\n }\r\n\r\n .container {\r\n width: 100%;\r\n padding-right: 0.75rem;\r\n padding-left: 0.75rem;\r\n margin-right: auto;\r\n margin-left: auto;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .container {\r\n max-width: 540px;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .container {\r\n max-width: 720px;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .container {\r\n max-width: 960px;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .container {\r\n max-width: 100%;\r\n }\r\n }\r\n\r\n .container-fluid {\r\n width: 100%;\r\n padding-right: 0.75rem;\r\n padding-left: 0.75rem;\r\n margin-right: auto;\r\n margin-left: auto;\r\n }\r\n\r\n .row {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n margin-right: -0.75rem;\r\n margin-left: -0.75rem;\r\n }\r\n\r\n .no-gutters {\r\n margin-right: 0;\r\n margin-left: 0;\r\n }\r\n\r\n .no-gutters > .col,\r\n .no-gutters > [class*=\"col-\"] {\r\n padding-right: 0;\r\n padding-left: 0;\r\n }\r\n\r\n .col-1,\r\n .col-2,\r\n .col-3,\r\n .col-4,\r\n .col-5,\r\n .col-6,\r\n .col-7,\r\n .col-8,\r\n .col-9,\r\n .col-10,\r\n .col-11,\r\n .col-12,\r\n .col,\r\n .col-auto,\r\n .col-sm-1,\r\n .col-sm-2,\r\n .col-sm-3,\r\n .col-sm-4,\r\n .col-sm-5,\r\n .col-sm-6,\r\n .col-sm-7,\r\n .col-sm-8,\r\n .col-sm-9,\r\n .col-sm-10,\r\n .col-sm-11,\r\n .col-sm-12,\r\n .col-sm,\r\n .col-sm-auto,\r\n .col-md-1,\r\n .col-md-2,\r\n .col-md-3,\r\n .col-md-4,\r\n .col-md-5,\r\n .col-md-6,\r\n .col-md-7,\r\n .col-md-8,\r\n .col-md-9,\r\n .col-md-10,\r\n .col-md-11,\r\n .col-md-12,\r\n .col-md,\r\n .col-md-auto,\r\n .col-lg-1,\r\n .col-lg-2,\r\n .col-lg-3,\r\n .col-lg-4,\r\n .col-lg-5,\r\n .col-lg-6,\r\n .col-lg-7,\r\n .col-lg-8,\r\n .col-lg-9,\r\n .col-lg-10,\r\n .col-lg-11,\r\n .col-lg-12,\r\n .col-lg,\r\n .col-lg-auto,\r\n .col-xl-1,\r\n .col-xl-2,\r\n .col-xl-3,\r\n .col-xl-4,\r\n .col-xl-5,\r\n .col-xl-6,\r\n .col-xl-7,\r\n .col-xl-8,\r\n .col-xl-9,\r\n .col-xl-10,\r\n .col-xl-11,\r\n .col-xl-12,\r\n .col-xl,\r\n .col-xl-auto {\r\n position: relative;\r\n width: 100%;\r\n padding-right: 0.75rem;\r\n padding-left: 0.75rem;\r\n }\r\n\r\n .col {\r\n -ms-flex-preferred-size: 0;\r\n flex-basis: 0;\r\n -webkit-box-flex: 1;\r\n -ms-flex-positive: 1;\r\n flex-grow: 1;\r\n max-width: 100%;\r\n }\r\n\r\n .col-auto {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 auto;\r\n flex: 0 0 auto;\r\n width: auto;\r\n max-width: 100%;\r\n }\r\n\r\n .col-1 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 8.33333%;\r\n flex: 0 0 8.33333%;\r\n max-width: 8.33333%;\r\n }\r\n\r\n .col-2 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 16.66667%;\r\n flex: 0 0 16.66667%;\r\n max-width: 16.66667%;\r\n }\r\n\r\n .col-3 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 25%;\r\n flex: 0 0 25%;\r\n max-width: 25%;\r\n }\r\n\r\n .col-4 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 33.33333%;\r\n flex: 0 0 33.33333%;\r\n max-width: 33.33333%;\r\n }\r\n\r\n .col-5 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 41.66667%;\r\n flex: 0 0 41.66667%;\r\n max-width: 41.66667%;\r\n }\r\n\r\n .col-6 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 50%;\r\n flex: 0 0 50%;\r\n max-width: 50%;\r\n }\r\n\r\n .col-7 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 58.33333%;\r\n flex: 0 0 58.33333%;\r\n max-width: 58.33333%;\r\n }\r\n\r\n .col-8 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 66.66667%;\r\n flex: 0 0 66.66667%;\r\n max-width: 66.66667%;\r\n }\r\n\r\n .col-9 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 75%;\r\n flex: 0 0 75%;\r\n max-width: 75%;\r\n }\r\n\r\n .col-10 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 83.33333%;\r\n flex: 0 0 83.33333%;\r\n max-width: 83.33333%;\r\n }\r\n\r\n .col-11 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 91.66667%;\r\n flex: 0 0 91.66667%;\r\n max-width: 91.66667%;\r\n }\r\n\r\n .col-12 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 100%;\r\n flex: 0 0 100%;\r\n max-width: 100%;\r\n }\r\n\r\n .order-first {\r\n -webkit-box-ordinal-group: 0;\r\n -ms-flex-order: -1;\r\n order: -1;\r\n }\r\n\r\n .order-last {\r\n -webkit-box-ordinal-group: 14;\r\n -ms-flex-order: 13;\r\n order: 13;\r\n }\r\n\r\n .order-0 {\r\n -webkit-box-ordinal-group: 1;\r\n -ms-flex-order: 0;\r\n order: 0;\r\n }\r\n\r\n .order-1 {\r\n -webkit-box-ordinal-group: 2;\r\n -ms-flex-order: 1;\r\n order: 1;\r\n }\r\n\r\n .order-2 {\r\n -webkit-box-ordinal-group: 3;\r\n -ms-flex-order: 2;\r\n order: 2;\r\n }\r\n\r\n .order-3 {\r\n -webkit-box-ordinal-group: 4;\r\n -ms-flex-order: 3;\r\n order: 3;\r\n }\r\n\r\n .order-4 {\r\n -webkit-box-ordinal-group: 5;\r\n -ms-flex-order: 4;\r\n order: 4;\r\n }\r\n\r\n .order-5 {\r\n -webkit-box-ordinal-group: 6;\r\n -ms-flex-order: 5;\r\n order: 5;\r\n }\r\n\r\n .order-6 {\r\n -webkit-box-ordinal-group: 7;\r\n -ms-flex-order: 6;\r\n order: 6;\r\n }\r\n\r\n .order-7 {\r\n -webkit-box-ordinal-group: 8;\r\n -ms-flex-order: 7;\r\n order: 7;\r\n }\r\n\r\n .order-8 {\r\n -webkit-box-ordinal-group: 9;\r\n -ms-flex-order: 8;\r\n order: 8;\r\n }\r\n\r\n .order-9 {\r\n -webkit-box-ordinal-group: 10;\r\n -ms-flex-order: 9;\r\n order: 9;\r\n }\r\n\r\n .order-10 {\r\n -webkit-box-ordinal-group: 11;\r\n -ms-flex-order: 10;\r\n order: 10;\r\n }\r\n\r\n .order-11 {\r\n -webkit-box-ordinal-group: 12;\r\n -ms-flex-order: 11;\r\n order: 11;\r\n }\r\n\r\n .order-12 {\r\n -webkit-box-ordinal-group: 13;\r\n -ms-flex-order: 12;\r\n order: 12;\r\n }\r\n\r\n .offset-1 {\r\n margin-left: 8.33333%;\r\n }\r\n\r\n .offset-2 {\r\n margin-left: 16.66667%;\r\n }\r\n\r\n .offset-3 {\r\n margin-left: 25%;\r\n }\r\n\r\n .offset-4 {\r\n margin-left: 33.33333%;\r\n }\r\n\r\n .offset-5 {\r\n margin-left: 41.66667%;\r\n }\r\n\r\n .offset-6 {\r\n margin-left: 50%;\r\n }\r\n\r\n .offset-7 {\r\n margin-left: 58.33333%;\r\n }\r\n\r\n .offset-8 {\r\n margin-left: 66.66667%;\r\n }\r\n\r\n .offset-9 {\r\n margin-left: 75%;\r\n }\r\n\r\n .offset-10 {\r\n margin-left: 83.33333%;\r\n }\r\n\r\n .offset-11 {\r\n margin-left: 91.66667%;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .col-sm {\r\n -ms-flex-preferred-size: 0;\r\n flex-basis: 0;\r\n -webkit-box-flex: 1;\r\n -ms-flex-positive: 1;\r\n flex-grow: 1;\r\n max-width: 100%;\r\n }\r\n .col-sm-auto {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 auto;\r\n flex: 0 0 auto;\r\n width: auto;\r\n max-width: 100%;\r\n }\r\n .col-sm-1 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 8.33333%;\r\n flex: 0 0 8.33333%;\r\n max-width: 8.33333%;\r\n }\r\n .col-sm-2 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 16.66667%;\r\n flex: 0 0 16.66667%;\r\n max-width: 16.66667%;\r\n }\r\n .col-sm-3 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 25%;\r\n flex: 0 0 25%;\r\n max-width: 25%;\r\n }\r\n .col-sm-4 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 33.33333%;\r\n flex: 0 0 33.33333%;\r\n max-width: 33.33333%;\r\n }\r\n .col-sm-5 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 41.66667%;\r\n flex: 0 0 41.66667%;\r\n max-width: 41.66667%;\r\n }\r\n .col-sm-6 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 50%;\r\n flex: 0 0 50%;\r\n max-width: 50%;\r\n }\r\n .col-sm-7 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 58.33333%;\r\n flex: 0 0 58.33333%;\r\n max-width: 58.33333%;\r\n }\r\n .col-sm-8 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 66.66667%;\r\n flex: 0 0 66.66667%;\r\n max-width: 66.66667%;\r\n }\r\n .col-sm-9 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 75%;\r\n flex: 0 0 75%;\r\n max-width: 75%;\r\n }\r\n .col-sm-10 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 83.33333%;\r\n flex: 0 0 83.33333%;\r\n max-width: 83.33333%;\r\n }\r\n .col-sm-11 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 91.66667%;\r\n flex: 0 0 91.66667%;\r\n max-width: 91.66667%;\r\n }\r\n .col-sm-12 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 100%;\r\n flex: 0 0 100%;\r\n max-width: 100%;\r\n }\r\n .order-sm-first {\r\n -webkit-box-ordinal-group: 0;\r\n -ms-flex-order: -1;\r\n order: -1;\r\n }\r\n .order-sm-last {\r\n -webkit-box-ordinal-group: 14;\r\n -ms-flex-order: 13;\r\n order: 13;\r\n }\r\n .order-sm-0 {\r\n -webkit-box-ordinal-group: 1;\r\n -ms-flex-order: 0;\r\n order: 0;\r\n }\r\n .order-sm-1 {\r\n -webkit-box-ordinal-group: 2;\r\n -ms-flex-order: 1;\r\n order: 1;\r\n }\r\n .order-sm-2 {\r\n -webkit-box-ordinal-group: 3;\r\n -ms-flex-order: 2;\r\n order: 2;\r\n }\r\n .order-sm-3 {\r\n -webkit-box-ordinal-group: 4;\r\n -ms-flex-order: 3;\r\n order: 3;\r\n }\r\n .order-sm-4 {\r\n -webkit-box-ordinal-group: 5;\r\n -ms-flex-order: 4;\r\n order: 4;\r\n }\r\n .order-sm-5 {\r\n -webkit-box-ordinal-group: 6;\r\n -ms-flex-order: 5;\r\n order: 5;\r\n }\r\n .order-sm-6 {\r\n -webkit-box-ordinal-group: 7;\r\n -ms-flex-order: 6;\r\n order: 6;\r\n }\r\n .order-sm-7 {\r\n -webkit-box-ordinal-group: 8;\r\n -ms-flex-order: 7;\r\n order: 7;\r\n }\r\n .order-sm-8 {\r\n -webkit-box-ordinal-group: 9;\r\n -ms-flex-order: 8;\r\n order: 8;\r\n }\r\n .order-sm-9 {\r\n -webkit-box-ordinal-group: 10;\r\n -ms-flex-order: 9;\r\n order: 9;\r\n }\r\n .order-sm-10 {\r\n -webkit-box-ordinal-group: 11;\r\n -ms-flex-order: 10;\r\n order: 10;\r\n }\r\n .order-sm-11 {\r\n -webkit-box-ordinal-group: 12;\r\n -ms-flex-order: 11;\r\n order: 11;\r\n }\r\n .order-sm-12 {\r\n -webkit-box-ordinal-group: 13;\r\n -ms-flex-order: 12;\r\n order: 12;\r\n }\r\n .offset-sm-0 {\r\n margin-left: 0;\r\n }\r\n .offset-sm-1 {\r\n margin-left: 8.33333%;\r\n }\r\n .offset-sm-2 {\r\n margin-left: 16.66667%;\r\n }\r\n .offset-sm-3 {\r\n margin-left: 25%;\r\n }\r\n .offset-sm-4 {\r\n margin-left: 33.33333%;\r\n }\r\n .offset-sm-5 {\r\n margin-left: 41.66667%;\r\n }\r\n .offset-sm-6 {\r\n margin-left: 50%;\r\n }\r\n .offset-sm-7 {\r\n margin-left: 58.33333%;\r\n }\r\n .offset-sm-8 {\r\n margin-left: 66.66667%;\r\n }\r\n .offset-sm-9 {\r\n margin-left: 75%;\r\n }\r\n .offset-sm-10 {\r\n margin-left: 83.33333%;\r\n }\r\n .offset-sm-11 {\r\n margin-left: 91.66667%;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .col-md {\r\n -ms-flex-preferred-size: 0;\r\n flex-basis: 0;\r\n -webkit-box-flex: 1;\r\n -ms-flex-positive: 1;\r\n flex-grow: 1;\r\n max-width: 100%;\r\n }\r\n .col-md-auto {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 auto;\r\n flex: 0 0 auto;\r\n width: auto;\r\n max-width: 100%;\r\n }\r\n .col-md-1 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 8.33333%;\r\n flex: 0 0 8.33333%;\r\n max-width: 8.33333%;\r\n }\r\n .col-md-2 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 16.66667%;\r\n flex: 0 0 16.66667%;\r\n max-width: 16.66667%;\r\n }\r\n .col-md-3 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 25%;\r\n flex: 0 0 25%;\r\n max-width: 25%;\r\n }\r\n .col-md-4 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 33.33333%;\r\n flex: 0 0 33.33333%;\r\n max-width: 33.33333%;\r\n }\r\n .col-md-5 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 41.66667%;\r\n flex: 0 0 41.66667%;\r\n max-width: 41.66667%;\r\n }\r\n .col-md-6 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 50%;\r\n flex: 0 0 50%;\r\n max-width: 50%;\r\n }\r\n .col-md-7 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 58.33333%;\r\n flex: 0 0 58.33333%;\r\n max-width: 58.33333%;\r\n }\r\n .col-md-8 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 66.66667%;\r\n flex: 0 0 66.66667%;\r\n max-width: 66.66667%;\r\n }\r\n .col-md-9 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 75%;\r\n flex: 0 0 75%;\r\n max-width: 75%;\r\n }\r\n .col-md-10 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 83.33333%;\r\n flex: 0 0 83.33333%;\r\n max-width: 83.33333%;\r\n }\r\n .col-md-11 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 91.66667%;\r\n flex: 0 0 91.66667%;\r\n max-width: 91.66667%;\r\n }\r\n .col-md-12 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 100%;\r\n flex: 0 0 100%;\r\n max-width: 100%;\r\n }\r\n .order-md-first {\r\n -webkit-box-ordinal-group: 0;\r\n -ms-flex-order: -1;\r\n order: -1;\r\n }\r\n .order-md-last {\r\n -webkit-box-ordinal-group: 14;\r\n -ms-flex-order: 13;\r\n order: 13;\r\n }\r\n .order-md-0 {\r\n -webkit-box-ordinal-group: 1;\r\n -ms-flex-order: 0;\r\n order: 0;\r\n }\r\n .order-md-1 {\r\n -webkit-box-ordinal-group: 2;\r\n -ms-flex-order: 1;\r\n order: 1;\r\n }\r\n .order-md-2 {\r\n -webkit-box-ordinal-group: 3;\r\n -ms-flex-order: 2;\r\n order: 2;\r\n }\r\n .order-md-3 {\r\n -webkit-box-ordinal-group: 4;\r\n -ms-flex-order: 3;\r\n order: 3;\r\n }\r\n .order-md-4 {\r\n -webkit-box-ordinal-group: 5;\r\n -ms-flex-order: 4;\r\n order: 4;\r\n }\r\n .order-md-5 {\r\n -webkit-box-ordinal-group: 6;\r\n -ms-flex-order: 5;\r\n order: 5;\r\n }\r\n .order-md-6 {\r\n -webkit-box-ordinal-group: 7;\r\n -ms-flex-order: 6;\r\n order: 6;\r\n }\r\n .order-md-7 {\r\n -webkit-box-ordinal-group: 8;\r\n -ms-flex-order: 7;\r\n order: 7;\r\n }\r\n .order-md-8 {\r\n -webkit-box-ordinal-group: 9;\r\n -ms-flex-order: 8;\r\n order: 8;\r\n }\r\n .order-md-9 {\r\n -webkit-box-ordinal-group: 10;\r\n -ms-flex-order: 9;\r\n order: 9;\r\n }\r\n .order-md-10 {\r\n -webkit-box-ordinal-group: 11;\r\n -ms-flex-order: 10;\r\n order: 10;\r\n }\r\n .order-md-11 {\r\n -webkit-box-ordinal-group: 12;\r\n -ms-flex-order: 11;\r\n order: 11;\r\n }\r\n .order-md-12 {\r\n -webkit-box-ordinal-group: 13;\r\n -ms-flex-order: 12;\r\n order: 12;\r\n }\r\n .offset-md-0 {\r\n margin-left: 0;\r\n }\r\n .offset-md-1 {\r\n margin-left: 8.33333%;\r\n }\r\n .offset-md-2 {\r\n margin-left: 16.66667%;\r\n }\r\n .offset-md-3 {\r\n margin-left: 25%;\r\n }\r\n .offset-md-4 {\r\n margin-left: 33.33333%;\r\n }\r\n .offset-md-5 {\r\n margin-left: 41.66667%;\r\n }\r\n .offset-md-6 {\r\n margin-left: 50%;\r\n }\r\n .offset-md-7 {\r\n margin-left: 58.33333%;\r\n }\r\n .offset-md-8 {\r\n margin-left: 66.66667%;\r\n }\r\n .offset-md-9 {\r\n margin-left: 75%;\r\n }\r\n .offset-md-10 {\r\n margin-left: 83.33333%;\r\n }\r\n .offset-md-11 {\r\n margin-left: 91.66667%;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .col-lg {\r\n -ms-flex-preferred-size: 0;\r\n flex-basis: 0;\r\n -webkit-box-flex: 1;\r\n -ms-flex-positive: 1;\r\n flex-grow: 1;\r\n max-width: 100%;\r\n }\r\n .col-lg-auto {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 auto;\r\n flex: 0 0 auto;\r\n width: auto;\r\n max-width: 100%;\r\n }\r\n .col-lg-1 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 8.33333%;\r\n flex: 0 0 8.33333%;\r\n max-width: 8.33333%;\r\n }\r\n .col-lg-2 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 16.66667%;\r\n flex: 0 0 16.66667%;\r\n max-width: 16.66667%;\r\n }\r\n .col-lg-3 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 25%;\r\n flex: 0 0 25%;\r\n max-width: 25%;\r\n }\r\n .col-lg-4 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 33.33333%;\r\n flex: 0 0 33.33333%;\r\n max-width: 33.33333%;\r\n }\r\n .col-lg-5 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 41.66667%;\r\n flex: 0 0 41.66667%;\r\n max-width: 41.66667%;\r\n }\r\n .col-lg-6 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 50%;\r\n flex: 0 0 50%;\r\n max-width: 50%;\r\n }\r\n .col-lg-7 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 58.33333%;\r\n flex: 0 0 58.33333%;\r\n max-width: 58.33333%;\r\n }\r\n .col-lg-8 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 66.66667%;\r\n flex: 0 0 66.66667%;\r\n max-width: 66.66667%;\r\n }\r\n .col-lg-9 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 75%;\r\n flex: 0 0 75%;\r\n max-width: 75%;\r\n }\r\n .col-lg-10 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 83.33333%;\r\n flex: 0 0 83.33333%;\r\n max-width: 83.33333%;\r\n }\r\n .col-lg-11 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 91.66667%;\r\n flex: 0 0 91.66667%;\r\n max-width: 91.66667%;\r\n }\r\n .col-lg-12 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 100%;\r\n flex: 0 0 100%;\r\n max-width: 100%;\r\n }\r\n .order-lg-first {\r\n -webkit-box-ordinal-group: 0;\r\n -ms-flex-order: -1;\r\n order: -1;\r\n }\r\n .order-lg-last {\r\n -webkit-box-ordinal-group: 14;\r\n -ms-flex-order: 13;\r\n order: 13;\r\n }\r\n .order-lg-0 {\r\n -webkit-box-ordinal-group: 1;\r\n -ms-flex-order: 0;\r\n order: 0;\r\n }\r\n .order-lg-1 {\r\n -webkit-box-ordinal-group: 2;\r\n -ms-flex-order: 1;\r\n order: 1;\r\n }\r\n .order-lg-2 {\r\n -webkit-box-ordinal-group: 3;\r\n -ms-flex-order: 2;\r\n order: 2;\r\n }\r\n .order-lg-3 {\r\n -webkit-box-ordinal-group: 4;\r\n -ms-flex-order: 3;\r\n order: 3;\r\n }\r\n .order-lg-4 {\r\n -webkit-box-ordinal-group: 5;\r\n -ms-flex-order: 4;\r\n order: 4;\r\n }\r\n .order-lg-5 {\r\n -webkit-box-ordinal-group: 6;\r\n -ms-flex-order: 5;\r\n order: 5;\r\n }\r\n .order-lg-6 {\r\n -webkit-box-ordinal-group: 7;\r\n -ms-flex-order: 6;\r\n order: 6;\r\n }\r\n .order-lg-7 {\r\n -webkit-box-ordinal-group: 8;\r\n -ms-flex-order: 7;\r\n order: 7;\r\n }\r\n .order-lg-8 {\r\n -webkit-box-ordinal-group: 9;\r\n -ms-flex-order: 8;\r\n order: 8;\r\n }\r\n .order-lg-9 {\r\n -webkit-box-ordinal-group: 10;\r\n -ms-flex-order: 9;\r\n order: 9;\r\n }\r\n .order-lg-10 {\r\n -webkit-box-ordinal-group: 11;\r\n -ms-flex-order: 10;\r\n order: 10;\r\n }\r\n .order-lg-11 {\r\n -webkit-box-ordinal-group: 12;\r\n -ms-flex-order: 11;\r\n order: 11;\r\n }\r\n .order-lg-12 {\r\n -webkit-box-ordinal-group: 13;\r\n -ms-flex-order: 12;\r\n order: 12;\r\n }\r\n .offset-lg-0 {\r\n margin-left: 0;\r\n }\r\n .offset-lg-1 {\r\n margin-left: 8.33333%;\r\n }\r\n .offset-lg-2 {\r\n margin-left: 16.66667%;\r\n }\r\n .offset-lg-3 {\r\n margin-left: 25%;\r\n }\r\n .offset-lg-4 {\r\n margin-left: 33.33333%;\r\n }\r\n .offset-lg-5 {\r\n margin-left: 41.66667%;\r\n }\r\n .offset-lg-6 {\r\n margin-left: 50%;\r\n }\r\n .offset-lg-7 {\r\n margin-left: 58.33333%;\r\n }\r\n .offset-lg-8 {\r\n margin-left: 66.66667%;\r\n }\r\n .offset-lg-9 {\r\n margin-left: 75%;\r\n }\r\n .offset-lg-10 {\r\n margin-left: 83.33333%;\r\n }\r\n .offset-lg-11 {\r\n margin-left: 91.66667%;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .col-xl {\r\n -ms-flex-preferred-size: 0;\r\n flex-basis: 0;\r\n -webkit-box-flex: 1;\r\n -ms-flex-positive: 1;\r\n flex-grow: 1;\r\n max-width: 100%;\r\n }\r\n .col-xl-auto {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 auto;\r\n flex: 0 0 auto;\r\n width: auto;\r\n max-width: 100%;\r\n }\r\n .col-xl-1 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 8.33333%;\r\n flex: 0 0 8.33333%;\r\n max-width: 8.33333%;\r\n }\r\n .col-xl-2 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 16.66667%;\r\n flex: 0 0 16.66667%;\r\n max-width: 16.66667%;\r\n }\r\n .col-xl-3 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 25%;\r\n flex: 0 0 25%;\r\n max-width: 25%;\r\n }\r\n .col-xl-4 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 33.33333%;\r\n flex: 0 0 33.33333%;\r\n max-width: 33.33333%;\r\n }\r\n .col-xl-5 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 41.66667%;\r\n flex: 0 0 41.66667%;\r\n max-width: 41.66667%;\r\n }\r\n .col-xl-6 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 50%;\r\n flex: 0 0 50%;\r\n max-width: 50%;\r\n }\r\n .col-xl-7 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 58.33333%;\r\n flex: 0 0 58.33333%;\r\n max-width: 58.33333%;\r\n }\r\n .col-xl-8 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 66.66667%;\r\n flex: 0 0 66.66667%;\r\n max-width: 66.66667%;\r\n }\r\n .col-xl-9 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 75%;\r\n flex: 0 0 75%;\r\n max-width: 75%;\r\n }\r\n .col-xl-10 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 83.33333%;\r\n flex: 0 0 83.33333%;\r\n max-width: 83.33333%;\r\n }\r\n .col-xl-11 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 91.66667%;\r\n flex: 0 0 91.66667%;\r\n max-width: 91.66667%;\r\n }\r\n .col-xl-12 {\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 100%;\r\n flex: 0 0 100%;\r\n max-width: 100%;\r\n }\r\n .order-xl-first {\r\n -webkit-box-ordinal-group: 0;\r\n -ms-flex-order: -1;\r\n order: -1;\r\n }\r\n .order-xl-last {\r\n -webkit-box-ordinal-group: 14;\r\n -ms-flex-order: 13;\r\n order: 13;\r\n }\r\n .order-xl-0 {\r\n -webkit-box-ordinal-group: 1;\r\n -ms-flex-order: 0;\r\n order: 0;\r\n }\r\n .order-xl-1 {\r\n -webkit-box-ordinal-group: 2;\r\n -ms-flex-order: 1;\r\n order: 1;\r\n }\r\n .order-xl-2 {\r\n -webkit-box-ordinal-group: 3;\r\n -ms-flex-order: 2;\r\n order: 2;\r\n }\r\n .order-xl-3 {\r\n -webkit-box-ordinal-group: 4;\r\n -ms-flex-order: 3;\r\n order: 3;\r\n }\r\n .order-xl-4 {\r\n -webkit-box-ordinal-group: 5;\r\n -ms-flex-order: 4;\r\n order: 4;\r\n }\r\n .order-xl-5 {\r\n -webkit-box-ordinal-group: 6;\r\n -ms-flex-order: 5;\r\n order: 5;\r\n }\r\n .order-xl-6 {\r\n -webkit-box-ordinal-group: 7;\r\n -ms-flex-order: 6;\r\n order: 6;\r\n }\r\n .order-xl-7 {\r\n -webkit-box-ordinal-group: 8;\r\n -ms-flex-order: 7;\r\n order: 7;\r\n }\r\n .order-xl-8 {\r\n -webkit-box-ordinal-group: 9;\r\n -ms-flex-order: 8;\r\n order: 8;\r\n }\r\n .order-xl-9 {\r\n -webkit-box-ordinal-group: 10;\r\n -ms-flex-order: 9;\r\n order: 9;\r\n }\r\n .order-xl-10 {\r\n -webkit-box-ordinal-group: 11;\r\n -ms-flex-order: 10;\r\n order: 10;\r\n }\r\n .order-xl-11 {\r\n -webkit-box-ordinal-group: 12;\r\n -ms-flex-order: 11;\r\n order: 11;\r\n }\r\n .order-xl-12 {\r\n -webkit-box-ordinal-group: 13;\r\n -ms-flex-order: 12;\r\n order: 12;\r\n }\r\n .offset-xl-0 {\r\n margin-left: 0;\r\n }\r\n .offset-xl-1 {\r\n margin-left: 8.33333%;\r\n }\r\n .offset-xl-2 {\r\n margin-left: 16.66667%;\r\n }\r\n .offset-xl-3 {\r\n margin-left: 25%;\r\n }\r\n .offset-xl-4 {\r\n margin-left: 33.33333%;\r\n }\r\n .offset-xl-5 {\r\n margin-left: 41.66667%;\r\n }\r\n .offset-xl-6 {\r\n margin-left: 50%;\r\n }\r\n .offset-xl-7 {\r\n margin-left: 58.33333%;\r\n }\r\n .offset-xl-8 {\r\n margin-left: 66.66667%;\r\n }\r\n .offset-xl-9 {\r\n margin-left: 75%;\r\n }\r\n .offset-xl-10 {\r\n margin-left: 83.33333%;\r\n }\r\n .offset-xl-11 {\r\n margin-left: 91.66667%;\r\n }\r\n }\r\n\r\n .table {\r\n width: 100%;\r\n margin-bottom: 1rem;\r\n color: var(--secondary);\r\n }\r\n\r\n .table th,\r\n .table td {\r\n padding: 0.75rem;\r\n vertical-align: middle;\r\n }\r\n\r\n .table thead th {\r\n vertical-align: bottom;\r\n }\r\n\r\n .table tbody + tbody {\r\n border-top: 2px solid #e3e6f0;\r\n }\r\n\r\n .table-sm th,\r\n .table-sm td {\r\n padding: 0.3rem;\r\n }\r\n\r\n .table-bordered {\r\n border: 1px solid #e3e6f0;\r\n }\r\n\r\n .table-bordered th,\r\n .table-bordered td {\r\n border: 1px solid #e3e6f0;\r\n }\r\n\r\n .table-bordered thead th,\r\n .table-bordered thead td {\r\n border-bottom-width: 2px;\r\n }\r\n\r\n .table-borderless th,\r\n .table-borderless td,\r\n .table-borderless thead th,\r\n .table-borderless tbody + tbody {\r\n border: 0;\r\n }\r\n\r\n .table-striped tbody tr:nth-of-type(odd) {\r\n background-color: rgba(0, 0, 0, 0.05);\r\n }\r\n\r\n .table-hover tbody tr:hover {\r\n color: var(--secondary);\r\n background-color: rgba(0, 0, 0, 0.075);\r\n }\r\n\r\n .table-primary,\r\n .table-primary > th,\r\n .table-primary > td {\r\n background-color: #cdd8f6;\r\n }\r\n\r\n .table-primary th,\r\n .table-primary td,\r\n .table-primary thead th,\r\n .table-primary tbody + tbody {\r\n border-color: #a3b6ee;\r\n }\r\n\r\n .table-hover .table-primary:hover {\r\n background-color: #b7c7f2;\r\n }\r\n\r\n .table-hover .table-primary:hover > td,\r\n .table-hover .table-primary:hover > th {\r\n background-color: #b7c7f2;\r\n }\r\n\r\n .table-secondary,\r\n .table-secondary > th,\r\n .table-secondary > td {\r\n background-color: #dddde2;\r\n }\r\n\r\n .table-secondary th,\r\n .table-secondary td,\r\n .table-secondary thead th,\r\n .table-secondary tbody + tbody {\r\n border-color: #c0c1c8;\r\n }\r\n\r\n .table-hover .table-secondary:hover {\r\n background-color: #cfcfd6;\r\n }\r\n\r\n .table-hover .table-secondary:hover > td,\r\n .table-hover .table-secondary:hover > th {\r\n background-color: #cfcfd6;\r\n }\r\n\r\n .table-success,\r\n .table-success > th,\r\n .table-success > td {\r\n background-color: #bff0de;\r\n }\r\n\r\n .table-success th,\r\n .table-success td,\r\n .table-success thead th,\r\n .table-success tbody + tbody {\r\n border-color: #89e2c2;\r\n }\r\n\r\n .table-hover .table-success:hover {\r\n background-color: #aaebd3;\r\n }\r\n\r\n .table-hover .table-success:hover > td,\r\n .table-hover .table-success:hover > th {\r\n background-color: #aaebd3;\r\n }\r\n\r\n .table-info,\r\n .table-info > th,\r\n .table-info > td {\r\n background-color: #c7ebf1;\r\n }\r\n\r\n .table-info th,\r\n .table-info td,\r\n .table-info thead th,\r\n .table-info tbody + tbody {\r\n border-color: #96dbe4;\r\n }\r\n\r\n .table-hover .table-info:hover {\r\n background-color: #b3e4ec;\r\n }\r\n\r\n .table-hover .table-info:hover > td,\r\n .table-hover .table-info:hover > th {\r\n background-color: #b3e4ec;\r\n }\r\n\r\n .table-warning,\r\n .table-warning > th,\r\n .table-warning > td {\r\n background-color: #fceec9;\r\n }\r\n\r\n .table-warning th,\r\n .table-warning td,\r\n .table-warning thead th,\r\n .table-warning tbody + tbody {\r\n border-color: #fadf9b;\r\n }\r\n\r\n .table-hover .table-warning:hover {\r\n background-color: #fbe6b1;\r\n }\r\n\r\n .table-hover .table-warning:hover > td,\r\n .table-hover .table-warning:hover > th {\r\n background-color: #fbe6b1;\r\n }\r\n\r\n .table-danger,\r\n .table-danger > th,\r\n .table-danger > td {\r\n background-color: #f8ccc8;\r\n }\r\n\r\n .table-danger th,\r\n .table-danger td,\r\n .table-danger thead th,\r\n .table-danger tbody + tbody {\r\n border-color: #f3a199;\r\n }\r\n\r\n .table-hover .table-danger:hover {\r\n background-color: #f5b7b1;\r\n }\r\n\r\n .table-hover .table-danger:hover > td,\r\n .table-hover .table-danger:hover > th {\r\n background-color: #f5b7b1;\r\n }\r\n\r\n .table-light,\r\n .table-light > th,\r\n .table-light > td {\r\n background-color: #fdfdfe;\r\n }\r\n\r\n .table-light th,\r\n .table-light td,\r\n .table-light thead th,\r\n .table-light tbody + tbody {\r\n border-color: #fbfcfd;\r\n }\r\n\r\n .table-hover .table-light:hover {\r\n background-color: #ececf6;\r\n }\r\n\r\n .table-hover .table-light:hover > td,\r\n .table-hover .table-light:hover > th {\r\n background-color: #ececf6;\r\n }\r\n\r\n .table-dark,\r\n .table-dark > th,\r\n .table-dark > td {\r\n background-color: #d1d1d5;\r\n }\r\n\r\n .table-dark th,\r\n .table-dark td,\r\n .table-dark thead th,\r\n .table-dark tbody + tbody {\r\n border-color: #a9aab1;\r\n }\r\n\r\n .table-hover .table-dark:hover {\r\n background-color: #c4c4c9;\r\n }\r\n\r\n .table-hover .table-dark:hover > td,\r\n .table-hover .table-dark:hover > th {\r\n background-color: #c4c4c9;\r\n }\r\n\r\n .table-active,\r\n .table-active > th,\r\n .table-active > td {\r\n background-color: rgba(0, 0, 0, 0.075);\r\n }\r\n\r\n .table-hover .table-active:hover {\r\n background-color: rgba(0, 0, 0, 0.075);\r\n }\r\n\r\n .table-hover .table-active:hover > td,\r\n .table-hover .table-active:hover > th {\r\n background-color: rgba(0, 0, 0, 0.075);\r\n }\r\n\r\n .table .thead-dark th {\r\n color: var(--white);\r\n background-color: var(--gray-dark);\r\n border-color: var(--gray-dark);\r\n }\r\n\r\n .table .thead-light th {\r\n color: var(--gray-dark);\r\n background-color: #eaecf4;\r\n border-color: #e3e6f0;\r\n }\r\n\r\n .table-dark {\r\n color: var(--white);\r\n background-color: var(--gray-dark);\r\n }\r\n\r\n .table-dark th,\r\n .table-dark td,\r\n .table-dark thead th {\r\n border-color: #6c6e7e;\r\n }\r\n\r\n .table-dark.table-bordered {\r\n border: 0;\r\n }\r\n\r\n .table-dark.table-striped tbody tr:nth-of-type(odd) {\r\n background-color: rgba(255, 255, 255, 0.05);\r\n }\r\n\r\n .table-dark.table-hover tbody tr:hover {\r\n color: var(--white);\r\n background-color: rgba(255, 255, 255, 0.075);\r\n }\r\n\r\n @media (max-width: 575.98px) {\r\n .table-responsive-sm {\r\n display: block;\r\n -webkit-overflow-scrolling: touch;\r\n overflow-x: auto;\r\n width: 100%;\r\n }\r\n .table-responsive-sm > .table-bordered {\r\n border: 0;\r\n }\r\n }\r\n\r\n @media (max-width: 767.98px) {\r\n .table-responsive-md {\r\n display: block;\r\n -webkit-overflow-scrolling: touch;\r\n overflow-x: auto;\r\n width: 100%;\r\n }\r\n .table-responsive-md > .table-bordered {\r\n border: 0;\r\n }\r\n }\r\n\r\n @media (max-width: 991.98px) {\r\n .table-responsive-lg {\r\n display: block;\r\n -webkit-overflow-scrolling: touch;\r\n overflow-x: auto;\r\n width: 100%;\r\n }\r\n .table-responsive-lg > .table-bordered {\r\n border: 0;\r\n }\r\n }\r\n\r\n @media (max-width: 1199.98px) {\r\n .table-responsive-xl {\r\n display: block;\r\n -webkit-overflow-scrolling: touch;\r\n overflow-x: auto;\r\n width: 100%;\r\n }\r\n .table-responsive-xl > .table-bordered {\r\n border: 0;\r\n }\r\n }\r\n\r\n .table-responsive {\r\n display: block;\r\n -webkit-overflow-scrolling: touch;\r\n width: 100%;\r\n overflow-x: auto;\r\n }\r\n\r\n .table-responsive > .table-bordered {\r\n border: 0;\r\n }\r\n\r\n .form-control {\r\n border-top-left-radius: 0px !important;\r\n border-bottom-left-radius: 0px !important;\r\n display: block;\r\n width: 100%;\r\n height: calc(1.5em + 0.75rem + 2px);\r\n padding: 0.375rem 0.75rem;\r\n font-size: 1rem;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n color: #6e707e;\r\n background-color: var(--white);\r\n background-clip: padding-box;\r\n border: 1px solid #d1d3e2;\r\n border-radius: 1.35rem;\r\n -webkit-transition: border-color 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n transition: border-color 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .form-control {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .form-control::-ms-expand {\r\n background-color: transparent;\r\n border: 0;\r\n }\r\n\r\n .form-control:focus {\r\n color: #6e707e;\r\n background-color: var(--white);\r\n border-color: #bac8f3;\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .form-control::-webkit-input-placeholder {\r\n color: var(--secondary);\r\n opacity: 1;\r\n }\r\n\r\n .form-control:-ms-input-placeholder {\r\n color: var(--secondary);\r\n opacity: 1;\r\n }\r\n\r\n .form-control::-ms-input-placeholder {\r\n color: var(--secondary);\r\n opacity: 1;\r\n }\r\n\r\n .form-control::placeholder {\r\n color: var(--secondary);\r\n opacity: 1;\r\n }\r\n\r\n .form-control:disabled,\r\n .form-control[readonly] {\r\n background-color: #eaecf4;\r\n opacity: 1;\r\n }\r\n\r\n select.form-control:focus::-ms-value {\r\n color: #6e707e;\r\n background-color: var(--white);\r\n }\r\n\r\n .form-control-file,\r\n .form-control-range {\r\n display: block;\r\n width: 100%;\r\n }\r\n\r\n .col-form-label {\r\n padding-top: calc(0.375rem + 1px);\r\n padding-bottom: calc(0.375rem + 1px);\r\n margin-bottom: 0;\r\n font-size: inherit;\r\n line-height: 1.5;\r\n }\r\n\r\n .col-form-label-lg {\r\n padding-top: calc(0.5rem + 1px);\r\n padding-bottom: calc(0.5rem + 1px);\r\n font-size: 1.25rem;\r\n line-height: 1.5;\r\n }\r\n\r\n .col-form-label-sm {\r\n padding-top: calc(0.25rem + 1px);\r\n padding-bottom: calc(0.25rem + 1px);\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n }\r\n\r\n .form-control-plaintext {\r\n display: block;\r\n width: 100%;\r\n padding-top: 0.375rem;\r\n padding-bottom: 0.375rem;\r\n margin-bottom: 0;\r\n line-height: 1.5;\r\n color: var(--secondary);\r\n background-color: transparent;\r\n border: solid transparent;\r\n border-width: 1px 0;\r\n }\r\n\r\n .form-control-plaintext.form-control-sm,\r\n .form-control-plaintext.form-control-lg {\r\n padding-right: 0;\r\n padding-left: 0;\r\n }\r\n\r\n .form-control-sm {\r\n height: calc(1.5em + 0.5rem + 2px);\r\n padding: 0.25rem 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n border-radius: 0.2rem;\r\n }\r\n\r\n .form-control-lg {\r\n height: calc(1.5em + 1rem + 2px);\r\n padding: 0.5rem 1rem;\r\n font-size: 1.25rem;\r\n line-height: 1.5;\r\n border-radius: 0.3rem;\r\n }\r\n\r\n select.form-control[size],\r\n select.form-control[multiple] {\r\n height: auto;\r\n }\r\n\r\n textarea.form-control {\r\n height: auto;\r\n }\r\n\r\n .form-group {\r\n margin-bottom: 1rem;\r\n }\r\n\r\n .form-text {\r\n display: block;\r\n margin-top: 0.25rem;\r\n }\r\n\r\n .form-row {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n margin-right: -5px;\r\n margin-left: -5px;\r\n }\r\n\r\n .form-row > .col,\r\n .form-row > [class*=\"col-\"] {\r\n padding-right: 5px;\r\n padding-left: 5px;\r\n }\r\n\r\n .form-check {\r\n position: relative;\r\n display: block;\r\n padding-left: 1.25rem;\r\n }\r\n\r\n .form-check-input {\r\n position: absolute;\r\n margin-top: 0.3rem;\r\n margin-left: -1.25rem;\r\n }\r\n\r\n .form-check-input:disabled ~ .form-check-label {\r\n color: var(--secondary);\r\n }\r\n\r\n .form-check-label {\r\n margin-bottom: 0;\r\n }\r\n\r\n .form-check-inline {\r\n display: -webkit-inline-box;\r\n display: -ms-inline-flexbox;\r\n display: inline-flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n padding-left: 0;\r\n margin-right: 0.75rem;\r\n }\r\n\r\n .form-check-inline .form-check-input {\r\n position: static;\r\n margin-top: 0;\r\n margin-right: 0.3125rem;\r\n margin-left: 0;\r\n }\r\n\r\n .valid-feedback {\r\n display: none;\r\n width: 100%;\r\n margin-top: 0.25rem;\r\n font-size: 80%;\r\n color: var(--success);\r\n }\r\n\r\n .valid-tooltip {\r\n position: absolute;\r\n top: 100%;\r\n z-index: 5;\r\n display: none;\r\n max-width: 100%;\r\n padding: 0.25rem 0.5rem;\r\n margin-top: 0.1rem;\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n color: var(--white);\r\n background-color: rgba(28, 200, 138, 0.9);\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .was-validated .form-control:valid,\r\n .form-control.is-valid {\r\n border-color: var(--success);\r\n padding-right: calc(1.5em + 0.75rem);\r\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\r\n background-repeat: no-repeat;\r\n background-position: center right calc(0.375em + 0.1875rem);\r\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\r\n }\r\n\r\n .was-validated .form-control:valid:focus,\r\n .form-control.is-valid:focus {\r\n border-color: var(--success);\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(var(--success), 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba((var(--success)), 0.25);\r\n }\r\n\r\n .was-validated .form-control:valid ~ .valid-feedback,\r\n .was-validated .form-control:valid ~ .valid-tooltip,\r\n .form-control.is-valid ~ .valid-feedback,\r\n .form-control.is-valid ~ .valid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated textarea.form-control:valid,\r\n textarea.form-control.is-valid {\r\n padding-right: calc(1.5em + 0.75rem);\r\n background-position: top calc(0.375em + 0.1875rem) right\r\n calc(0.375em + 0.1875rem);\r\n }\r\n\r\n .was-validated .custom-select:valid,\r\n .custom-select.is-valid {\r\n border-color: var(--success);\r\n padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\r\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\")\r\n no-repeat right 0.75rem center/8px 10px,\r\n url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%231cc88a' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\")\r\n var(--white) no-repeat center right 1.75rem /\r\n calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\r\n }\r\n\r\n .was-validated .custom-select:valid:focus,\r\n .custom-select.is-valid:focus {\r\n border-color: var(--success);\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(var(--success), 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(var(--success), 0.25);\r\n }\r\n\r\n .was-validated .custom-select:valid ~ .valid-feedback,\r\n .was-validated .custom-select:valid ~ .valid-tooltip,\r\n .custom-select.is-valid ~ .valid-feedback,\r\n .custom-select.is-valid ~ .valid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated .form-control-file:valid ~ .valid-feedback,\r\n .was-validated .form-control-file:valid ~ .valid-tooltip,\r\n .form-control-file.is-valid ~ .valid-feedback,\r\n .form-control-file.is-valid ~ .valid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated .form-check-input:valid ~ .form-check-label,\r\n .form-check-input.is-valid ~ .form-check-label {\r\n color: var(--success);\r\n }\r\n\r\n .was-validated .form-check-input:valid ~ .valid-feedback,\r\n .was-validated .form-check-input:valid ~ .valid-tooltip,\r\n .form-check-input.is-valid ~ .valid-feedback,\r\n .form-check-input.is-valid ~ .valid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated .custom-control-input:valid ~ .custom-control-label,\r\n .custom-control-input.is-valid ~ .custom-control-label {\r\n color: var(--success);\r\n }\r\n\r\n .was-validated .custom-control-input:valid ~ .custom-control-label::before,\r\n .custom-control-input.is-valid ~ .custom-control-label::before {\r\n border-color: var(--success);\r\n }\r\n\r\n .was-validated .custom-control-input:valid ~ .valid-feedback,\r\n .was-validated .custom-control-input:valid ~ .valid-tooltip,\r\n .custom-control-input.is-valid ~ .valid-feedback,\r\n .custom-control-input.is-valid ~ .valid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated\r\n .custom-control-input:valid:checked\r\n ~ .custom-control-label::before,\r\n .custom-control-input.is-valid:checked ~ .custom-control-label::before {\r\n border-color: var(--success);\r\n background-color: var(--success);\r\n }\r\n\r\n .was-validated\r\n .custom-control-input:valid:focus\r\n ~ .custom-control-label::before,\r\n .custom-control-input.is-valid:focus ~ .custom-control-label::before {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(var(--success), 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(var(--success), 0.25);\r\n }\r\n\r\n .was-validated\r\n .custom-control-input:valid:focus:not(:checked)\r\n ~ .custom-control-label::before,\r\n .custom-control-input.is-valid:focus:not(:checked)\r\n ~ .custom-control-label::before {\r\n border-color: var(--success);\r\n }\r\n\r\n .was-validated .custom-file-input:valid ~ .custom-file-label,\r\n .custom-file-input.is-valid ~ .custom-file-label {\r\n border-color: var(--success);\r\n }\r\n\r\n .was-validated .custom-file-input:valid ~ .valid-feedback,\r\n .was-validated .custom-file-input:valid ~ .valid-tooltip,\r\n .custom-file-input.is-valid ~ .valid-feedback,\r\n .custom-file-input.is-valid ~ .valid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated .custom-file-input:valid:focus ~ .custom-file-label,\r\n .custom-file-input.is-valid:focus ~ .custom-file-label {\r\n border-color: var(--success);\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(var(--success), 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(var(--success), 0.25);\r\n }\r\n\r\n .invalid-feedback {\r\n width: 100%;\r\n margin-top: 0.25rem;\r\n font-size: 80%;\r\n color: var(--danger);\r\n }\r\n\r\n .invalid-tooltip {\r\n position: absolute;\r\n top: 100%;\r\n z-index: 5;\r\n display: none;\r\n max-width: 100%;\r\n padding: 0.25rem 0.5rem;\r\n margin-top: 0.1rem;\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n color: var(--white);\r\n background-color: rgba(231, 74, 59, 0.9);\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .was-validated .form-control:invalid,\r\n .form-control.is-invalid {\r\n border-color: var(--danger);\r\n padding-right: calc(1.5em + 0.75rem);\r\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23e74a3b' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23e74a3b' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\");\r\n background-repeat: no-repeat;\r\n background-position: center right calc(0.375em + 0.1875rem);\r\n background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\r\n }\r\n\r\n .was-validated .form-control:invalid:focus,\r\n .form-control.is-invalid:focus {\r\n border-color: var(--danger);\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);\r\n }\r\n\r\n .was-validated .form-control:invalid ~ .invalid-feedback,\r\n .was-validated .form-control:invalid ~ .invalid-tooltip,\r\n .form-control.is-invalid ~ .invalid-feedback,\r\n .form-control.is-invalid ~ .invalid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated textarea.form-control:invalid,\r\n textarea.form-control.is-invalid {\r\n padding-right: calc(1.5em + 0.75rem);\r\n background-position: top calc(0.375em + 0.1875rem) right\r\n calc(0.375em + 0.1875rem);\r\n }\r\n\r\n .was-validated .custom-select:invalid,\r\n .custom-select.is-invalid {\r\n border-color: var(--danger);\r\n padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);\r\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\")\r\n no-repeat right 0.75rem center/8px 10px,\r\n url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23e74a3b' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23e74a3b' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E\")\r\n var(--white) no-repeat center right 1.75rem /\r\n calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\r\n }\r\n\r\n .was-validated .custom-select:invalid:focus,\r\n .custom-select.is-invalid:focus {\r\n border-color: var(--danger);\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);\r\n }\r\n\r\n .was-validated .custom-select:invalid ~ .invalid-feedback,\r\n .was-validated .custom-select:invalid ~ .invalid-tooltip,\r\n .custom-select.is-invalid ~ .invalid-feedback,\r\n .custom-select.is-invalid ~ .invalid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated .form-control-file:invalid ~ .invalid-feedback,\r\n .was-validated .form-control-file:invalid ~ .invalid-tooltip,\r\n .form-control-file.is-invalid ~ .invalid-feedback,\r\n .form-control-file.is-invalid ~ .invalid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated .form-check-input:invalid ~ .form-check-label,\r\n .form-check-input.is-invalid ~ .form-check-label {\r\n color: var(--danger);\r\n }\r\n\r\n .was-validated .form-check-input:invalid ~ .invalid-feedback,\r\n .was-validated .form-check-input:invalid ~ .invalid-tooltip,\r\n .form-check-input.is-invalid ~ .invalid-feedback,\r\n .form-check-input.is-invalid ~ .invalid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated .custom-control-input:invalid ~ .custom-control-label,\r\n .custom-control-input.is-invalid ~ .custom-control-label {\r\n color: var(--danger);\r\n }\r\n\r\n .was-validated\r\n .custom-control-input:invalid\r\n ~ .custom-control-label::before,\r\n .custom-control-input.is-invalid ~ .custom-control-label::before {\r\n border-color: var(--danger);\r\n }\r\n\r\n .was-validated .custom-control-input:invalid ~ .invalid-feedback,\r\n .was-validated .custom-control-input:invalid ~ .invalid-tooltip,\r\n .custom-control-input.is-invalid ~ .invalid-feedback,\r\n .custom-control-input.is-invalid ~ .invalid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated\r\n .custom-control-input:invalid:checked\r\n ~ .custom-control-label::before,\r\n .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\r\n border-color: #ed7468;\r\n background-color: #ed7468;\r\n }\r\n\r\n .was-validated\r\n .custom-control-input:invalid:focus\r\n ~ .custom-control-label::before,\r\n .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);\r\n }\r\n\r\n .was-validated\r\n .custom-control-input:invalid:focus:not(:checked)\r\n ~ .custom-control-label::before,\r\n .custom-control-input.is-invalid:focus:not(:checked)\r\n ~ .custom-control-label::before {\r\n border-color: var(--danger);\r\n }\r\n\r\n .was-validated .custom-file-input:invalid ~ .custom-file-label,\r\n .custom-file-input.is-invalid ~ .custom-file-label {\r\n border-color: var(--danger);\r\n }\r\n\r\n .was-validated .custom-file-input:invalid ~ .invalid-feedback,\r\n .was-validated .custom-file-input:invalid ~ .invalid-tooltip,\r\n .custom-file-input.is-invalid ~ .invalid-feedback,\r\n .custom-file-input.is-invalid ~ .invalid-tooltip {\r\n display: block;\r\n }\r\n\r\n .was-validated .custom-file-input:invalid:focus ~ .custom-file-label,\r\n .custom-file-input.is-invalid:focus ~ .custom-file-label {\r\n border-color: var(--danger);\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.25);\r\n }\r\n\r\n .form-inline {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row wrap;\r\n flex-flow: row wrap;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n }\r\n\r\n .form-inline .form-check {\r\n width: 100%;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .form-inline label {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n margin-bottom: 0;\r\n }\r\n .form-inline .form-group {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 0 auto;\r\n flex: 0 0 auto;\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row wrap;\r\n flex-flow: row wrap;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n margin-bottom: 0;\r\n }\r\n .form-inline .form-control {\r\n display: inline-block;\r\n width: auto;\r\n vertical-align: middle;\r\n }\r\n .form-inline .form-control-plaintext {\r\n display: inline-block;\r\n }\r\n .form-inline .input-group,\r\n .form-inline .custom-select {\r\n width: auto;\r\n }\r\n .form-inline .form-check {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n width: auto;\r\n padding-left: 0;\r\n }\r\n .form-inline .form-check-input {\r\n position: relative;\r\n -ms-flex-negative: 0;\r\n flex-shrink: 0;\r\n margin-top: 0;\r\n margin-right: 0.25rem;\r\n margin-left: 0;\r\n }\r\n .form-inline .custom-control {\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n }\r\n .form-inline .custom-control-label {\r\n margin-bottom: 0;\r\n }\r\n }\r\n\r\n .btn {\r\n display: inline-block;\r\n font-weight: 400;\r\n color: var(--secondary);\r\n text-align: center;\r\n vertical-align: middle;\r\n -webkit-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n background-color: transparent;\r\n border: 1px solid transparent;\r\n padding: 0.375rem 0.75rem;\r\n font-size: 1rem;\r\n line-height: 1.5;\r\n border-radius: 1.35rem;\r\n -webkit-transition: color 0.15s ease-in-out,\r\n background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .btn {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .btn-success.footer-button-card {\r\n border-top-left-radius: 0px !important;\r\n border-top-right-radius: 0px !important;\r\n }\r\n .btn-success.footer-button-card {\r\n border-top-left-radius: 0px !important;\r\n border-top-right-radius: 0px !important;\r\n }\r\n\r\n .btn:hover {\r\n color: var(--white) !important;\r\n background-color: var(--warning);\r\n text-decoration: none;\r\n }\r\n\r\n a.btn:hover {\r\n border-top-left-radius: 0px !important;\r\n border-top-right-radius: 0px !important;\r\n }\r\n\r\n .btn:focus,\r\n .btn.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .btn.disabled,\r\n .btn:disabled {\r\n opacity: 0.65;\r\n }\r\n\r\n a.btn.disabled,\r\n fieldset:disabled a.btn {\r\n pointer-events: none;\r\n }\r\n\r\n .btn-primary {\r\n color: var(--white);\r\n background-color: rgb(60 160 133) !important;\r\n border-color: rgb(60 160 133) !important;\r\n }\r\n\r\n .btn-primary:hover {\r\n color: white !important;\r\n background-color: var(--warning) !important;\r\n border-color: var(--warning) !important;\r\n }\r\n\r\n .btn-primary:focus,\r\n .btn-primary.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(105, 136, 228, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(105, 136, 228, 0.5);\r\n }\r\n\r\n .btn-primary.disabled,\r\n .btn-primary:disabled {\r\n color: var(--white);\r\n background-color: var(--primary);\r\n border-color: var(--primary);\r\n }\r\n\r\n .btn-primary:not(:disabled):not(.disabled):active,\r\n .btn-primary:not(:disabled):not(.disabled).active,\r\n .show > .btn-primary.dropdown-toggle {\r\n color: var(--white);\r\n background-color: #2653d4;\r\n border-color: #244ec9;\r\n }\r\n\r\n .btn-primary:not(:disabled):not(.disabled):active:focus,\r\n .btn-primary:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-primary.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(105, 136, 228, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(105, 136, 228, 0.5);\r\n }\r\n\r\n .btn-secondary {\r\n color: var(--white);\r\n background-color: var(--secondary);\r\n border-color: var(--secondary);\r\n max-height: 36px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n .btn-secondary:hover {\r\n color: var(--white);\r\n background-color: var(--warning) !important;\r\n border-color: var(--warning) !important;\r\n }\r\n\r\n .btn-secondary:focus,\r\n .btn-secondary.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(151, 153, 166, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(151, 153, 166, 0.5);\r\n }\r\n\r\n .btn-secondary.disabled,\r\n .btn-secondary:disabled {\r\n color: var(--white);\r\n background-color: var(--secondary);\r\n border-color: var(--secondary);\r\n }\r\n\r\n .btn-secondary:not(:disabled):not(.disabled):active,\r\n .btn-secondary:not(:disabled):not(.disabled).active,\r\n .show > .btn-secondary.dropdown-toggle {\r\n color: var(--white);\r\n background-color: #6b6d7d;\r\n border-color: #656776;\r\n }\r\n\r\n .btn-secondary:not(:disabled):not(.disabled):active:focus,\r\n .btn-secondary:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-secondary.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(151, 153, 166, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(151, 153, 166, 0.5);\r\n }\r\n\r\n .btn-success {\r\n color: var(--white);\r\n background-color: var(--success);\r\n border-color: var(--success);\r\n max-height: 36px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n .btn-success:hover {\r\n color: var(--white) !important;\r\n background-color: var(--warning) !important;\r\n border-color: var(--warning) !important;\r\n }\r\n .btn-success:focus,\r\n .btn-success.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(62, 208, 156, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(62, 208, 156, 0.5);\r\n }\r\n\r\n .btn-success.disabled,\r\n .btn-success:not(:disabled):not(.disabled).active,\r\n .show > .btn-success.dropdown-toggle {\r\n color: var(--white);\r\n background-color: #169b6b;\r\n border-color: #149063;\r\n }\r\n\r\n .btn-success:not(:disabled):not(.disabled):active:focus,\r\n .btn-success:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-success.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(62, 208, 156, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(62, 208, 156, 0.5);\r\n }\r\n\r\n .btn-filter {\r\n color: var(--white);\r\n background-color: var(--info);\r\n border-color: var(--info);\r\n font-family: \"Font Awesome 5 Free\";\r\n font-weight: 900;\r\n }\r\n\r\n .btn-info {\r\n color: var(--white);\r\n background-color: var(--info);\r\n border-color: var(--info);\r\n }\r\n\r\n .btn-info:hover {\r\n color: var(--white);\r\n background-color: var(--warning) !important;\r\n border-color: var(--warning) !important;\r\n }\r\n\r\n .btn-info:focus,\r\n .btn-info.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(84, 196, 212, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(84, 196, 212, 0.5);\r\n }\r\n\r\n .btn-info.disabled,\r\n .btn-info:disabled {\r\n color: var(--white);\r\n background-color: var(--info);\r\n border-color: var(--info);\r\n }\r\n\r\n .btn-info:not(:disabled):not(.disabled):active,\r\n .btn-info:not(:disabled):not(.disabled).active,\r\n .show > .btn-info.dropdown-toggle {\r\n color: var(--white);\r\n background-color: #2a96a5;\r\n border-color: #278c9b;\r\n }\r\n\r\n .btn-info:not(:disabled):not(.disabled):active:focus,\r\n .btn-info:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-info.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(84, 196, 212, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(84, 196, 212, 0.5);\r\n }\r\n\r\n .btn-warning {\r\n color: var(--white);\r\n background-color: var(--warning);\r\n border-color: var(--warning);\r\n }\r\n\r\n .btn-warning:hover {\r\n color: var(--white);\r\n background-color: #f4b619;\r\n border-color: #f4b30d;\r\n }\r\n\r\n .btn-warning:focus,\r\n .btn-warning.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(247, 203, 91, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(247, 203, 91, 0.5);\r\n }\r\n\r\n .btn-warning.disabled,\r\n .btn-warning:disabled {\r\n color: var(--white);\r\n background-color: var(--warning);\r\n border-color: var(--warning);\r\n }\r\n\r\n .btn-warning:not(:disabled):not(.disabled):active,\r\n .btn-warning:not(:disabled):not(.disabled).active,\r\n .show > .btn-warning.dropdown-toggle {\r\n color: var(--white);\r\n background-color: #f4b30d;\r\n border-color: #e9aa0b;\r\n }\r\n\r\n .btn-warning:not(:disabled):not(.disabled):active:focus,\r\n .btn-warning:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-warning.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(247, 203, 91, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(247, 203, 91, 0.5);\r\n }\r\n\r\n .btn-danger {\r\n color: var(--white);\r\n background-color: var(--danger);\r\n border-color: var(--danger);\r\n }\r\n\r\n .btn-danger:hover {\r\n color: var(--white);\r\n background-color: var(--warning) !important;\r\n border-color: var(--warning) !important;\r\n }\r\n\r\n .btn-danger:focus,\r\n .btn-danger.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(235, 101, 88, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(235, 101, 88, 0.5);\r\n }\r\n\r\n .btn-danger.disabled,\r\n .btn-danger:disabled {\r\n color: var(--white);\r\n background-color: var(--danger);\r\n border-color: var(--danger);\r\n }\r\n\r\n .btn-danger:not(:disabled):not(.disabled):active,\r\n .btn-danger:not(:disabled):not(.disabled).active,\r\n .show > .btn-danger.dropdown-toggle {\r\n color: var(--white);\r\n background-color: #d52a1a;\r\n border-color: #ca2819;\r\n }\r\n\r\n .btn-danger:not(:disabled):not(.disabled):active:focus,\r\n .btn-danger:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-danger.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(235, 101, 88, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(235, 101, 88, 0.5);\r\n }\r\n\r\n .btn-light {\r\n color: #3a3b45;\r\n background-color: var(--light);\r\n border-color: var(--light);\r\n }\r\n\r\n .btn-light:hover {\r\n color: #3a3b45;\r\n background-color: var(--warning) !important;\r\n border-color: var(--warning) !important;\r\n }\r\n\r\n .btn-light:focus,\r\n .btn-light.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 221, 225, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(220, 221, 225, 0.5);\r\n }\r\n\r\n .btn-light.disabled,\r\n .btn-light:disabled {\r\n color: #3a3b45;\r\n background-color: var(--light);\r\n border-color: var(--light);\r\n }\r\n\r\n .btn-light:not(:disabled):not(.disabled):active,\r\n .btn-light:not(:disabled):not(.disabled).active,\r\n .show > .btn-light.dropdown-toggle {\r\n color: #3a3b45;\r\n background-color: #d4daed;\r\n border-color: #cbd3e9;\r\n }\r\n\r\n .btn-light:not(:disabled):not(.disabled):active:focus,\r\n .btn-light:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-light.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(220, 221, 225, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(220, 221, 225, 0.5);\r\n }\r\n\r\n .btn-dark {\r\n color: var(--white);\r\n background-color: var(--gray-dark) !important;\r\n border-color: var(--gray-dark) !important;\r\n }\r\n\r\n .btn-dark:hover {\r\n color: var(--white);\r\n background-color: var(--warning) !important;\r\n border-color: var(--warning) !important;\r\n }\r\n\r\n .btn-dark:focus,\r\n .btn-dark.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(115, 116, 128, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(115, 116, 128, 0.5);\r\n }\r\n\r\n .btn-dark.disabled,\r\n .btn-dark:disabled {\r\n color: var(--white);\r\n background-color: var(--dark);\r\n border-color: var(--dark);\r\n }\r\n\r\n .btn-dark:not(:disabled):not(.disabled):active,\r\n .btn-dark:not(:disabled):not(.disabled).active,\r\n .show > .btn-dark.dropdown-toggle {\r\n color: var(--white);\r\n background-color: #42444e;\r\n border-color: #3d3e47;\r\n }\r\n\r\n .btn-dark:not(:disabled):not(.disabled):active:focus,\r\n .btn-dark:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-dark.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(115, 116, 128, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(115, 116, 128, 0.5);\r\n }\r\n\r\n .btn-outline-primary {\r\n color: var(--primary);\r\n border-color: var(--primary);\r\n }\r\n\r\n .btn-outline-primary:hover {\r\n color: var(--white);\r\n background-color: var(--primary);\r\n border-color: var(--primary);\r\n }\r\n\r\n .btn-outline-primary:focus,\r\n .btn-outline-primary.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);\r\n }\r\n\r\n .btn-outline-primary.disabled,\r\n .btn-outline-primary:disabled {\r\n color: var(--primary);\r\n background-color: transparent;\r\n }\r\n\r\n .btn-outline-primary:not(:disabled):not(.disabled):active,\r\n .btn-outline-primary:not(:disabled):not(.disabled).active,\r\n .show > .btn-outline-primary.dropdown-toggle {\r\n color: var(--white);\r\n background-color: var(--primary);\r\n border-color: var(--primary);\r\n }\r\n\r\n .btn-outline-primary:not(:disabled):not(.disabled):active:focus,\r\n .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-outline-primary.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);\r\n }\r\n\r\n .btn-outline-secondary {\r\n color: var(--secondary);\r\n border-color: var(--secondary);\r\n }\r\n\r\n .btn-outline-secondary:hover {\r\n color: var(--white);\r\n background-color: var(--secondary);\r\n border-color: var(--secondary);\r\n }\r\n\r\n .btn-outline-secondary:focus,\r\n .btn-outline-secondary.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);\r\n }\r\n\r\n .btn-outline-secondary.disabled,\r\n .btn-outline-secondary:disabled {\r\n color: var(--secondary);\r\n background-color: transparent;\r\n }\r\n\r\n .btn-outline-secondary:not(:disabled):not(.disabled):active,\r\n .btn-outline-secondary:not(:disabled):not(.disabled).active,\r\n .show > .btn-outline-secondary.dropdown-toggle {\r\n color: var(--white);\r\n background-color: var(--secondary);\r\n border-color: var(--secondary);\r\n }\r\n\r\n .btn-outline-secondary:not(:disabled):not(.disabled):active:focus,\r\n .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-outline-secondary.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);\r\n }\r\n\r\n .btn-outline-success {\r\n color: var(--success);\r\n border-color: var(--success);\r\n }\r\n\r\n .btn-outline-success:hover {\r\n color: var(--white);\r\n background-color: var(--success);\r\n border-color: var(--success);\r\n }\r\n\r\n .btn-outline-success:focus,\r\n .btn-outline-success.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);\r\n }\r\n\r\n .btn-outline-success.disabled,\r\n .btn-outline-success:disabled {\r\n color: var(--success);\r\n background-color: transparent;\r\n }\r\n\r\n .btn-outline-success:not(:disabled):not(.disabled):active,\r\n .btn-outline-success:not(:disabled):not(.disabled).active,\r\n .show > .btn-outline-success.dropdown-toggle {\r\n color: var(--white);\r\n background-color: var(--success);\r\n border-color: var(--success);\r\n }\r\n\r\n .btn-outline-success:not(:disabled):not(.disabled):active:focus,\r\n .btn-outline-success:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-outline-success.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);\r\n }\r\n\r\n .btn-outline-info {\r\n color: var(--info);\r\n border-color: var(--info);\r\n }\r\n\r\n .btn-outline-info:hover {\r\n color: var(--white);\r\n background-color: var(--info);\r\n border-color: var(--info);\r\n }\r\n\r\n .btn-outline-info:focus,\r\n .btn-outline-info.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);\r\n }\r\n\r\n .btn-outline-info.disabled,\r\n .btn-outline-info:disabled {\r\n color: var(--info);\r\n background-color: transparent;\r\n }\r\n\r\n .btn-outline-info:not(:disabled):not(.disabled):active,\r\n .btn-outline-info:not(:disabled):not(.disabled).active,\r\n .show > .btn-outline-info.dropdown-toggle {\r\n color: var(--white);\r\n background-color: var(--info);\r\n border-color: var(--info);\r\n }\r\n\r\n .btn-outline-info:not(:disabled):not(.disabled):active:focus,\r\n .btn-outline-info:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-outline-info.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);\r\n }\r\n\r\n .btn-outline-warning {\r\n color: var(--warning);\r\n border-color: var(--warning);\r\n }\r\n\r\n .btn-outline-warning:hover {\r\n color: var(--white);\r\n background-color: var(--warning);\r\n border-color: var(--warning);\r\n }\r\n\r\n .btn-outline-warning:focus,\r\n .btn-outline-warning.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);\r\n }\r\n\r\n .btn-outline-warning.disabled,\r\n .btn-outline-warning:disabled {\r\n color: var(--warning);\r\n background-color: transparent;\r\n }\r\n\r\n .btn-outline-warning:not(:disabled):not(.disabled):active,\r\n .btn-outline-warning:not(:disabled):not(.disabled).active,\r\n .show > .btn-outline-warning.dropdown-toggle {\r\n color: var(--white);\r\n background-color: var(--warning);\r\n border-color: var(--warning);\r\n }\r\n\r\n .btn-outline-warning:not(:disabled):not(.disabled):active:focus,\r\n .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-outline-warning.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);\r\n }\r\n\r\n .btn-outline-danger {\r\n color: var(--danger);\r\n border-color: var(--danger);\r\n }\r\n\r\n .btn-outline-danger:hover {\r\n color: var(--white);\r\n background-color: var(--danger);\r\n border-color: var(--danger);\r\n }\r\n\r\n .btn-outline-danger:focus,\r\n .btn-outline-danger.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);\r\n }\r\n\r\n .btn-outline-danger.disabled,\r\n .btn-outline-danger:disabled {\r\n color: var(--danger);\r\n background-color: transparent;\r\n }\r\n\r\n .btn-outline-danger:not(:disabled):not(.disabled):active,\r\n .btn-outline-danger:not(:disabled):not(.disabled).active,\r\n .show > .btn-outline-danger.dropdown-toggle {\r\n color: var(--white);\r\n background-color: var(--danger);\r\n border-color: var(--danger);\r\n }\r\n\r\n .btn-outline-danger:not(:disabled):not(.disabled):active:focus,\r\n .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-outline-danger.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);\r\n }\r\n\r\n .btn-outline-light {\r\n color: var(--light);\r\n border-color: var(--light);\r\n }\r\n\r\n .btn-outline-light:hover {\r\n color: #3a3b45;\r\n background-color: var(--light);\r\n border-color: var(--light);\r\n }\r\n\r\n .btn-outline-light:focus,\r\n .btn-outline-light.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);\r\n }\r\n\r\n .btn-outline-light.disabled,\r\n .btn-outline-light:disabled {\r\n color: var(--light);\r\n background-color: transparent;\r\n }\r\n\r\n .btn-outline-light:not(:disabled):not(.disabled):active,\r\n .btn-outline-light:not(:disabled):not(.disabled).active,\r\n .show > .btn-outline-light.dropdown-toggle {\r\n color: #3a3b45;\r\n background-color: var(--light);\r\n border-color: var(--light);\r\n }\r\n\r\n .btn-outline-light:not(:disabled):not(.disabled):active:focus,\r\n .btn-outline-light:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-outline-light.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);\r\n }\r\n\r\n .btn-outline-dark {\r\n color: var(--gray-dark);\r\n border-color: var(--gray-dark);\r\n }\r\n\r\n .btn-outline-dark:hover {\r\n color: var(--white);\r\n background-color: var(--success);\r\n border-color: var(--success);\r\n }\r\n\r\n .btn-outline-dark:focus,\r\n .btn-outline-dark.focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem var(--gray-dark);\r\n box-shadow: 0 0 0 0.2rem var(--gray-dark);\r\n }\r\n\r\n .btn-outline-dark.disabled,\r\n .btn-outline-dark:disabled {\r\n color: var(--gray-dark);\r\n background-color: transparent;\r\n }\r\n\r\n .btn-outline-dark:not(:disabled):not(.disabled):active,\r\n .btn-outline-dark:not(:disabled):not(.disabled).active,\r\n .show > .btn-outline-dark.dropdown-toggle {\r\n color: var(--white);\r\n background-color: var(--success);\r\n border-color: var(--success);\r\n }\r\n\r\n .btn-outline-dark:not(:disabled):not(.disabled):active:focus,\r\n .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\r\n .show > .btn-outline-dark.dropdown-toggle:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem var(--success);\r\n box-shadow: 0 0 0 0.2rem var(--success);\r\n }\r\n\r\n .btn-link {\r\n font-weight: 400;\r\n color: var(--primary);\r\n text-decoration: none;\r\n }\r\n\r\n .btn-link:hover {\r\n color: var(--warning) !important;\r\n text-decoration: underline;\r\n }\r\n\r\n .btn-link:focus,\r\n .btn-link.focus {\r\n text-decoration: underline;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n }\r\n .btn-link:disabled,\r\n .btn-link.disabled {\r\n color: var(--secondary);\r\n pointer-events: none;\r\n }\r\n\r\n .btn-lg,\r\n .btn-group-lg > .btn {\r\n padding: 0.5rem 1rem;\r\n font-size: 1.25rem;\r\n line-height: 1.5;\r\n border-radius: 0.3rem;\r\n }\r\n\r\n .btn-sm,\r\n .btn-group-sm > .btn {\r\n padding: 0.25rem 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n border-radius: 0.2rem;\r\n }\r\n\r\n .btn-block {\r\n display: block;\r\n width: 100%;\r\n }\r\n\r\n .btn-block + .btn-block {\r\n margin-top: 0.5rem;\r\n }\r\n\r\n input[type=\"submit\"].btn-block,\r\n input[type=\"reset\"].btn-block,\r\n input[type=\"button\"].btn-block {\r\n width: 100%;\r\n }\r\n\r\n .fade {\r\n -webkit-transition: opacity 0.15s linear;\r\n transition: opacity 0.15s linear;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .fade {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .fade:not(.show) {\r\n opacity: 0;\r\n }\r\n\r\n .collapse:not(.show) {\r\n display: none;\r\n }\r\n\r\n .collapsing {\r\n position: relative;\r\n height: 0;\r\n overflow: hidden;\r\n -webkit-transition: height 0.15s ease;\r\n transition: height 0.15s ease;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .collapsing {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .dropup,\r\n .dropright,\r\n .dropdown,\r\n .dropleft {\r\n position: relative;\r\n }\r\n\r\n .dropdown-toggle {\r\n white-space: nowrap;\r\n }\r\n\r\n .dropdown-toggle::after {\r\n display: inline-block;\r\n margin-left: 0.255em;\r\n vertical-align: 0.255em;\r\n content: \"\";\r\n border-top: 0.3em solid;\r\n border-right: 0.3em solid transparent;\r\n border-bottom: 0;\r\n border-left: 0.3em solid transparent;\r\n }\r\n\r\n .dropdown-toggle:empty::after {\r\n margin-left: 0;\r\n }\r\n\r\n .dropdown-menu {\r\n position: absolute;\r\n top: 100%;\r\n left: 0;\r\n z-index: 1000;\r\n display: none;\r\n float: left;\r\n min-width: 10rem;\r\n padding: 0.5rem 0;\r\n margin: 0.125rem 0 0;\r\n font-size: 0.85rem;\r\n color: var(--secondary);\r\n text-align: left;\r\n list-style: none;\r\n background-color: var(--white);\r\n background-clip: padding-box;\r\n border: 1px solid #e3e6f0;\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .dropdown-menu-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n\r\n .dropdown-menu-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .dropdown-menu-sm-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n .dropdown-menu-sm-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .dropdown-menu-md-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n .dropdown-menu-md-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .dropdown-menu-lg-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n .dropdown-menu-lg-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .dropdown-menu-xl-left {\r\n right: auto;\r\n left: 0;\r\n }\r\n .dropdown-menu-xl-right {\r\n right: 0;\r\n left: auto;\r\n }\r\n }\r\n\r\n .dropup .dropdown-menu {\r\n top: auto;\r\n bottom: 100%;\r\n margin-top: 0;\r\n margin-bottom: 0.125rem;\r\n }\r\n\r\n .dropup .dropdown-toggle::after {\r\n display: inline-block;\r\n margin-left: 0.255em;\r\n vertical-align: 0.255em;\r\n content: \"\";\r\n border-top: 0;\r\n border-right: 0.3em solid transparent;\r\n border-bottom: 0.3em solid;\r\n border-left: 0.3em solid transparent;\r\n }\r\n\r\n .dropup .dropdown-toggle:empty::after {\r\n margin-left: 0;\r\n }\r\n\r\n .dropright .dropdown-menu {\r\n top: 0;\r\n right: auto;\r\n left: 100%;\r\n margin-top: 0;\r\n margin-left: 0.125rem;\r\n }\r\n\r\n .dropright .dropdown-toggle::after {\r\n display: inline-block;\r\n margin-left: 0.255em;\r\n vertical-align: 0.255em;\r\n content: \"\";\r\n border-top: 0.3em solid transparent;\r\n border-right: 0;\r\n border-bottom: 0.3em solid transparent;\r\n border-left: 0.3em solid;\r\n }\r\n\r\n .dropright .dropdown-toggle:empty::after {\r\n margin-left: 0;\r\n }\r\n\r\n .dropright .dropdown-toggle::after {\r\n vertical-align: 0;\r\n }\r\n\r\n .dropleft .dropdown-menu {\r\n top: 0;\r\n right: 100%;\r\n left: auto;\r\n margin-top: 0;\r\n margin-right: 0.125rem;\r\n }\r\n\r\n .dropleft .dropdown-toggle::after {\r\n display: inline-block;\r\n margin-left: 0.255em;\r\n vertical-align: 0.255em;\r\n content: \"\";\r\n }\r\n\r\n .dropleft .dropdown-toggle::after {\r\n display: none;\r\n }\r\n\r\n .dropleft .dropdown-toggle::before {\r\n display: inline-block;\r\n margin-right: 0.255em;\r\n vertical-align: 0.255em;\r\n content: \"\";\r\n border-top: 0.3em solid transparent;\r\n border-right: 0.3em solid;\r\n border-bottom: 0.3em solid transparent;\r\n }\r\n\r\n .dropleft .dropdown-toggle:empty::after {\r\n margin-left: 0;\r\n }\r\n\r\n .dropleft .dropdown-toggle::before {\r\n vertical-align: 0;\r\n }\r\n\r\n .dropdown-menu[x-placement^=\"top\"],\r\n .dropdown-menu[x-placement^=\"right\"],\r\n .dropdown-menu[x-placement^=\"bottom\"],\r\n .dropdown-menu[x-placement^=\"left\"] {\r\n right: auto;\r\n bottom: auto;\r\n }\r\n\r\n .dropdown-divider {\r\n height: 0;\r\n margin: 0.5rem 0;\r\n overflow: hidden;\r\n border-top: 1px solid #eaecf4;\r\n }\r\n\r\n .dropdown-item {\r\n display: block;\r\n width: 100%;\r\n padding: 0.25rem 1.5rem;\r\n clear: both;\r\n font-weight: 400;\r\n color: #3a3b45;\r\n text-align: inherit;\r\n white-space: nowrap;\r\n background-color: transparent;\r\n border-radius: 1.35rem;\r\n border: 0;\r\n }\r\n\r\n .dropdown-item:hover,\r\n .dropdown-item:focus {\r\n color: var(--warning) !important;\r\n text-decoration: none;\r\n background-color: var(--light);\r\n }\r\n\r\n .dropdown-item.active,\r\n .dropdown-item:active {\r\n color: var(--white);\r\n text-decoration: none;\r\n background-color: var(--primary);\r\n }\r\n\r\n .dropdown-item.disabled,\r\n .dropdown-item:disabled {\r\n color: var(--secondary);\r\n pointer-events: none;\r\n background-color: transparent;\r\n }\r\n\r\n .dropdown-menu.show {\r\n display: block;\r\n }\r\n\r\n .dropdown-header {\r\n display: block;\r\n padding: 0.5rem 1.5rem;\r\n margin-bottom: 0;\r\n font-size: 0.875rem;\r\n color: var(--secondary);\r\n white-space: nowrap;\r\n }\r\n\r\n .dropdown-item-text {\r\n display: block;\r\n padding: 0.25rem 1.5rem;\r\n color: #3a3b45;\r\n }\r\n\r\n .btn-group,\r\n .btn-group-vertical {\r\n position: relative;\r\n display: -webkit-inline-box;\r\n display: -ms-inline-flexbox;\r\n display: inline-flex;\r\n vertical-align: middle;\r\n }\r\n\r\n .btn-group > .btn,\r\n .btn-group-vertical > .btn {\r\n position: relative;\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1 1 auto;\r\n flex: 1 1 auto;\r\n }\r\n\r\n .btn-group > .btn:hover,\r\n .btn-group-vertical > .btn:hover {\r\n z-index: 1;\r\n }\r\n\r\n .btn-group > .btn:focus,\r\n .btn-group > .btn:active,\r\n .btn-group > .btn.active,\r\n .btn-group-vertical > .btn:focus,\r\n .btn-group-vertical > .btn:active,\r\n .btn-group-vertical > .btn.active {\r\n z-index: 1;\r\n }\r\n\r\n .btn-toolbar {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n -webkit-box-pack: start;\r\n -ms-flex-pack: start;\r\n justify-content: flex-start;\r\n }\r\n\r\n .btn-toolbar .input-group {\r\n width: auto;\r\n }\r\n\r\n .btn-group > .btn:not(:first-child),\r\n .btn-group > .btn-group:not(:first-child) {\r\n margin-left: -1px;\r\n }\r\n\r\n .btn-group > .btn:not(:last-child):not(.dropdown-toggle),\r\n .btn-group > .btn-group:not(:last-child) > .btn {\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n\r\n .btn-group > .btn:not(:first-child),\r\n .btn-group > .btn-group:not(:first-child) > .btn {\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n\r\n .dropdown-toggle-split {\r\n padding-right: 0.5625rem;\r\n padding-left: 0.5625rem;\r\n }\r\n\r\n .dropdown-toggle-split::after,\r\n .dropup .dropdown-toggle-split::after,\r\n .dropright .dropdown-toggle-split::after {\r\n margin-left: 0;\r\n }\r\n\r\n .dropleft .dropdown-toggle-split::before {\r\n margin-right: 0;\r\n }\r\n\r\n .btn-sm + .dropdown-toggle-split,\r\n .btn-group-sm > .btn + .dropdown-toggle-split {\r\n padding-right: 0.375rem;\r\n padding-left: 0.375rem;\r\n }\r\n\r\n .btn-lg + .dropdown-toggle-split,\r\n .btn-group-lg > .btn + .dropdown-toggle-split {\r\n padding-right: 0.75rem;\r\n padding-left: 0.75rem;\r\n }\r\n\r\n .btn-group-vertical {\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n -webkit-box-align: start;\r\n -ms-flex-align: start;\r\n align-items: flex-start;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n }\r\n\r\n .btn-group-vertical > .btn,\r\n .btn-group-vertical > .btn-group {\r\n width: 100%;\r\n }\r\n\r\n .btn-group-vertical > .btn:not(:first-child),\r\n .btn-group-vertical > .btn-group:not(:first-child) {\r\n margin-top: -1px;\r\n }\r\n\r\n .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\r\n .btn-group-vertical > .btn-group:not(:last-child) > .btn {\r\n border-bottom-right-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n\r\n .btn-group-vertical > .btn:not(:first-child),\r\n .btn-group-vertical > .btn-group:not(:first-child) > .btn {\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n\r\n .btn-group-toggle > .btn,\r\n .btn-group-toggle > .btn-group > .btn {\r\n margin-bottom: 0;\r\n }\r\n\r\n .btn-group-toggle > .btn input[type=\"radio\"],\r\n .btn-group-toggle > .btn input[type=\"checkbox\"],\r\n .btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\r\n .btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\r\n position: absolute;\r\n clip: rect(0, 0, 0, 0);\r\n pointer-events: none;\r\n }\r\n\r\n .input-group {\r\n position: relative;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n -webkit-box-align: stretch;\r\n -ms-flex-align: stretch;\r\n align-items: stretch;\r\n width: 100%;\r\n }\r\n\r\n .input-group > .form-control,\r\n .input-group > .form-control-plaintext,\r\n .input-group > .custom-select,\r\n .input-group > .custom-file {\r\n position: relative;\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1 1 auto;\r\n flex: 1 1 auto;\r\n width: 1%;\r\n margin-bottom: 0;\r\n }\r\n\r\n .input-group > .form-control + .form-control,\r\n .input-group > .form-control + .custom-select,\r\n .input-group > .form-control + .custom-file,\r\n .input-group > .form-control-plaintext + .form-control,\r\n .input-group > .form-control-plaintext + .custom-select,\r\n .input-group > .form-control-plaintext + .custom-file,\r\n .input-group > .custom-select + .form-control,\r\n .input-group > .custom-select + .custom-select,\r\n .input-group > .custom-select + .custom-file,\r\n .input-group > .custom-file + .form-control,\r\n .input-group > .custom-file + .custom-select,\r\n .input-group > .custom-file + .custom-file {\r\n margin-left: -1px;\r\n }\r\n\r\n .input-group > .form-control:focus,\r\n .input-group > .custom-select:focus,\r\n .input-group > .custom-file .custom-file-input:focus ~ .custom-file-label {\r\n z-index: 3;\r\n }\r\n\r\n .input-group > .custom-file .custom-file-input:focus {\r\n z-index: 4;\r\n }\r\n\r\n .input-group > .form-control:not(:last-child),\r\n .input-group > .custom-select:not(:last-child) {\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n\r\n .input-group > .form-control:not(:first-child),\r\n .input-group > .custom-select:not(:first-child) {\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n\r\n .input-group > .custom-file {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n }\r\n\r\n .input-group > .custom-file:not(:last-child) .custom-file-label,\r\n .input-group > .custom-file:not(:last-child) .custom-file-label::after {\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n\r\n .input-group > .custom-file:not(:first-child) .custom-file-label {\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n\r\n .input-group-text.arrow {\r\n border-top-right-radius: 1.35rem !important;\r\n border-bottom-right-radius: 1.35rem !important;\r\n border-bottom-left-radius: 0px;\r\n border-top-left-radius: 0px;\r\n }\r\n .input-group-prepend,\r\n .input-group-append {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n }\r\n\r\n .input-group-prepend .btn,\r\n .input-group-append .btn {\r\n position: relative;\r\n z-index: 2;\r\n }\r\n\r\n .input-group-prepend .btn:focus,\r\n .input-group-append .btn:focus {\r\n z-index: 3;\r\n }\r\n\r\n .input-group-text > i {\r\n margin: auto !important;\r\n }\r\n\r\n .input-group-text {\r\n min-width: 46px !important;\r\n max-width: 46px !important;\r\n }\r\n\r\n .input-group-prepend {\r\n margin-right: -1px;\r\n }\r\n\r\n .input-group-append {\r\n margin-left: -1px;\r\n }\r\n\r\n .input-group-text {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n padding: 0.375rem 0.75rem;\r\n margin-bottom: 0;\r\n font-size: 1rem;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n color: #6e707e;\r\n text-align: center;\r\n white-space: nowrap;\r\n background-color: #eaecf4;\r\n border: 1px solid #d1d3e2;\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .input-group-text input[type=\"radio\"],\r\n .input-group-text input[type=\"checkbox\"] {\r\n margin-top: 0;\r\n }\r\n\r\n .input-group-lg > .form-control:not(textarea),\r\n .input-group-lg > .custom-select {\r\n height: calc(1.5em + 1rem + 2px);\r\n }\r\n\r\n .input-group-lg > .form-control,\r\n .input-group-lg > .custom-select,\r\n .input-group-lg > .input-group-prepend > .input-group-text,\r\n .input-group-lg > .input-group-append > .input-group-text,\r\n .input-group-lg > .input-group-prepend > .btn,\r\n .input-group-lg > .input-group-append > .btn {\r\n padding: 0.5rem 1rem;\r\n font-size: 1.25rem;\r\n line-height: 1.5;\r\n border-radius: 0.3rem;\r\n }\r\n\r\n .input-group-sm > .form-control:not(textarea),\r\n .input-group-sm > .custom-select {\r\n height: calc(1.5em + 0.5rem + 2px);\r\n }\r\n\r\n .input-group-sm > .form-control,\r\n .input-group-sm > .custom-select,\r\n .input-group-sm > .input-group-prepend > .input-group-text,\r\n .input-group-sm > .input-group-append > .input-group-text,\r\n .input-group-sm > .input-group-prepend > .btn,\r\n .input-group-sm > .input-group-append > .btn {\r\n padding: 0.25rem 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n border-radius: 0.2rem;\r\n }\r\n\r\n .input-group-lg > .custom-select,\r\n .input-group-sm > .custom-select {\r\n padding-right: 1.75rem;\r\n }\r\n\r\n .input-group > .input-group-prepend > .btn,\r\n .input-group > .input-group-prepend > .input-group-text,\r\n .input-group > .input-group-append:not(:last-child) > .btn,\r\n .input-group > .input-group-append:not(:last-child) > .input-group-text,\r\n .input-group\r\n > .input-group-append:last-child\r\n > .btn:not(:last-child):not(.dropdown-toggle),\r\n .input-group\r\n > .input-group-append:last-child\r\n > .input-group-text:not(:last-child) {\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n\r\n .custom-control {\r\n position: relative;\r\n display: block;\r\n min-height: 1.5rem;\r\n padding-left: 1.5rem;\r\n }\r\n\r\n .custom-control-inline {\r\n display: -webkit-inline-box;\r\n display: -ms-inline-flexbox;\r\n display: inline-flex;\r\n margin-right: 1rem;\r\n }\r\n\r\n .custom-control-input {\r\n position: absolute;\r\n z-index: -1;\r\n opacity: 0;\r\n }\r\n\r\n .custom-control-input:checked ~ .custom-control-label::before {\r\n color: var(--white);\r\n border-color: var(--primary);\r\n background-color: var(--primary);\r\n }\r\n\r\n .custom-control-input:focus ~ .custom-control-label::before {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .custom-control-input:focus:not(:checked) ~ .custom-control-label::before {\r\n border-color: #bac8f3;\r\n }\r\n\r\n .custom-control-input:not(:disabled):active\r\n ~ .custom-control-label::before {\r\n color: var(--white);\r\n background-color: #e5ebfa;\r\n border-color: #e5ebfa;\r\n }\r\n\r\n .custom-control-input:disabled ~ .custom-control-label {\r\n color: var(--secondary);\r\n }\r\n\r\n .custom-control-input:disabled ~ .custom-control-label::before {\r\n background-color: #eaecf4;\r\n }\r\n\r\n .custom-control-label {\r\n position: relative;\r\n margin-bottom: 0;\r\n vertical-align: top;\r\n }\r\n\r\n .custom-control-label::before {\r\n position: absolute;\r\n top: 0.25rem;\r\n left: -1.5rem;\r\n display: block;\r\n width: 1rem;\r\n height: 1rem;\r\n pointer-events: none;\r\n content: \"\";\r\n background-color: var(--white);\r\n border: #b7b9cc solid 1px;\r\n }\r\n\r\n .custom-control-label::after {\r\n position: absolute;\r\n top: 0.25rem;\r\n left: -1.5rem;\r\n display: block;\r\n width: 1rem;\r\n height: 1rem;\r\n content: \"\";\r\n background: no-repeat 50% / 50% 50%;\r\n }\r\n\r\n .custom-checkbox .custom-control-label::before {\r\n border-radius: 0.35rem;\r\n }\r\n\r\n .custom-checkbox\r\n .custom-control-input:checked\r\n ~ .custom-control-label::after {\r\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e\");\r\n }\r\n\r\n .custom-checkbox\r\n .custom-control-input:indeterminate\r\n ~ .custom-control-label::before {\r\n border-color: var(--primary);\r\n background-color: var(--primary);\r\n }\r\n\r\n .custom-checkbox\r\n .custom-control-input:indeterminate\r\n ~ .custom-control-label::after {\r\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\");\r\n }\r\n\r\n .custom-checkbox\r\n .custom-control-input:disabled:checked\r\n ~ .custom-control-label::before {\r\n background-color: rgba(78, 115, 223, 0.5);\r\n }\r\n\r\n .custom-checkbox\r\n .custom-control-input:disabled:indeterminate\r\n ~ .custom-control-label::before {\r\n background-color: rgba(78, 115, 223, 0.5);\r\n }\r\n\r\n .custom-radio .custom-control-label::before {\r\n border-radius: 50%;\r\n }\r\n\r\n .custom-radio .custom-control-input:checked ~ .custom-control-label::after {\r\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\r\n }\r\n\r\n .custom-radio\r\n .custom-control-input:disabled:checked\r\n ~ .custom-control-label::before {\r\n background-color: rgba(78, 115, 223, 0.5);\r\n }\r\n\r\n .custom-switch {\r\n padding-left: 2.25rem;\r\n }\r\n\r\n .custom-switch .custom-control-label::before {\r\n left: -2.25rem;\r\n width: 1.75rem;\r\n pointer-events: all;\r\n border-radius: 0.5rem;\r\n }\r\n\r\n .custom-switch .custom-control-label::after {\r\n top: calc(0.25rem + 2px);\r\n left: calc(-2.25rem + 2px);\r\n width: calc(1rem - 4px);\r\n height: calc(1rem - 4px);\r\n background-color: #b7b9cc;\r\n border-radius: 0.5rem;\r\n -webkit-transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n transition: transform 0.15s ease-in-out,\r\n background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,\r\n box-shadow 0.15s ease-in-out;\r\n transition: transform 0.15s ease-in-out,\r\n background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,\r\n box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .custom-switch .custom-control-label::after {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .custom-switch\r\n .custom-control-input:checked\r\n ~ .custom-control-label::after {\r\n background-color: var(--white);\r\n -webkit-transform: translateX(0.75rem);\r\n transform: translateX(0.75rem);\r\n }\r\n\r\n .custom-switch\r\n .custom-control-input:disabled:checked\r\n ~ .custom-control-label::before {\r\n background-color: rgba(78, 115, 223, 0.5);\r\n }\r\n\r\n .custom-select {\r\n display: inline-block;\r\n width: 100%;\r\n height: calc(1.5em + 0.75rem + 2px);\r\n padding: 0.375rem 1.75rem 0.375rem 0.75rem;\r\n font-size: 1rem;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n color: #6e707e;\r\n vertical-align: middle;\r\n background: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%235a5c69' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\")\r\n no-repeat right 0.75rem center/8px 10px;\r\n background-color: var(--white);\r\n border: 1px solid #d1d3e2;\r\n border-radius: 1.35rem;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n appearance: none;\r\n border-bottom-left-radius: 0px !important;\r\n border-top-left-radius: 0px !important;\r\n }\r\n\r\n .custom-select:focus {\r\n border-color: #bac8f3;\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .custom-select:focus::-ms-value {\r\n color: #6e707e;\r\n background-color: var(--white);\r\n }\r\n\r\n .custom-select[multiple],\r\n .custom-select[size]:not([size=\"1\"]) {\r\n height: auto;\r\n padding-right: 0.75rem;\r\n background-image: none;\r\n }\r\n\r\n .custom-select:disabled {\r\n color: var(--secondary);\r\n background-color: #eaecf4;\r\n }\r\n\r\n .custom-select::-ms-expand {\r\n display: none;\r\n }\r\n\r\n .custom-select-sm {\r\n height: calc(1.5em + 0.5rem + 2px);\r\n padding-top: 0.25rem;\r\n padding-bottom: 0.25rem;\r\n padding-left: 0.5rem;\r\n font-size: 0.875rem;\r\n }\r\n\r\n .custom-select-lg {\r\n height: calc(1.5em + 1rem + 2px);\r\n padding-top: 0.5rem;\r\n padding-bottom: 0.5rem;\r\n padding-left: 1rem;\r\n font-size: 1.25rem;\r\n }\r\n\r\n .custom-file {\r\n position: relative;\r\n display: inline-block;\r\n width: 100%;\r\n height: calc(1.5em + 0.75rem + 2px);\r\n margin-bottom: 0;\r\n }\r\n\r\n .custom-file-input {\r\n position: relative;\r\n z-index: 2;\r\n width: 100%;\r\n height: calc(1.5em + 0.75rem + 2px);\r\n margin: 0;\r\n opacity: 0;\r\n }\r\n\r\n .custom-file-input:focus ~ .custom-file-label {\r\n border-color: #bac8f3;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .custom-file-input:disabled ~ .custom-file-label {\r\n background-color: #eaecf4;\r\n }\r\n\r\n .custom-file-input:lang(en) ~ .custom-file-label::after {\r\n content: \"Browse\";\r\n }\r\n\r\n .custom-file-input ~ .custom-file-label[data-browse]::after {\r\n content: attr(data-browse);\r\n }\r\n\r\n .custom-file-label {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n z-index: 1;\r\n height: calc(1.5em + 0.75rem + 2px);\r\n padding: 0.375rem 0.75rem;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n color: #6e707e;\r\n background-color: var(--white);\r\n border: 1px solid #d1d3e2;\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .custom-file-label::after {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n z-index: 3;\r\n display: block;\r\n height: calc(1.5em + 0.75rem);\r\n padding: 0.375rem 0.75rem;\r\n line-height: 1.5;\r\n color: #6e707e;\r\n content: \"Browse\";\r\n background-color: #eaecf4;\r\n border-left: inherit;\r\n border-radius: 0 1.35rem 0.35rem 0;\r\n }\r\n\r\n .custom-range {\r\n width: 100%;\r\n height: calc(1rem + 0.4rem);\r\n padding: 0;\r\n background-color: transparent;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n appearance: none;\r\n }\r\n\r\n .custom-range:focus {\r\n outline: none;\r\n }\r\n\r\n .custom-range:focus::-webkit-slider-thumb {\r\n -webkit-box-shadow: 0 0 0 1px var(--white),\r\n 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n box-shadow: 0 0 0 1px var(--white),\r\n 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .custom-range:focus::-moz-range-thumb {\r\n box-shadow: 0 0 0 1px var(--white),\r\n 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .custom-range:focus::-ms-thumb {\r\n box-shadow: 0 0 0 1px var(--white),\r\n 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .custom-range::-moz-focus-outer {\r\n border: 0;\r\n }\r\n\r\n .custom-range::-webkit-slider-thumb {\r\n width: 1rem;\r\n height: 1rem;\r\n margin-top: -0.25rem;\r\n background-color: var(--primary);\r\n border: 0;\r\n border-radius: 1rem;\r\n -webkit-transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n -webkit-appearance: none;\r\n appearance: none;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .custom-range::-webkit-slider-thumb {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .custom-range::-webkit-slider-thumb:active {\r\n background-color: #e5ebfa;\r\n }\r\n\r\n .custom-range::-webkit-slider-runnable-track {\r\n width: 100%;\r\n height: 0.5rem;\r\n color: transparent;\r\n cursor: pointer;\r\n background-color: #dddfeb;\r\n border-color: transparent;\r\n border-radius: 1rem;\r\n }\r\n\r\n .custom-range::-moz-range-thumb {\r\n width: 1rem;\r\n height: 1rem;\r\n background-color: var(--primary);\r\n border: 0;\r\n border-radius: 1rem;\r\n -webkit-transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n -moz-appearance: none;\r\n appearance: none;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .custom-range::-moz-range-thumb {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .custom-range::-moz-range-thumb:active {\r\n background-color: #e5ebfa;\r\n }\r\n\r\n .custom-range::-moz-range-track {\r\n width: 100%;\r\n height: 0.5rem;\r\n color: transparent;\r\n cursor: pointer;\r\n background-color: #dddfeb;\r\n border-color: transparent;\r\n border-radius: 1rem;\r\n }\r\n\r\n .custom-range::-ms-thumb {\r\n width: 1rem;\r\n height: 1rem;\r\n margin-top: 0;\r\n margin-right: 0.2rem;\r\n margin-left: 0.2rem;\r\n background-color: var(--primary);\r\n border: 0;\r\n border-radius: 1rem;\r\n -webkit-transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n appearance: none;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .custom-range::-ms-thumb {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .custom-range::-ms-thumb:active {\r\n background-color: #e5ebfa;\r\n }\r\n\r\n .custom-range::-ms-track {\r\n width: 100%;\r\n height: 0.5rem;\r\n color: transparent;\r\n cursor: pointer;\r\n background-color: transparent;\r\n border-color: transparent;\r\n border-width: 0.5rem;\r\n }\r\n\r\n .custom-range::-ms-fill-lower {\r\n background-color: #dddfeb;\r\n border-radius: 1rem;\r\n }\r\n\r\n .custom-range::-ms-fill-upper {\r\n margin-right: 15px;\r\n background-color: #dddfeb;\r\n border-radius: 1rem;\r\n }\r\n\r\n .custom-range:disabled::-webkit-slider-thumb {\r\n background-color: #b7b9cc;\r\n }\r\n\r\n .custom-range:disabled::-webkit-slider-runnable-track {\r\n cursor: default;\r\n }\r\n\r\n .custom-range:disabled::-moz-range-thumb {\r\n background-color: #b7b9cc;\r\n }\r\n\r\n .custom-range:disabled::-moz-range-track {\r\n cursor: default;\r\n }\r\n\r\n .custom-range:disabled::-ms-thumb {\r\n background-color: #b7b9cc;\r\n }\r\n\r\n .custom-control-label::before,\r\n .custom-file-label,\r\n .custom-select {\r\n -webkit-transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n transition: background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .custom-control-label::before,\r\n .custom-file-label,\r\n .custom-select {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .fa-person-digging {\r\n background-color: white;\r\n -webkit-mask: url(../images/fontawesome-v6/person-digging-solid.svg)\r\n no-repeat center;\r\n mask: url(../images/fontawesome-v6/person-digging-solid.svg) no-repeat\r\n center;\r\n }\r\n\r\n .nav-tabs-icon .nav-link.active > .zuko,\r\n .nav-tabs-icon .nav-link.active > .projekt,\r\n .nav-tabs-icon .nav-link.active > .fa-stack.fa-1x > .fa-person-digging {\r\n background-color: var(--gray-dark) !important;\r\n }\r\n\r\n .nav {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n padding-left: 0;\r\n margin-bottom: 0;\r\n list-style: none;\r\n }\r\n\r\n .nav-link {\r\n display: block;\r\n padding: 0.5rem 1rem;\r\n }\r\n\r\n .nav-item > .nav-link.nav-btn {\r\n text-decoration: none !important;\r\n }\r\n .tab-text {\r\n text-decoration: none !important;\r\n }\r\n\r\n .nav-link .tab-text {\r\n min-height: 45px;\r\n height: 45px;\r\n color: white !important;\r\n }\r\n\r\n .nav-link.active .tab-text {\r\n color: var(--gray-dark) !important;\r\n }\r\n\r\n .nav-link:hover,\r\n .nav-link:focus {\r\n text-decoration: none;\r\n }\r\n\r\n .nav-tabs-icon .nav-link.disabled {\r\n color: var(--secondary);\r\n pointer-events: none;\r\n cursor: default;\r\n }\r\n\r\n .nav-tabs-icon {\r\n border-bottom: 1px solid #dddfeb;\r\n }\r\n\r\n .small-height-item .nav-link {\r\n max-height: 75px;\r\n }\r\n\r\n .nav-tabs-icon .nav-link {\r\n background-color: var(--gray-dark) !important;\r\n border-top-left-radius: 0.35rem;\r\n border-top-right-radius: 0.35rem;\r\n }\r\n\r\n .nav-tabs-icon .nav-link .fa-stack {\r\n color: white !important;\r\n border-color: white !important;\r\n }\r\n\r\n .nav-tabs-icon .nav-link.active {\r\n background-color: white !important;\r\n color: var(--gray-dark) !important;\r\n border-color: var(--gray-dark) !important;\r\n border-bottom: none !important;\r\n }\r\n\r\n .nav-link.active .tab-icon {\r\n color: var(--gray-dark) !important;\r\n }\r\n\r\n .nav-tabs-icon .nav-link.active > .fa-stack,\r\n .nav-tabs-icon .nav-link.active > .fa-stack {\r\n color: var(--gray-dark) !important;\r\n }\r\n\r\n .small-height-item {\r\n min-height: 80px !important;\r\n height: 80px !important;\r\n }\r\n\r\n .small-height-link {\r\n max-height: 75px !important;\r\n }\r\n\r\n .nav-tabs-icon .nav-item {\r\n width: 181px;\r\n min-height: 92px;\r\n height: 92px;\r\n text-align: center;\r\n word-wrap: break-word;\r\n margin: 1px;\r\n margin-bottom: 2px;\r\n border-bottom: 0px !important;\r\n }\r\n\r\n .nav-tabs-icon > .nav-item > .nav-link.active {\r\n background-color: rgb(255, 255, 255) !important;\r\n border-right: 1px solid rgb(221, 223, 235) !important;\r\n border-left: 1px solid rgb(221, 223, 235) !important;\r\n border-top: 1px solid rgb(221, 223, 235) !important;\r\n border-bottom: 1px solid rgb(255, 255, 255) !important;\r\n border-top-left-radius: 0.35rem;\r\n border-top-right-radius: 0.35rem;\r\n }\r\n\r\n .nav-tabs-icon .nav-link:hover,\r\n .nav-tabs-icon .nav-link:focus {\r\n border-color: #eaecf4 #eaecf4 #dddfeb;\r\n }\r\n\r\n .nav-tabs-icon .nav-link.disabled {\r\n color: var(--secondary);\r\n background-color: transparent;\r\n border-color: transparent;\r\n }\r\n\r\n .nav-tabs-icon .nav-link.active > .tab-icon {\r\n color: white !important;\r\n }\r\n .nav-tabs .dropdown-menu {\r\n margin-top: -1px;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n\r\n .nav-pills .nav-link {\r\n border-radius: 0.35rem;\r\n }\r\n\r\n .nav-pills .nav-link.active,\r\n .nav-pills .show > .nav-link {\r\n color: var(--white);\r\n background-color: var(--primary);\r\n }\r\n\r\n .nav-fill .nav-item {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1 1 auto;\r\n flex: 1 1 auto;\r\n text-align: center;\r\n }\r\n\r\n .nav-justified .nav-item {\r\n -ms-flex-preferred-size: 0;\r\n flex-basis: 0;\r\n -webkit-box-flex: 1;\r\n -ms-flex-positive: 1;\r\n flex-grow: 1;\r\n text-align: center;\r\n }\r\n\r\n .tab-content > .tab-pane {\r\n display: none;\r\n }\r\n\r\n .tab-content > .active {\r\n display: block;\r\n }\r\n\r\n .navbar {\r\n position: relative;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: justify;\r\n -ms-flex-pack: justify;\r\n justify-content: space-between;\r\n padding: 0.5rem 1rem;\r\n }\r\n\r\n .navbar > .container,\r\n .navbar > .container-fluid {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: justify;\r\n -ms-flex-pack: justify;\r\n justify-content: space-between;\r\n }\r\n\r\n .navbar-brand {\r\n display: inline-block;\r\n padding-top: 0.3125rem;\r\n padding-bottom: 0.3125rem;\r\n margin-right: 1rem;\r\n font-size: 1.25rem;\r\n line-height: inherit;\r\n white-space: nowrap;\r\n }\r\n\r\n .navbar-brand:hover,\r\n .navbar-brand:focus {\r\n text-decoration: none;\r\n }\r\n\r\n .navbar-nav {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n padding-left: 0;\r\n margin-bottom: 0;\r\n list-style: none;\r\n }\r\n\r\n .navbar-nav .nav-link {\r\n padding-right: 0;\r\n padding-left: 0;\r\n }\r\n\r\n .navbar-nav .dropdown-menu {\r\n position: static;\r\n float: none;\r\n }\r\n\r\n .navbar-text {\r\n display: inline-block;\r\n padding-top: 0.5rem;\r\n padding-bottom: 0.5rem;\r\n }\r\n\r\n .navbar-collapse {\r\n -ms-flex-preferred-size: 100%;\r\n flex-basis: 100%;\r\n -webkit-box-flex: 1;\r\n -ms-flex-positive: 1;\r\n flex-grow: 1;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n }\r\n\r\n .navbar-toggler {\r\n padding: 0.25rem 0.75rem;\r\n font-size: 1.25rem;\r\n line-height: 1;\r\n background-color: transparent;\r\n border: 1px solid transparent;\r\n border-radius: 0.35rem;\r\n }\r\n\r\n .navbar-toggler:hover,\r\n .navbar-toggler:focus {\r\n text-decoration: none;\r\n }\r\n\r\n .navbar-toggler-icon {\r\n display: inline-block;\r\n width: 1.5em;\r\n height: 1.5em;\r\n vertical-align: middle;\r\n content: \"\";\r\n background: no-repeat center center;\r\n background-size: 100% 100%;\r\n }\r\n\r\n @media (max-width: 575.98px) {\r\n .navbar-expand-sm > .container,\r\n .navbar-expand-sm > .container-fluid {\r\n padding-right: 0;\r\n padding-left: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .navbar-expand-sm {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row nowrap;\r\n flex-flow: row nowrap;\r\n -webkit-box-pack: start;\r\n -ms-flex-pack: start;\r\n justify-content: flex-start;\r\n }\r\n .navbar-expand-sm .navbar-nav {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n .navbar-expand-sm .navbar-nav .dropdown-menu {\r\n position: absolute;\r\n }\r\n .navbar-expand-sm .navbar-nav .nav-link {\r\n padding-right: 0.5rem;\r\n padding-left: 0.5rem;\r\n }\r\n .navbar-expand-sm > .container,\r\n .navbar-expand-sm > .container-fluid {\r\n -ms-flex-wrap: nowrap;\r\n flex-wrap: nowrap;\r\n }\r\n .navbar-expand-sm .navbar-collapse {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n -ms-flex-preferred-size: auto;\r\n flex-basis: auto;\r\n }\r\n .navbar-expand-sm .navbar-toggler {\r\n display: none;\r\n }\r\n }\r\n\r\n @media (max-width: 767.98px) {\r\n .navbar-expand-md > .container,\r\n .navbar-expand-md > .container-fluid {\r\n padding-right: 0;\r\n padding-left: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .navbar-expand-md {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row nowrap;\r\n flex-flow: row nowrap;\r\n -webkit-box-pack: start;\r\n -ms-flex-pack: start;\r\n justify-content: flex-start;\r\n }\r\n .navbar-expand-md .navbar-nav {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n .navbar-expand-md .navbar-nav .dropdown-menu {\r\n position: absolute;\r\n }\r\n .navbar-expand-md .navbar-nav .nav-link {\r\n padding-right: 0.5rem;\r\n padding-left: 0.5rem;\r\n }\r\n .navbar-expand-md > .container,\r\n .navbar-expand-md > .container-fluid {\r\n -ms-flex-wrap: nowrap;\r\n flex-wrap: nowrap;\r\n }\r\n .navbar-expand-md .navbar-collapse {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n -ms-flex-preferred-size: auto;\r\n flex-basis: auto;\r\n }\r\n .navbar-expand-md .navbar-toggler {\r\n display: none;\r\n }\r\n }\r\n\r\n @media (max-width: 991.98px) {\r\n .navbar-expand-lg > .container,\r\n .navbar-expand-lg > .container-fluid {\r\n padding-right: 0;\r\n padding-left: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .navbar-expand-lg {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row nowrap;\r\n flex-flow: row nowrap;\r\n -webkit-box-pack: start;\r\n -ms-flex-pack: start;\r\n justify-content: flex-start;\r\n }\r\n .navbar-expand-lg .navbar-nav {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n .navbar-expand-lg .navbar-nav .dropdown-menu {\r\n position: absolute;\r\n }\r\n .navbar-expand-lg .navbar-nav .nav-link {\r\n padding-right: 0.5rem;\r\n padding-left: 0.5rem;\r\n }\r\n .navbar-expand-lg > .container,\r\n .navbar-expand-lg > .container-fluid {\r\n -ms-flex-wrap: nowrap;\r\n flex-wrap: nowrap;\r\n }\r\n .navbar-expand-lg .navbar-collapse {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n -ms-flex-preferred-size: auto;\r\n flex-basis: auto;\r\n }\r\n .navbar-expand-lg .navbar-toggler {\r\n display: none;\r\n }\r\n }\r\n\r\n @media (max-width: 1199.98px) {\r\n .navbar-expand-xl > .container,\r\n .navbar-expand-xl > .container-fluid {\r\n padding-right: 0;\r\n padding-left: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .navbar-expand-xl {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row nowrap;\r\n flex-flow: row nowrap;\r\n -webkit-box-pack: start;\r\n -ms-flex-pack: start;\r\n justify-content: flex-start;\r\n }\r\n .navbar-expand-xl .navbar-nav {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n .navbar-expand-xl .navbar-nav .dropdown-menu {\r\n position: absolute;\r\n }\r\n .navbar-expand-xl .navbar-nav .nav-link {\r\n padding-right: 0.5rem;\r\n padding-left: 0.5rem;\r\n }\r\n .navbar-expand-xl > .container,\r\n .navbar-expand-xl > .container-fluid {\r\n -ms-flex-wrap: nowrap;\r\n flex-wrap: nowrap;\r\n }\r\n .navbar-expand-xl .navbar-collapse {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n -ms-flex-preferred-size: auto;\r\n flex-basis: auto;\r\n }\r\n .navbar-expand-xl .navbar-toggler {\r\n display: none;\r\n }\r\n }\r\n\r\n .navbar-expand {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row nowrap;\r\n flex-flow: row nowrap;\r\n -webkit-box-pack: start;\r\n -ms-flex-pack: start;\r\n justify-content: flex-start;\r\n }\r\n\r\n .navbar-expand > .container,\r\n .navbar-expand > .container-fluid {\r\n padding-right: 0;\r\n padding-left: 0;\r\n }\r\n\r\n .navbar-expand .navbar-nav {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n\r\n .navbar-expand .navbar-nav .dropdown-menu {\r\n position: absolute;\r\n }\r\n\r\n .navbar-expand .navbar-nav .nav-link {\r\n padding-right: 0.5rem;\r\n padding-left: 0.5rem;\r\n }\r\n\r\n .navbar-expand > .container,\r\n .navbar-expand > .container-fluid {\r\n -ms-flex-wrap: nowrap;\r\n flex-wrap: nowrap;\r\n }\r\n\r\n .navbar-expand .navbar-collapse {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n -ms-flex-preferred-size: auto;\r\n flex-basis: auto;\r\n }\r\n\r\n .navbar-expand .navbar-toggler {\r\n display: none;\r\n }\r\n\r\n .navbar-light .navbar-brand {\r\n color: rgba(0, 0, 0, 0.9);\r\n }\r\n\r\n .navbar-light .navbar-brand:hover,\r\n .navbar-light .navbar-brand:focus {\r\n color: rgba(0, 0, 0, 0.9);\r\n }\r\n\r\n .navbar-light .navbar-nav .nav-link {\r\n color: rgba(0, 0, 0, 0.5);\r\n }\r\n\r\n .navbar-light .navbar-nav .nav-link:hover,\r\n .navbar-light .navbar-nav .nav-link:focus {\r\n color: rgba(0, 0, 0, 0.7);\r\n }\r\n\r\n .navbar-light .navbar-nav .nav-link.disabled {\r\n color: rgba(0, 0, 0, 0.3);\r\n }\r\n\r\n .navbar-light .navbar-nav .show > .nav-link,\r\n .navbar-light .navbar-nav .active > .nav-link,\r\n .navbar-light .navbar-nav .nav-link.show,\r\n .navbar-light .navbar-nav .nav-link.active {\r\n color: rgba(0, 0, 0, 0.9);\r\n }\r\n\r\n .navbar-light .navbar-toggler {\r\n color: rgba(0, 0, 0, 0.5);\r\n border-color: rgba(0, 0, 0, 0.1);\r\n }\r\n\r\n .navbar-light .navbar-toggler-icon {\r\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\r\n }\r\n\r\n .navbar-light .navbar-text {\r\n color: rgba(0, 0, 0, 0.5);\r\n }\r\n\r\n .navbar-light .navbar-text a {\r\n color: rgba(0, 0, 0, 0.9);\r\n }\r\n\r\n .navbar-light .navbar-text a:hover,\r\n .navbar-light .navbar-text a:focus {\r\n color: rgba(0, 0, 0, 0.9);\r\n }\r\n\r\n .navbar-dark .navbar-brand {\r\n color: var(--white);\r\n }\r\n\r\n .navbar-dark .navbar-brand:hover,\r\n .navbar-dark .navbar-brand:focus {\r\n color: var(--white);\r\n }\r\n\r\n .navbar-dark .navbar-nav .nav-link {\r\n color: rgba(255, 255, 255, 0.5);\r\n }\r\n\r\n .navbar-dark .navbar-nav .nav-link:hover,\r\n .navbar-dark .navbar-nav .nav-link:focus {\r\n color: rgba(255, 255, 255, 0.75);\r\n }\r\n\r\n .navbar-dark .navbar-nav .nav-link.disabled {\r\n color: rgba(255, 255, 255, 0.25);\r\n }\r\n\r\n .navbar-dark .navbar-nav .show > .nav-link,\r\n .navbar-dark .navbar-nav .active > .nav-link,\r\n .navbar-dark .navbar-nav .nav-link.show,\r\n .navbar-dark .navbar-nav .nav-link.active {\r\n color: var(--white);\r\n }\r\n\r\n .navbar-dark .navbar-toggler {\r\n color: rgba(255, 255, 255, 0.5);\r\n border-color: rgba(255, 255, 255, 0.1);\r\n }\r\n\r\n .navbar-dark .navbar-toggler-icon {\r\n background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\r\n }\r\n\r\n .navbar-dark .navbar-text {\r\n color: rgba(255, 255, 255, 0.5);\r\n }\r\n\r\n .navbar-dark .navbar-text a {\r\n color: var(--white);\r\n }\r\n\r\n .navbar-dark .navbar-text a:hover,\r\n .navbar-dark .navbar-text a:focus {\r\n color: var(--white);\r\n }\r\n\r\n .card {\r\n position: relative;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n min-width: 0;\r\n word-wrap: break-word;\r\n background-color: var(--white);\r\n background-clip: border-box;\r\n border: 1px solid #e3e6f0;\r\n border-radius: 1.35rem;\r\n }\r\n .card.shadow.h-100 {\r\n border-top-right-radius: 0px !important;\r\n border-top-left-radius: 0px !important;\r\n }\r\n\r\n .card > hr {\r\n margin-right: 0;\r\n margin-left: 0;\r\n }\r\n\r\n .card > .list-group:first-child .list-group-item:first-child {\r\n border-top-left-radius: 0.35rem;\r\n border-top-right-radius: 0.35rem;\r\n }\r\n\r\n .card > .list-group:last-child .list-group-item:last-child {\r\n border-bottom-right-radius: 0.35rem;\r\n border-bottom-left-radius: 0.35rem;\r\n }\r\n\r\n .card-body {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1 1 auto;\r\n flex: 1 1 auto;\r\n padding: 1.25rem;\r\n }\r\n\r\n .card-title {\r\n margin-bottom: 0.75rem;\r\n }\r\n\r\n .card-subtitle {\r\n margin-top: -0.375rem;\r\n margin-bottom: 0;\r\n }\r\n\r\n .card-text:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n .card-link:hover {\r\n text-decoration: none;\r\n }\r\n\r\n .card-link + .card-link {\r\n margin-left: 1.25rem;\r\n }\r\n\r\n .card-header {\r\n padding: 0.75rem 1.25rem;\r\n margin-bottom: 0;\r\n background-color: var(--light);\r\n border-bottom: 1px solid #e3e6f0;\r\n }\r\n\r\n .card-header:first-child {\r\n border-radius: calc(1.35rem - 1px) calc(1.35rem - 1px) 0 0;\r\n }\r\n\r\n .card-header + .list-group .list-group-item:first-child {\r\n border-top: 0;\r\n }\r\n\r\n .card-footer {\r\n padding: 0.75rem 1.25rem;\r\n background-color: var(--light);\r\n border-top: 1px solid #e3e6f0;\r\n }\r\n\r\n .card-footer:last-child {\r\n border-radius: 0 0 calc(1.35rem - 1px) calc(1.35rem - 1px);\r\n }\r\n\r\n .card-header-tabs {\r\n margin-right: -0.625rem;\r\n margin-bottom: -0.75rem;\r\n margin-left: -0.625rem;\r\n border-bottom: 0;\r\n }\r\n\r\n .card-header-pills {\r\n margin-right: -0.625rem;\r\n margin-left: -0.625rem;\r\n }\r\n\r\n .card-img-overlay {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n padding: 1.25rem;\r\n }\r\n\r\n .card-img {\r\n width: 100%;\r\n border-radius: calc(1.35rem - 1px);\r\n }\r\n\r\n .card-img-top {\r\n width: 100%;\r\n border-top-left-radius: calc(1.35rem - 1px);\r\n border-top-right-radius: calc(1.35rem - 1px);\r\n }\r\n\r\n .card-img-bottom {\r\n width: 100%;\r\n border-bottom-right-radius: calc(1.35rem - 1px);\r\n border-bottom-left-radius: calc(1.35rem - 1px);\r\n }\r\n\r\n .card-deck {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n }\r\n\r\n .card-deck .card {\r\n margin-bottom: 0.75rem;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .card-deck {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row wrap;\r\n flex-flow: row wrap;\r\n margin-right: -0.75rem;\r\n margin-left: -0.75rem;\r\n }\r\n .card-deck .card {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1 0 0%;\r\n flex: 1 0 0%;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n margin-right: 0.75rem;\r\n margin-bottom: 0;\r\n margin-left: 0.75rem;\r\n }\r\n }\r\n\r\n .card-group {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n }\r\n\r\n .card-group > .card {\r\n margin-bottom: 0.75rem;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .card-group {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-flow: row wrap;\r\n flex-flow: row wrap;\r\n }\r\n .card-group > .card {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1 0 0%;\r\n flex: 1 0 0%;\r\n margin-bottom: 0;\r\n }\r\n .card-group > .card + .card {\r\n margin-left: 0;\r\n border-left: 0;\r\n }\r\n .card-group > .card:not(:last-child) {\r\n border-top-right-radius: 0;\r\n border-bottom-right-radius: 0;\r\n }\r\n .card-group > .card:not(:last-child) .card-img-top,\r\n .card-group > .card:not(:last-child) .card-header {\r\n border-top-right-radius: 0;\r\n }\r\n .card-group > .card:not(:last-child) .card-img-bottom,\r\n .card-group > .card:not(:last-child) .card-footer {\r\n border-bottom-right-radius: 0;\r\n }\r\n .card-group > .card:not(:first-child) {\r\n border-top-left-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n .card-group > .card:not(:first-child) .card-img-top,\r\n .card-group > .card:not(:first-child) .card-header {\r\n border-top-left-radius: 0;\r\n }\r\n .card-group > .card:not(:first-child) .card-img-bottom,\r\n .card-group > .card:not(:first-child) .card-footer {\r\n border-bottom-left-radius: 0;\r\n }\r\n }\r\n\r\n .card-columns .card {\r\n margin-bottom: 0.75rem;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .card-columns {\r\n -webkit-column-count: 3;\r\n column-count: 3;\r\n -webkit-column-gap: 1.25rem;\r\n column-gap: 1.25rem;\r\n orphans: 1;\r\n widows: 1;\r\n }\r\n .card-columns .card {\r\n display: inline-block;\r\n width: 100%;\r\n }\r\n }\r\n\r\n .accordion > .card {\r\n overflow: hidden;\r\n }\r\n\r\n .accordion > .card:not(:first-of-type) .card-header:first-child {\r\n border-radius: 0;\r\n }\r\n\r\n .accordion > .card:not(:first-of-type):not(:last-of-type) {\r\n border-bottom: 0;\r\n border-radius: 0;\r\n }\r\n\r\n .accordion > .card:first-of-type {\r\n border-bottom: 0;\r\n border-bottom-right-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n\r\n .accordion > .card:last-of-type {\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n\r\n .accordion > .card .card-header {\r\n margin-bottom: -1px;\r\n }\r\n\r\n .breadcrumb {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -ms-flex-wrap: wrap;\r\n flex-wrap: wrap;\r\n padding: 0.75rem 1rem;\r\n margin-bottom: 1rem;\r\n list-style: none;\r\n background-color: #eaecf4;\r\n border-radius: 0.35rem;\r\n }\r\n\r\n .breadcrumb-item + .breadcrumb-item {\r\n padding-left: 0.5rem;\r\n }\r\n\r\n .breadcrumb-item + .breadcrumb-item::before {\r\n display: inline-block;\r\n padding-right: 0.5rem;\r\n color: var(--secondary);\r\n content: \"/\";\r\n }\r\n\r\n .breadcrumb-item + .breadcrumb-item:hover::before {\r\n text-decoration: underline;\r\n }\r\n\r\n .breadcrumb-item + .breadcrumb-item:hover::before {\r\n text-decoration: none;\r\n }\r\n\r\n .breadcrumb-item.active {\r\n color: var(--secondary);\r\n }\r\n\r\n .pagination {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n padding-left: 0;\r\n list-style: none;\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .page-link {\r\n position: relative;\r\n display: block;\r\n padding: 0.5rem 0.75rem;\r\n margin-left: -1px;\r\n line-height: 1.25;\r\n color: var(--primary);\r\n background-color: var(--white);\r\n border: 1px solid #dddfeb;\r\n }\r\n\r\n .page-link:hover {\r\n z-index: 2;\r\n color: #224abe;\r\n text-decoration: none;\r\n background-color: #eaecf4;\r\n border-color: #dddfeb;\r\n }\r\n\r\n .page-link:focus {\r\n z-index: 2;\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .page-item:first-child .page-link {\r\n margin-left: 0;\r\n border-top-left-radius: 1.35rem;\r\n border-bottom-left-radius: 1.35rem;\r\n }\r\n\r\n .page-item:last-child .page-link {\r\n border-top-right-radius: 1.35rem;\r\n border-bottom-right-radius: 1.35rem;\r\n }\r\n\r\n .page-item.active .page-link {\r\n z-index: 1;\r\n color: var(--white) !important;\r\n background-color: var(--gray-dark) !important;\r\n border-color: var(--gray-dark) !important;\r\n text-decoration: none;\r\n }\r\n\r\n .page-item.disabled .page-link {\r\n color: var(--secondary);\r\n pointer-events: none;\r\n cursor: auto;\r\n background-color: var(--white);\r\n border-color: #dddfeb;\r\n }\r\n\r\n .pagination-lg .page-link {\r\n padding: 0.75rem 1.5rem;\r\n font-size: 1.25rem;\r\n line-height: 1.5;\r\n }\r\n\r\n .pagination-lg .page-item:first-child .page-link {\r\n border-top-left-radius: 1.35rem;\r\n border-bottom-left-radius: 1.35rem;\r\n }\r\n\r\n .pagination-lg .page-item:last-child .page-link {\r\n border-top-right-radius: 1.35rem;\r\n border-bottom-right-radius: 1.35rem;\r\n }\r\n\r\n .pagination-sm .page-link {\r\n padding: 0.25rem 0.5rem;\r\n font-size: 0.875rem;\r\n line-height: 1.5;\r\n }\r\n\r\n .pagination-sm .page-item:first-child .page-link {\r\n border-top-left-radius: 0.2rem;\r\n border-bottom-left-radius: 0.2rem;\r\n }\r\n\r\n .pagination-sm .page-item:last-child .page-link {\r\n border-top-right-radius: 0.2rem;\r\n border-bottom-right-radius: 0.2rem;\r\n }\r\n\r\n .badge {\r\n display: inline-block;\r\n padding: 0.25em 0.4em;\r\n font-size: 75%;\r\n font-weight: 700;\r\n line-height: 1;\r\n text-align: center;\r\n white-space: nowrap;\r\n vertical-align: baseline;\r\n border-radius: 1.35rem;\r\n -webkit-transition: color 0.15s ease-in-out,\r\n background-color 0.15s ease-in-out, border-color 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;\r\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\r\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,\r\n border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out,\r\n -webkit-box-shadow 0.15s ease-in-out;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .badge {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n a.badge:hover,\r\n a.badge:focus {\r\n text-decoration: none;\r\n }\r\n\r\n .badge:empty {\r\n display: none;\r\n }\r\n\r\n .btn .badge {\r\n position: relative;\r\n top: -1px;\r\n }\r\n\r\n .badge-pill {\r\n padding-right: 0.6em;\r\n padding-left: 0.6em;\r\n border-radius: 10rem;\r\n }\r\n\r\n .badge-primary {\r\n color: var(--white);\r\n background-color: var(--primary);\r\n }\r\n\r\n a.badge-primary:hover,\r\n a.badge-primary:focus {\r\n color: var(--white);\r\n background-color: #2653d4;\r\n }\r\n\r\n a.badge-primary:focus,\r\n a.badge-primary.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.5);\r\n }\r\n\r\n .badge-secondary {\r\n color: var(--white);\r\n background-color: var(--secondary);\r\n }\r\n\r\n a.badge-secondary:hover,\r\n a.badge-secondary:focus {\r\n color: var(--white);\r\n background-color: #6b6d7d;\r\n }\r\n\r\n a.badge-secondary:focus,\r\n a.badge-secondary.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(133, 135, 150, 0.5);\r\n }\r\n\r\n .badge-success {\r\n color: var(--white);\r\n background-color: var(--success);\r\n }\r\n\r\n a.badge-success:hover,\r\n a.badge-success:focus {\r\n color: var(--white);\r\n background-color: #169b6b;\r\n }\r\n\r\n a.badge-success:focus,\r\n a.badge-success.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(28, 200, 138, 0.5);\r\n }\r\n\r\n .badge-info {\r\n color: var(--white);\r\n background-color: var(--info);\r\n }\r\n\r\n a.badge-info:hover,\r\n a.badge-info:focus {\r\n color: var(--white);\r\n background-color: #2a96a5;\r\n }\r\n\r\n a.badge-info:focus,\r\n a.badge-info.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(54, 185, 204, 0.5);\r\n }\r\n\r\n .badge-warning {\r\n color: var(--white);\r\n background-color: var(--warning);\r\n }\r\n\r\n a.badge-warning:hover,\r\n a.badge-warning:focus {\r\n color: var(--white);\r\n background-color: #f4b30d;\r\n }\r\n\r\n a.badge-warning:focus,\r\n a.badge-warning.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(246, 194, 62, 0.5);\r\n }\r\n\r\n .badge-danger {\r\n color: var(--white);\r\n background-color: var(--danger);\r\n }\r\n\r\n a.badge-danger:hover,\r\n a.badge-danger:focus {\r\n color: var(--white);\r\n background-color: #d52a1a;\r\n }\r\n\r\n a.badge-danger:focus,\r\n a.badge-danger.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(231, 74, 59, 0.5);\r\n }\r\n\r\n .badge-light {\r\n color: #3a3b45;\r\n background-color: var(--light);\r\n }\r\n\r\n a.badge-light:hover,\r\n a.badge-light:focus {\r\n color: #3a3b45;\r\n background-color: #d4daed;\r\n }\r\n\r\n a.badge-light:focus,\r\n a.badge-light.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(248, 249, 252, 0.5);\r\n }\r\n\r\n .badge-dark {\r\n color: var(--white);\r\n background-color: var(--gray-dark);\r\n }\r\n\r\n a.badge-dark:hover,\r\n a.badge-dark:focus {\r\n color: var(--white);\r\n background-color: #42444e;\r\n }\r\n\r\n a.badge-dark:focus,\r\n a.badge-dark.focus {\r\n outline: 0;\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(90, 92, 105, 0.5);\r\n box-shadow: 0 0 0 0.2rem rgba(90, 92, 105, 0.5);\r\n }\r\n\r\n .jumbotron {\r\n padding: 2rem 1rem;\r\n margin-bottom: 2rem;\r\n background-color: #eaecf4;\r\n border-radius: 0.3rem;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .jumbotron {\r\n padding: 4rem 2rem;\r\n }\r\n }\r\n\r\n .jumbotron-fluid {\r\n padding-right: 0;\r\n padding-left: 0;\r\n border-radius: 0;\r\n }\r\n\r\n .alert {\r\n position: relative;\r\n padding: 0.75rem 1.25rem;\r\n margin-bottom: 1rem;\r\n border: 1px solid transparent;\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .alert-heading {\r\n color: inherit;\r\n }\r\n\r\n .alert-link {\r\n font-weight: 700;\r\n }\r\n\r\n .alert-dismissible {\r\n padding-right: 4rem;\r\n }\r\n\r\n .alert-dismissible .close {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n padding: 0.75rem 1.25rem;\r\n color: inherit;\r\n }\r\n\r\n .alert-primary {\r\n color: #293c74;\r\n background-color: #dce3f9;\r\n border-color: #cdd8f6;\r\n }\r\n\r\n .alert-primary hr {\r\n border-top-color: #b7c7f2;\r\n }\r\n\r\n .alert-primary .alert-link {\r\n color: #1c294e;\r\n }\r\n\r\n .alert-secondary {\r\n color: #45464e;\r\n background-color: #e7e7ea;\r\n border-color: #dddde2;\r\n }\r\n\r\n .alert-secondary hr {\r\n border-top-color: #cfcfd6;\r\n }\r\n\r\n .alert-secondary .alert-link {\r\n color: #2d2e33;\r\n }\r\n\r\n .alert-success {\r\n color: #0f6848;\r\n background-color: #d2f4e8;\r\n border-color: #bff0de;\r\n }\r\n\r\n .alert-success hr {\r\n border-top-color: #aaebd3;\r\n }\r\n\r\n .alert-success .alert-link {\r\n color: #093b29;\r\n }\r\n\r\n .alert-info {\r\n color: #1c606a;\r\n background-color: #d7f1f5;\r\n border-color: #c7ebf1;\r\n }\r\n\r\n .alert-info hr {\r\n border-top-color: #b3e4ec;\r\n }\r\n\r\n .alert-info .alert-link {\r\n color: #113b42;\r\n }\r\n\r\n .alert-warning {\r\n color: #806520;\r\n background-color: #fdf3d8;\r\n border-color: #fceec9;\r\n }\r\n\r\n .alert-warning hr {\r\n border-top-color: #fbe6b1;\r\n }\r\n\r\n .alert-warning .alert-link {\r\n color: #574516;\r\n }\r\n\r\n .alert-danger {\r\n color: #78261f;\r\n background-color: #fadbd8;\r\n border-color: #f8ccc8;\r\n }\r\n\r\n .alert-danger hr {\r\n border-top-color: #f5b7b1;\r\n }\r\n\r\n .alert-danger .alert-link {\r\n color: #4f1915;\r\n }\r\n\r\n .alert-light {\r\n color: #818183;\r\n background-color: #fefefe;\r\n border-color: #fdfdfe;\r\n }\r\n\r\n .alert-light hr {\r\n border-top-color: #ececf6;\r\n }\r\n\r\n .alert-light .alert-link {\r\n color: #686869;\r\n }\r\n\r\n .alert-dark {\r\n color: #2f3037;\r\n background-color: #dedee1;\r\n border-color: #d1d1d5;\r\n }\r\n\r\n .alert-dark hr {\r\n border-top-color: #c4c4c9;\r\n }\r\n\r\n .alert-dark .alert-link {\r\n color: #18181c;\r\n }\r\n\r\n @-webkit-keyframes progress-bar-stripes {\r\n from {\r\n background-position: 1rem 0;\r\n }\r\n to {\r\n background-position: 0 0;\r\n }\r\n }\r\n\r\n @keyframes progress-bar-stripes {\r\n from {\r\n background-position: 1rem 0;\r\n }\r\n to {\r\n background-position: 0 0;\r\n }\r\n }\r\n\r\n .progress {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n height: 1rem;\r\n overflow: hidden;\r\n font-size: 0.75rem;\r\n background-color: #eaecf4;\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .progress-bar {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n color: var(--white);\r\n text-align: center;\r\n white-space: nowrap;\r\n background-color: var(--warning);\r\n -webkit-transition: width 0.6s ease;\r\n transition: width 0.6s ease;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .progress-bar {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .progress-bar-striped {\r\n background-image: linear-gradient(\r\n 45deg,\r\n rgba(255, 255, 255, 0.15) 25%,\r\n transparent 25%,\r\n transparent 50%,\r\n rgba(255, 255, 255, 0.15) 50%,\r\n rgba(255, 255, 255, 0.15) 75%,\r\n transparent 75%,\r\n transparent\r\n );\r\n background-size: 1rem 1rem;\r\n }\r\n\r\n .progress-bar-animated {\r\n -webkit-animation: progress-bar-stripes 1s linear infinite;\r\n animation: progress-bar-stripes 1s linear infinite;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .progress-bar-animated {\r\n -webkit-animation: none;\r\n animation: none;\r\n }\r\n }\r\n\r\n .media {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: start;\r\n -ms-flex-align: start;\r\n align-items: flex-start;\r\n }\r\n\r\n .media-body {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1;\r\n flex: 1;\r\n }\r\n\r\n .list-group {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n padding-left: 0;\r\n margin-bottom: 0;\r\n }\r\n\r\n .list-group-item-action {\r\n width: 100%;\r\n color: #6e707e;\r\n text-align: inherit;\r\n }\r\n\r\n .list-group-item-action:hover,\r\n .list-group-item-action:focus {\r\n z-index: 1;\r\n color: #6e707e;\r\n text-decoration: none;\r\n background-color: var(--light);\r\n }\r\n\r\n .list-group-item-action:active {\r\n color: var(--secondary);\r\n background-color: #eaecf4;\r\n }\r\n\r\n .list-group-item {\r\n position: relative;\r\n display: block;\r\n padding: 0.75rem 1.25rem;\r\n margin-bottom: -1px;\r\n background-color: var(--white);\r\n border: 1px solid rgba(0, 0, 0, 0.125);\r\n }\r\n\r\n .list-group-item:first-child {\r\n border-top-left-radius: 0.35rem;\r\n border-top-right-radius: 0.35rem;\r\n }\r\n\r\n .list-group-item:last-child {\r\n margin-bottom: 0;\r\n border-bottom-right-radius: 0.35rem;\r\n border-bottom-left-radius: 0.35rem;\r\n }\r\n\r\n .list-group-item.disabled,\r\n .list-group-item:disabled {\r\n color: var(--secondary);\r\n pointer-events: none;\r\n background-color: var(--white);\r\n }\r\n\r\n .list-group-item.active {\r\n z-index: 2;\r\n color: var(--white);\r\n background-color: var(--primary);\r\n border-color: var(--primary);\r\n }\r\n\r\n .list-group-horizontal {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n\r\n .list-group-horizontal .list-group-item {\r\n margin-right: -1px;\r\n margin-bottom: 0;\r\n }\r\n\r\n .list-group-horizontal .list-group-item:first-child {\r\n border-top-left-radius: 0.35rem;\r\n border-bottom-left-radius: 0.35rem;\r\n border-top-right-radius: 0;\r\n }\r\n\r\n .list-group-horizontal .list-group-item:last-child {\r\n margin-right: 0;\r\n border-top-right-radius: 0.35rem;\r\n border-bottom-right-radius: 0.35rem;\r\n border-bottom-left-radius: 0;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .list-group-horizontal-sm {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n .list-group-horizontal-sm .list-group-item {\r\n margin-right: -1px;\r\n margin-bottom: 0;\r\n }\r\n .list-group-horizontal-sm .list-group-item:first-child {\r\n border-top-left-radius: 0.35rem;\r\n border-bottom-left-radius: 0.35rem;\r\n border-top-right-radius: 0;\r\n }\r\n .list-group-horizontal-sm .list-group-item:last-child {\r\n margin-right: 0;\r\n border-top-right-radius: 0.35rem;\r\n border-bottom-right-radius: 0.35rem;\r\n border-bottom-left-radius: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .list-group-horizontal-md {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n .list-group-horizontal-md .list-group-item {\r\n margin-right: -1px;\r\n margin-bottom: 0;\r\n }\r\n .list-group-horizontal-md .list-group-item:first-child {\r\n border-top-left-radius: 0.35rem;\r\n border-bottom-left-radius: 0.35rem;\r\n border-top-right-radius: 0;\r\n }\r\n .list-group-horizontal-md .list-group-item:last-child {\r\n margin-right: 0;\r\n border-top-right-radius: 0.35rem;\r\n border-bottom-right-radius: 0.35rem;\r\n border-bottom-left-radius: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .list-group-horizontal-lg {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n .list-group-horizontal-lg .list-group-item {\r\n margin-right: -1px;\r\n margin-bottom: 0;\r\n }\r\n .list-group-horizontal-lg .list-group-item:first-child {\r\n border-top-left-radius: 0.35rem;\r\n border-bottom-left-radius: 0.35rem;\r\n border-top-right-radius: 0;\r\n }\r\n .list-group-horizontal-lg .list-group-item:last-child {\r\n margin-right: 0;\r\n border-top-right-radius: 0.35rem;\r\n border-bottom-right-radius: 0.35rem;\r\n border-bottom-left-radius: 0;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .list-group-horizontal-xl {\r\n -webkit-box-orient: horizontal;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: row;\r\n flex-direction: row;\r\n }\r\n .list-group-horizontal-xl .list-group-item {\r\n margin-right: -1px;\r\n margin-bottom: 0;\r\n }\r\n .list-group-horizontal-xl .list-group-item:first-child {\r\n border-top-left-radius: 0.35rem;\r\n border-bottom-left-radius: 0.35rem;\r\n border-top-right-radius: 0;\r\n }\r\n .list-group-horizontal-xl .list-group-item:last-child {\r\n margin-right: 0;\r\n border-top-right-radius: 0.35rem;\r\n border-bottom-right-radius: 0.35rem;\r\n border-bottom-left-radius: 0;\r\n }\r\n }\r\n\r\n .list-group-flush .list-group-item {\r\n border-right: 0;\r\n border-left: 0;\r\n border-radius: 0;\r\n }\r\n\r\n .list-group-flush .list-group-item:last-child {\r\n margin-bottom: -1px;\r\n }\r\n\r\n .list-group-flush:first-child .list-group-item:first-child {\r\n border-top: 0;\r\n }\r\n\r\n .list-group-flush:last-child .list-group-item:last-child {\r\n margin-bottom: 0;\r\n border-bottom: 0;\r\n }\r\n\r\n .list-group-item-primary {\r\n color: #293c74;\r\n background-color: #cdd8f6;\r\n }\r\n\r\n .list-group-item-primary.list-group-item-action:hover,\r\n .list-group-item-primary.list-group-item-action:focus {\r\n color: #293c74;\r\n background-color: #b7c7f2;\r\n }\r\n\r\n .list-group-item-primary.list-group-item-action.active {\r\n color: var(--white);\r\n background-color: #293c74;\r\n border-color: #293c74;\r\n }\r\n\r\n .list-group-item-secondary {\r\n color: #45464e;\r\n background-color: #dddde2;\r\n }\r\n\r\n .list-group-item-secondary.list-group-item-action:hover,\r\n .list-group-item-secondary.list-group-item-action:focus {\r\n color: #45464e;\r\n background-color: #cfcfd6;\r\n }\r\n\r\n .list-group-item-secondary.list-group-item-action.active {\r\n color: var(--white);\r\n background-color: #45464e;\r\n border-color: #45464e;\r\n }\r\n\r\n .list-group-item-success {\r\n color: #0f6848;\r\n background-color: #bff0de;\r\n }\r\n\r\n .list-group-item-success.list-group-item-action:hover,\r\n .list-group-item-success.list-group-item-action:focus {\r\n color: #0f6848;\r\n background-color: #aaebd3;\r\n }\r\n\r\n .list-group-item-success.list-group-item-action.active {\r\n color: var(--white);\r\n background-color: #0f6848;\r\n border-color: #0f6848;\r\n }\r\n\r\n .list-group-item-info {\r\n color: #1c606a;\r\n background-color: #c7ebf1;\r\n }\r\n\r\n .list-group-item-info.list-group-item-action:hover,\r\n .list-group-item-info.list-group-item-action:focus {\r\n color: #1c606a;\r\n background-color: #b3e4ec;\r\n }\r\n\r\n .list-group-item-info.list-group-item-action.active {\r\n color: var(--white);\r\n background-color: #1c606a;\r\n border-color: #1c606a;\r\n }\r\n\r\n .list-group-item-warning {\r\n color: #806520;\r\n background-color: #fceec9;\r\n }\r\n\r\n .list-group-item-warning.list-group-item-action:hover,\r\n .list-group-item-warning.list-group-item-action:focus {\r\n color: #806520;\r\n background-color: #fbe6b1;\r\n }\r\n\r\n .list-group-item-warning.list-group-item-action.active {\r\n color: var(--white);\r\n background-color: #806520;\r\n border-color: #806520;\r\n }\r\n\r\n .list-group-item-danger {\r\n color: #78261f;\r\n background-color: #f8ccc8;\r\n }\r\n\r\n .list-group-item-danger.list-group-item-action:hover,\r\n .list-group-item-danger.list-group-item-action:focus {\r\n color: #78261f;\r\n background-color: #f5b7b1;\r\n }\r\n\r\n .list-group-item-danger.list-group-item-action.active {\r\n color: var(--white);\r\n background-color: #78261f;\r\n border-color: #78261f;\r\n }\r\n\r\n .list-group-item-light {\r\n color: #818183;\r\n background-color: #fdfdfe;\r\n }\r\n\r\n .list-group-item-light.list-group-item-action:hover,\r\n .list-group-item-light.list-group-item-action:focus {\r\n color: #818183;\r\n background-color: #ececf6;\r\n }\r\n\r\n .list-group-item-light.list-group-item-action.active {\r\n color: var(--white);\r\n background-color: #818183;\r\n border-color: #818183;\r\n }\r\n\r\n .list-group-item-dark {\r\n color: #2f3037;\r\n background-color: #d1d1d5;\r\n }\r\n\r\n .list-group-item-dark.list-group-item-action:hover,\r\n .list-group-item-dark.list-group-item-action:focus {\r\n color: #2f3037;\r\n background-color: #c4c4c9;\r\n }\r\n\r\n .list-group-item-dark.list-group-item-action.active {\r\n color: var(--white);\r\n background-color: #2f3037;\r\n border-color: #2f3037;\r\n }\r\n\r\n .close {\r\n float: right;\r\n font-size: 1.5rem;\r\n font-weight: 700;\r\n line-height: 1;\r\n color: #000;\r\n text-shadow: 0 1px 0 var(--white);\r\n opacity: 0.5;\r\n }\r\n\r\n .close:hover {\r\n color: #000;\r\n text-decoration: none;\r\n }\r\n\r\n .close:not(:disabled):not(.disabled):hover,\r\n .close:not(:disabled):not(.disabled):focus {\r\n opacity: 0.75;\r\n }\r\n\r\n button.close {\r\n padding: 0;\r\n background-color: transparent;\r\n border: 0;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n appearance: none;\r\n }\r\n\r\n a.close.disabled {\r\n pointer-events: none;\r\n }\r\n\r\n .toast {\r\n max-width: 350px;\r\n overflow: hidden;\r\n font-size: 0.875rem;\r\n background-color: rgba(255, 255, 255, 0.85);\r\n background-clip: padding-box;\r\n border: 1px solid rgba(0, 0, 0, 0.1);\r\n -webkit-box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\r\n box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);\r\n -webkit-backdrop-filter: blur(10px);\r\n backdrop-filter: blur(10px);\r\n border-radius: 0.25rem;\r\n }\r\n\r\n .toast:not(:last-child) {\r\n margin-bottom: 0.75rem;\r\n }\r\n\r\n .toast.showing {\r\n opacity: 1;\r\n }\r\n\r\n .toast.show {\r\n display: block;\r\n opacity: 1;\r\n }\r\n\r\n .toast.hide {\r\n display: none;\r\n }\r\n\r\n .toast-header {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n padding: 0.25rem 0.75rem;\r\n color: var(--secondary);\r\n background-color: rgba(255, 255, 255, 0.85);\r\n background-clip: padding-box;\r\n border-bottom: 1px solid rgba(0, 0, 0, 0.05);\r\n }\r\n\r\n .toast-body {\r\n padding: 0.75rem;\r\n }\r\n\r\n .modal-open {\r\n overflow: hidden;\r\n }\r\n\r\n .modal-open .modal {\r\n overflow-x: hidden;\r\n overflow-y: auto;\r\n }\r\n\r\n .modal {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n z-index: 1050;\r\n display: none;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n outline: 0;\r\n }\r\n\r\n .modal-dialog {\r\n position: relative;\r\n width: auto;\r\n margin: 0.5rem;\r\n pointer-events: none;\r\n }\r\n\r\n .modal.fade .modal-dialog {\r\n -webkit-transition: -webkit-transform 0.3s ease-out;\r\n transition: -webkit-transform 0.3s ease-out;\r\n transition: transform 0.3s ease-out;\r\n transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\r\n -webkit-transform: translate(0, -50px);\r\n transform: translate(0, -50px);\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .modal.fade .modal-dialog {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .modal.show .modal-dialog {\r\n -webkit-transform: none;\r\n transform: none;\r\n }\r\n\r\n .modal-dialog-scrollable {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n max-height: calc(100% - 1rem);\r\n }\r\n\r\n .modal-dialog-scrollable .modal-content {\r\n max-height: calc(100vh - 1rem);\r\n overflow: hidden;\r\n }\r\n\r\n .modal-dialog-scrollable .modal-header,\r\n .modal-dialog-scrollable .modal-footer {\r\n -ms-flex-negative: 0;\r\n flex-shrink: 0;\r\n }\r\n\r\n .modal-dialog-scrollable .modal-body {\r\n overflow-y: auto;\r\n }\r\n\r\n .modal-dialog-centered {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n min-height: calc(100% - 1rem);\r\n }\r\n\r\n .modal-dialog-centered::before {\r\n display: block;\r\n height: calc(100vh - 1rem);\r\n content: \"\";\r\n }\r\n\r\n .modal-dialog-centered.modal-dialog-scrollable {\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n height: 100%;\r\n }\r\n\r\n .modal-dialog-centered.modal-dialog-scrollable .modal-content {\r\n max-height: none;\r\n }\r\n\r\n .modal-dialog-centered.modal-dialog-scrollable::before {\r\n content: none;\r\n }\r\n\r\n .modal-content {\r\n position: relative;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-orient: vertical;\r\n -webkit-box-direction: normal;\r\n -ms-flex-direction: column;\r\n flex-direction: column;\r\n width: 100%;\r\n pointer-events: auto;\r\n background-color: var(--white);\r\n background-clip: padding-box;\r\n border: 1px solid rgba(0, 0, 0, 0.2);\r\n border-radius: 0.3rem;\r\n outline: 0;\r\n }\r\n\r\n .modal-backdrop {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n z-index: 1040;\r\n width: 100vw;\r\n height: 100vh;\r\n background-color: #000;\r\n }\r\n\r\n .modal-backdrop.fade {\r\n opacity: 0;\r\n }\r\n\r\n .modal-backdrop.show {\r\n opacity: 0.5;\r\n }\r\n\r\n .modal-header {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: start;\r\n -ms-flex-align: start;\r\n align-items: flex-start;\r\n -webkit-box-pack: justify;\r\n -ms-flex-pack: justify;\r\n justify-content: space-between;\r\n padding: 1rem 1rem;\r\n border-bottom: 1px solid #e3e6f0;\r\n border-top-left-radius: 0.3rem;\r\n border-top-right-radius: 0.3rem;\r\n }\r\n\r\n .modal-header .close {\r\n padding: 1rem 1rem;\r\n margin: -1rem -1rem -1rem auto;\r\n }\r\n\r\n .modal-title {\r\n margin-bottom: 0;\r\n line-height: 1.5;\r\n }\r\n\r\n .modal-body {\r\n position: relative;\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1 1 auto;\r\n flex: 1 1 auto;\r\n padding: 1rem;\r\n }\r\n\r\n .modal-footer {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: end;\r\n -ms-flex-pack: end;\r\n justify-content: flex-end;\r\n padding: 1rem;\r\n border-top: 1px solid #e3e6f0;\r\n border-bottom-right-radius: 0.3rem;\r\n border-bottom-left-radius: 0.3rem;\r\n }\r\n\r\n .modal-footer > :not(:first-child) {\r\n margin-left: 0.25rem;\r\n }\r\n\r\n .modal-footer > :not(:last-child) {\r\n margin-right: 0.25rem;\r\n }\r\n\r\n .modal-scrollbar-measure {\r\n position: absolute;\r\n top: -9999px;\r\n width: 50px;\r\n height: 50px;\r\n overflow: scroll;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .modal-dialog {\r\n max-width: 500px;\r\n margin: 1.75rem auto;\r\n }\r\n .modal-dialog-scrollable {\r\n max-height: calc(100% - 3.5rem);\r\n }\r\n .modal-dialog-scrollable .modal-content {\r\n max-height: calc(100vh - 3.5rem);\r\n }\r\n .modal-dialog-centered {\r\n min-height: calc(100% - 3.5rem);\r\n }\r\n .modal-dialog-centered::before {\r\n height: calc(100vh - 3.5rem);\r\n }\r\n .modal-sm {\r\n max-width: 300px;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .modal-lg,\r\n .modal-xl {\r\n max-width: 800px;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .modal-xl {\r\n max-width: 1140px;\r\n }\r\n }\r\n\r\n .modal-width-large {\r\n width: 90vw !important;\r\n max-width: 90vw !important;\r\n }\r\n\r\n .tooltip {\r\n position: absolute;\r\n z-index: 1070;\r\n display: block;\r\n margin: 0;\r\n font-family: \"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\",\r\n Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\",\r\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n text-align: left;\r\n text-align: start;\r\n text-decoration: none;\r\n text-shadow: none;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n word-break: normal;\r\n word-spacing: normal;\r\n white-space: normal;\r\n line-break: auto;\r\n font-size: 0.875rem;\r\n word-wrap: break-word;\r\n opacity: 0;\r\n }\r\n\r\n .tooltip.show {\r\n opacity: 0.9;\r\n }\r\n\r\n .tooltip .arrow {\r\n position: absolute;\r\n display: block;\r\n width: 0.8rem;\r\n height: 0.4rem;\r\n }\r\n\r\n .tooltip .arrow::before {\r\n position: absolute;\r\n content: \"\";\r\n border-color: transparent;\r\n border-style: solid;\r\n }\r\n\r\n .bs-tooltip-top,\r\n .bs-tooltip-auto[x-placement^=\"top\"] {\r\n padding: 0.4rem 0;\r\n }\r\n\r\n .bs-tooltip-top .arrow,\r\n .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\r\n bottom: 0;\r\n }\r\n\r\n .bs-tooltip-top .arrow::before,\r\n .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\r\n top: 0;\r\n border-width: 0.4rem 0.4rem 0;\r\n border-top-color: #000;\r\n }\r\n\r\n .bs-tooltip-right,\r\n .bs-tooltip-auto[x-placement^=\"right\"] {\r\n padding: 0 0.4rem;\r\n }\r\n\r\n .bs-tooltip-right .arrow,\r\n .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\r\n left: 0;\r\n width: 0.4rem;\r\n height: 0.8rem;\r\n }\r\n\r\n .bs-tooltip-right .arrow::before,\r\n .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\r\n right: 0;\r\n border-width: 0.4rem 0.4rem 0.4rem 0;\r\n border-right-color: #000;\r\n }\r\n\r\n .bs-tooltip-bottom,\r\n .bs-tooltip-auto[x-placement^=\"bottom\"] {\r\n padding: 0.4rem 0;\r\n }\r\n\r\n .bs-tooltip-bottom .arrow,\r\n .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\r\n top: 0;\r\n }\r\n\r\n .bs-tooltip-bottom .arrow::before,\r\n .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\r\n bottom: 0;\r\n border-width: 0 0.4rem 0.4rem;\r\n border-bottom-color: #000;\r\n }\r\n\r\n .bs-tooltip-left,\r\n .bs-tooltip-auto[x-placement^=\"left\"] {\r\n padding: 0 0.4rem;\r\n }\r\n\r\n .bs-tooltip-left .arrow,\r\n .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\r\n right: 0;\r\n width: 0.4rem;\r\n height: 0.8rem;\r\n }\r\n\r\n .bs-tooltip-left .arrow::before,\r\n .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\r\n left: 0;\r\n border-width: 0.4rem 0 0.4rem 0.4rem;\r\n border-left-color: #000;\r\n }\r\n\r\n .tooltip-inner {\r\n max-width: 200px;\r\n padding: 0.25rem 0.5rem;\r\n color: var(--white);\r\n text-align: center;\r\n background-color: #000;\r\n border-radius: 1.35rem;\r\n }\r\n /*\r\n .popover {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n z-index: 1060;\r\n display: block;\r\n max-width: 276px;\r\n font-family: \"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\",\r\n Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\",\r\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n text-align: left;\r\n text-align: start;\r\n text-decoration: none;\r\n text-shadow: none;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n word-break: normal;\r\n word-spacing: normal;\r\n white-space: normal;\r\n line-break: auto;\r\n font-size: 0.875rem;\r\n word-wrap: break-word;\r\n background-color: var(--white);\r\n background-clip: padding-box;\r\n border: 1px solid rgba(0, 0, 0, 0.2);\r\n border-radius: 0.3rem;\r\n }\r\n\r\n .popover .arrow {\r\n position: absolute;\r\n display: block;\r\n width: 1rem;\r\n height: 0.5rem;\r\n margin: 0 0.3rem;\r\n }\r\n\r\n .popover .arrow::before,\r\n .popover .arrow::after {\r\n position: absolute;\r\n display: block;\r\n content: \"\";\r\n border-color: transparent;\r\n border-style: solid;\r\n }\r\n\r\n .bs-popover-top,\r\n .bs-popover-auto[x-placement^=\"top\"] {\r\n margin-bottom: 0.5rem;\r\n }\r\n\r\n .bs-popover-top > .arrow,\r\n .bs-popover-auto[x-placement^=\"top\"] > .arrow {\r\n bottom: calc((0.5rem + 1px) * -1);\r\n }\r\n\r\n .bs-popover-top > .arrow::before,\r\n .bs-popover-auto[x-placement^=\"top\"] > .arrow::before {\r\n bottom: 0;\r\n border-width: 0.5rem 0.5rem 0;\r\n border-top-color: rgba(0, 0, 0, 0.25);\r\n }\r\n\r\n .bs-popover-top > .arrow::after,\r\n .bs-popover-auto[x-placement^=\"top\"] > .arrow::after {\r\n bottom: 1px;\r\n border-width: 0.5rem 0.5rem 0;\r\n border-top-color: var(--white);\r\n }\r\n\r\n .bs-popover-right,\r\n .bs-popover-auto[x-placement^=\"right\"] {\r\n margin-left: 0.5rem;\r\n }\r\n\r\n .bs-popover-right > .arrow,\r\n .bs-popover-auto[x-placement^=\"right\"] > .arrow {\r\n left: calc((0.5rem + 1px) * -1);\r\n width: 0.5rem;\r\n height: 1rem;\r\n margin: 0.3rem 0;\r\n }\r\n\r\n .bs-popover-right > .arrow::before,\r\n .bs-popover-auto[x-placement^=\"right\"] > .arrow::before {\r\n left: 0;\r\n border-width: 0.5rem 0.5rem 0.5rem 0;\r\n border-right-color: rgba(0, 0, 0, 0.25);\r\n }\r\n\r\n .bs-popover-right > .arrow::after,\r\n .bs-popover-auto[x-placement^=\"right\"] > .arrow::after {\r\n left: 1px;\r\n border-width: 0.5rem 0.5rem 0.5rem 0;\r\n border-right-color: var(--white);\r\n }\r\n\r\n .bs-popover-bottom,\r\n .bs-popover-auto[x-placement^=\"bottom\"] {\r\n margin-top: 0.5rem;\r\n }\r\n\r\n .bs-popover-bottom > .arrow,\r\n .bs-popover-auto[x-placement^=\"bottom\"] > .arrow {\r\n top: calc((0.5rem + 1px) * -1);\r\n }\r\n\r\n .bs-popover-bottom > .arrow::before,\r\n .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::before {\r\n top: 0;\r\n border-width: 0 0.5rem 0.5rem 0.5rem;\r\n border-bottom-color: rgba(0, 0, 0, 0.25);\r\n }\r\n\r\n .bs-popover-bottom > .arrow::after,\r\n .bs-popover-auto[x-placement^=\"bottom\"] > .arrow::after {\r\n top: 1px;\r\n border-width: 0 0.5rem 0.5rem 0.5rem;\r\n border-bottom-color: var(--white);\r\n }\r\n\r\n .bs-popover-bottom .popover-header::before,\r\n .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n display: block;\r\n width: 1rem;\r\n margin-left: -0.5rem;\r\n content: \"\";\r\n border-bottom: 1px solid #f7f7f7;\r\n }\r\n\r\n .bs-popover-left,\r\n .bs-popover-auto[x-placement^=\"left\"] {\r\n margin-right: 0.5rem;\r\n }\r\n\r\n .bs-popover-left > .arrow,\r\n .bs-popover-auto[x-placement^=\"left\"] > .arrow {\r\n right: calc((0.5rem + 1px) * -1);\r\n width: 0.5rem;\r\n height: 1rem;\r\n margin: 0.3rem 0;\r\n }\r\n\r\n .bs-popover-left > .arrow::before,\r\n .bs-popover-auto[x-placement^=\"left\"] > .arrow::before {\r\n right: 0;\r\n border-width: 0.5rem 0 0.5rem 0.5rem;\r\n border-left-color: rgba(0, 0, 0, 0.25);\r\n }\r\n\r\n .bs-popover-left > .arrow::after,\r\n .bs-popover-auto[x-placement^=\"left\"] > .arrow::after {\r\n right: 1px;\r\n border-width: 0.5rem 0 0.5rem 0.5rem;\r\n border-left-color: var(--white);\r\n }\r\n\r\n .popover-header {\r\n padding: 0.5rem 0.75rem;\r\n margin-bottom: 0;\r\n font-size: 1rem;\r\n background-color: #f7f7f7;\r\n border-top-left-radius: calc(0.3rem - 1px);\r\n border-top-right-radius: calc(0.3rem - 1px);\r\n }\r\n\r\n .popover-header:empty {\r\n display: none;\r\n }\r\n\r\n .popover-body {\r\n padding: 0.5rem 0.75rem;\r\n color: var(--secondary);\r\n }\r\n*/\r\n .row.header {\r\n display: flex;\r\n flex-wrap: wrap;\r\n margin-right: 0.8rem;\r\n margin-left: 0.8rem;\r\n margin-bottom: 15px;\r\n }\r\n\r\n .carousel {\r\n position: relative;\r\n }\r\n\r\n .carousel.pointer-event {\r\n -ms-touch-action: pan-y;\r\n touch-action: pan-y;\r\n }\r\n\r\n .carousel-inner {\r\n position: relative;\r\n width: 100%;\r\n overflow: hidden;\r\n }\r\n\r\n .carousel-inner::after {\r\n display: block;\r\n clear: both;\r\n content: \"\";\r\n }\r\n\r\n .carousel-item {\r\n position: relative;\r\n display: none;\r\n float: left;\r\n width: 100%;\r\n margin-right: -100%;\r\n -webkit-backface-visibility: hidden;\r\n backface-visibility: hidden;\r\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\r\n transition: -webkit-transform 0.6s ease-in-out;\r\n transition: transform 0.6s ease-in-out;\r\n transition: transform 0.6s ease-in-out,\r\n -webkit-transform 0.6s ease-in-out;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .carousel-item {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .carousel-item.active,\r\n .carousel-item-next,\r\n .carousel-item-prev {\r\n display: block;\r\n }\r\n\r\n .carousel-item-next:not(.carousel-item-left),\r\n .active.carousel-item-right {\r\n -webkit-transform: translateX(100%);\r\n transform: translateX(100%);\r\n }\r\n\r\n .carousel-item-prev:not(.carousel-item-right),\r\n .active.carousel-item-left {\r\n -webkit-transform: translateX(-100%);\r\n transform: translateX(-100%);\r\n }\r\n\r\n .carousel-fade .carousel-item {\r\n opacity: 0;\r\n -webkit-transition-property: opacity;\r\n transition-property: opacity;\r\n -webkit-transform: none;\r\n transform: none;\r\n }\r\n\r\n .carousel-fade .carousel-item.active,\r\n .carousel-fade .carousel-item-next.carousel-item-left,\r\n .carousel-fade .carousel-item-prev.carousel-item-right {\r\n z-index: 1;\r\n opacity: 1;\r\n }\r\n\r\n .carousel-fade .active.carousel-item-left,\r\n .carousel-fade .active.carousel-item-right {\r\n z-index: 0;\r\n opacity: 0;\r\n -webkit-transition: 0s 0.6s opacity;\r\n transition: 0s 0.6s opacity;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .carousel-fade .active.carousel-item-left,\r\n .carousel-fade .active.carousel-item-right {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .carousel-control-prev,\r\n .carousel-control-next {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 1;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n width: 15%;\r\n color: var(--white);\r\n text-align: center;\r\n opacity: 0.5;\r\n -webkit-transition: opacity 0.15s ease;\r\n transition: opacity 0.15s ease;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .carousel-control-prev,\r\n .carousel-control-next {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .carousel-control-prev:hover,\r\n .carousel-control-prev:focus,\r\n .carousel-control-next:hover,\r\n .carousel-control-next:focus {\r\n color: var(--white);\r\n text-decoration: none;\r\n outline: 0;\r\n opacity: 0.9;\r\n }\r\n\r\n .carousel-control-prev {\r\n left: 0;\r\n }\r\n\r\n .carousel-control-next {\r\n right: 0;\r\n }\r\n\r\n .carousel-control-prev-icon,\r\n .carousel-control-next-icon {\r\n display: inline-block;\r\n width: 20px;\r\n height: 20px;\r\n background: no-repeat 50% / 100% 100%;\r\n }\r\n\r\n .carousel-control-prev-icon {\r\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e\");\r\n }\r\n\r\n .carousel-control-next-icon {\r\n background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e\");\r\n }\r\n\r\n .carousel-indicators {\r\n position: absolute;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 15;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n padding-left: 0;\r\n margin-right: 15%;\r\n margin-left: 15%;\r\n list-style: none;\r\n }\r\n\r\n .carousel-indicators li {\r\n -webkit-box-sizing: content-box;\r\n box-sizing: content-box;\r\n -webkit-box-flex: 0;\r\n -ms-flex: 0 1 auto;\r\n flex: 0 1 auto;\r\n width: 30px;\r\n height: 3px;\r\n margin-right: 3px;\r\n margin-left: 3px;\r\n text-indent: -999px;\r\n cursor: pointer;\r\n background-color: var(--white);\r\n background-clip: padding-box;\r\n border-top: 10px solid transparent;\r\n border-bottom: 10px solid transparent;\r\n opacity: 0.5;\r\n -webkit-transition: opacity 0.6s ease;\r\n transition: opacity 0.6s ease;\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .carousel-indicators li {\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n }\r\n\r\n .carousel-indicators .active {\r\n opacity: 1;\r\n }\r\n\r\n .carousel-caption {\r\n position: absolute;\r\n right: 15%;\r\n bottom: 20px;\r\n left: 15%;\r\n z-index: 10;\r\n padding-top: 20px;\r\n padding-bottom: 20px;\r\n color: var(--white);\r\n text-align: center;\r\n }\r\n\r\n @-webkit-keyframes spinner-border {\r\n to {\r\n -webkit-transform: rotate(360deg);\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n @keyframes spinner-border {\r\n to {\r\n -webkit-transform: rotate(360deg);\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n .spinner-border {\r\n display: inline-block;\r\n width: 2rem;\r\n height: 2rem;\r\n vertical-align: text-bottom;\r\n border: 0.25em solid currentColor;\r\n border-right-color: transparent;\r\n border-radius: 50%;\r\n -webkit-animation: spinner-border 0.75s linear infinite;\r\n animation: spinner-border 0.75s linear infinite;\r\n }\r\n\r\n .spinner-border-sm {\r\n width: 1rem;\r\n height: 1rem;\r\n border-width: 0.2em;\r\n }\r\n\r\n @-webkit-keyframes spinner-grow {\r\n 0% {\r\n -webkit-transform: scale(0);\r\n transform: scale(0);\r\n }\r\n 50% {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n @keyframes spinner-grow {\r\n 0% {\r\n -webkit-transform: scale(0);\r\n transform: scale(0);\r\n }\r\n 50% {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n .spinner-grow {\r\n display: inline-block;\r\n width: 2rem;\r\n height: 2rem;\r\n vertical-align: text-bottom;\r\n background-color: currentColor;\r\n border-radius: 50%;\r\n opacity: 0;\r\n -webkit-animation: spinner-grow 0.75s linear infinite;\r\n animation: spinner-grow 0.75s linear infinite;\r\n }\r\n\r\n .spinner-grow-sm {\r\n width: 1rem;\r\n height: 1rem;\r\n }\r\n\r\n .align-baseline {\r\n vertical-align: baseline !important;\r\n }\r\n\r\n .align-top {\r\n vertical-align: top !important;\r\n }\r\n\r\n .align-middle {\r\n vertical-align: middle !important;\r\n }\r\n\r\n .align-bottom {\r\n vertical-align: bottom !important;\r\n }\r\n\r\n .align-text-bottom {\r\n vertical-align: text-bottom !important;\r\n }\r\n\r\n .align-text-top {\r\n vertical-align: text-top !important;\r\n }\r\n\r\n .bg-primary {\r\n background-color: var(--primary) !important;\r\n }\r\n\r\n a.bg-primary:hover,\r\n a.bg-primary:focus,\r\n button.bg-primary:hover,\r\n button.bg-primary:focus {\r\n background-color: #2653d4 !important;\r\n }\r\n\r\n .bg-secondary {\r\n background-color: var(--secondary) !important;\r\n }\r\n\r\n a.bg-secondary:hover,\r\n a.bg-secondary:focus,\r\n button.bg-secondary:hover,\r\n button.bg-secondary:focus {\r\n background-color: #6b6d7d !important;\r\n }\r\n\r\n .bg-success {\r\n background-color: var(--success) !important;\r\n }\r\n\r\n a.bg-success:hover,\r\n a.bg-success:focus,\r\n button.bg-success:hover,\r\n button.bg-success:focus {\r\n background-color: #169b6b !important;\r\n }\r\n\r\n .bg-info {\r\n background-color: var(--info) !important;\r\n }\r\n\r\n a.bg-info:hover,\r\n a.bg-info:focus,\r\n button.bg-info:hover,\r\n button.bg-info:focus {\r\n background-color: #2a96a5 !important;\r\n }\r\n\r\n .bg-warning {\r\n background-color: var(--warning) !important;\r\n }\r\n\r\n a.bg-warning:hover,\r\n a.bg-warning:focus,\r\n button.bg-warning:hover,\r\n button.bg-warning:focus {\r\n background-color: #f4b30d !important;\r\n }\r\n\r\n .bg-danger {\r\n background-color: var(--danger) !important;\r\n }\r\n\r\n a.bg-danger:hover,\r\n a.bg-danger:focus,\r\n button.bg-danger:hover,\r\n button.bg-danger:focus {\r\n background-color: #d52a1a !important;\r\n }\r\n\r\n .bg-light {\r\n background-color: var(--light) !important;\r\n }\r\n\r\n a.bg-light:hover,\r\n a.bg-light:focus,\r\n button.bg-light:hover,\r\n button.bg-light:focus {\r\n background-color: #d4daed !important;\r\n }\r\n\r\n .bg-dark {\r\n background-color: var(--gray-dark) !important;\r\n }\r\n\r\n a.bg-dark:hover,\r\n a.bg-dark:focus,\r\n button.bg-dark:hover,\r\n button.bg-dark:focus {\r\n background-color: #42444e !important;\r\n }\r\n\r\n .bg-white {\r\n background-color: var(--white) !important;\r\n }\r\n\r\n .bg-transparent {\r\n background-color: transparent !important;\r\n }\r\n\r\n .border {\r\n border: 1px solid #e3e6f0 !important;\r\n }\r\n\r\n .border-top {\r\n border-top: 1px solid #e3e6f0 !important;\r\n }\r\n\r\n .border-right {\r\n border-right: 1px solid #e3e6f0 !important;\r\n }\r\n\r\n .border-bottom {\r\n border-bottom: 1px solid #e3e6f0 !important;\r\n }\r\n\r\n .border-left {\r\n border-left: 1px solid #e3e6f0 !important;\r\n }\r\n\r\n .border-0 {\r\n border: 0 !important;\r\n }\r\n\r\n .border-top-0 {\r\n border-top: 0 !important;\r\n }\r\n\r\n .border-right-0 {\r\n border-right: 0 !important;\r\n }\r\n\r\n .border-bottom-0 {\r\n border-bottom: 0 !important;\r\n }\r\n\r\n .border-left-0 {\r\n border-left: 0 !important;\r\n }\r\n\r\n .border-primary {\r\n border-color: var(--primary) !important;\r\n }\r\n\r\n .border-secondary {\r\n border-color: var(--secondary) !important;\r\n }\r\n\r\n .border-success {\r\n border-color: var(--success) !important;\r\n }\r\n\r\n .border-info {\r\n border-color: var(--info) !important;\r\n }\r\n\r\n .border-warning {\r\n border-color: var(--warning) !important;\r\n }\r\n\r\n .border-danger {\r\n border-color: var(--danger) !important;\r\n }\r\n\r\n .border-light {\r\n border-color: var(--light) !important;\r\n }\r\n\r\n .border-dark {\r\n border-color: var(--gray-dark) !important;\r\n }\r\n\r\n .border-white {\r\n border-color: var(--white) !important;\r\n }\r\n\r\n .rounded-sm {\r\n border-radius: 0.2rem !important;\r\n }\r\n\r\n .rounded {\r\n border-radius: 1.35rem !important;\r\n }\r\n\r\n .rounded-top {\r\n border-top-left-radius: 0.35rem !important;\r\n border-top-right-radius: 0.35rem !important;\r\n }\r\n\r\n .rounded-right {\r\n border-top-right-radius: 0.35rem !important;\r\n border-bottom-right-radius: 0.35rem !important;\r\n }\r\n\r\n .rounded-bottom {\r\n border-bottom-right-radius: 0.35rem !important;\r\n border-bottom-left-radius: 0.35rem !important;\r\n }\r\n\r\n .rounded-left {\r\n border-top-left-radius: 0.35rem !important;\r\n border-bottom-left-radius: 0.35rem !important;\r\n }\r\n\r\n .rounded-lg {\r\n border-radius: 0.3rem !important;\r\n }\r\n\r\n .rounded-circle {\r\n border-radius: 50% !important;\r\n }\r\n\r\n .rounded-pill {\r\n border-radius: 50rem !important;\r\n }\r\n\r\n .rounded-0 {\r\n border-radius: 0 !important;\r\n }\r\n\r\n .clearfix::after {\r\n display: block;\r\n clear: both;\r\n content: \"\";\r\n }\r\n\r\n .d-none {\r\n display: none !important;\r\n }\r\n\r\n .d-inline {\r\n display: inline !important;\r\n }\r\n\r\n .d-inline-block {\r\n display: inline-block !important;\r\n }\r\n\r\n .d-block {\r\n display: block !important;\r\n }\r\n\r\n .d-table {\r\n display: table !important;\r\n }\r\n\r\n .d-table-row {\r\n display: table-row !important;\r\n }\r\n\r\n .d-table-cell {\r\n display: table-cell !important;\r\n }\r\n\r\n .d-flex {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n }\r\n\r\n .d-inline-flex {\r\n display: -webkit-inline-box !important;\r\n display: -ms-inline-flexbox !important;\r\n display: inline-flex !important;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .d-sm-none {\r\n display: none !important;\r\n }\r\n .d-sm-inline {\r\n display: inline !important;\r\n }\r\n .d-sm-inline-block {\r\n display: inline-block !important;\r\n }\r\n .d-sm-block {\r\n display: block !important;\r\n }\r\n .d-sm-table {\r\n display: table !important;\r\n }\r\n .d-sm-table-row {\r\n display: table-row !important;\r\n }\r\n .d-sm-table-cell {\r\n display: table-cell !important;\r\n }\r\n .d-sm-flex {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n }\r\n .d-sm-inline-flex {\r\n display: -webkit-inline-box !important;\r\n display: -ms-inline-flexbox !important;\r\n display: inline-flex !important;\r\n }\r\n }\r\n\r\n @media (min-width: 900px) {\r\n .d-md-none {\r\n display: none !important;\r\n }\r\n .d-md-inline {\r\n display: inline !important;\r\n }\r\n .d-md-inline-block {\r\n display: inline-block !important;\r\n }\r\n .d-md-block {\r\n display: block !important;\r\n }\r\n .d-md-table {\r\n display: table !important;\r\n }\r\n .d-md-table-row {\r\n display: table-row !important;\r\n }\r\n .d-md-table-cell {\r\n display: table-cell !important;\r\n }\r\n .d-md-flex {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n }\r\n .d-md-inline-flex {\r\n display: -webkit-inline-box !important;\r\n display: -ms-inline-flexbox !important;\r\n display: inline-flex !important;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .d-lg-none {\r\n display: none !important;\r\n }\r\n .d-lg-inline {\r\n display: inline !important;\r\n }\r\n .d-lg-inline-block {\r\n display: inline-block !important;\r\n }\r\n .d-lg-block {\r\n display: block !important;\r\n }\r\n .d-lg-table {\r\n display: table !important;\r\n }\r\n .d-lg-table-row {\r\n display: table-row !important;\r\n }\r\n .d-lg-table-cell {\r\n display: table-cell !important;\r\n }\r\n .d-lg-flex {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n }\r\n .d-lg-inline-flex {\r\n display: -webkit-inline-box !important;\r\n display: -ms-inline-flexbox !important;\r\n display: inline-flex !important;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .d-xl-none {\r\n display: none !important;\r\n }\r\n .d-xl-inline {\r\n display: inline !important;\r\n }\r\n .d-xl-inline-block {\r\n display: inline-block !important;\r\n }\r\n .d-xl-block {\r\n display: block !important;\r\n }\r\n .d-xl-table {\r\n display: table !important;\r\n }\r\n .d-xl-table-row {\r\n display: table-row !important;\r\n }\r\n .d-xl-table-cell {\r\n display: table-cell !important;\r\n }\r\n .d-xl-flex {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n }\r\n .d-xl-inline-flex {\r\n display: -webkit-inline-box !important;\r\n display: -ms-inline-flexbox !important;\r\n display: inline-flex !important;\r\n }\r\n }\r\n\r\n @media print {\r\n .d-print-none {\r\n display: none !important;\r\n }\r\n .d-print-inline {\r\n display: inline !important;\r\n }\r\n .d-print-inline-block {\r\n display: inline-block !important;\r\n }\r\n .d-print-block {\r\n display: block !important;\r\n }\r\n .d-print-table {\r\n display: table !important;\r\n }\r\n .d-print-table-row {\r\n display: table-row !important;\r\n }\r\n .d-print-table-cell {\r\n display: table-cell !important;\r\n }\r\n .d-print-flex {\r\n display: -webkit-box !important;\r\n display: -ms-flexbox !important;\r\n display: flex !important;\r\n }\r\n .d-print-inline-flex {\r\n display: -webkit-inline-box !important;\r\n display: -ms-inline-flexbox !important;\r\n display: inline-flex !important;\r\n }\r\n }\r\n\r\n .embed-responsive {\r\n position: relative;\r\n display: block;\r\n width: 100%;\r\n padding: 0;\r\n overflow: hidden;\r\n }\r\n\r\n .embed-responsive::before {\r\n display: block;\r\n content: \"\";\r\n }\r\n\r\n .embed-responsive .embed-responsive-item,\r\n .embed-responsive iframe,\r\n .embed-responsive embed,\r\n .embed-responsive object,\r\n .embed-responsive video {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n border: 0;\r\n }\r\n\r\n .embed-responsive-21by9::before {\r\n padding-top: 42.85714%;\r\n }\r\n\r\n .embed-responsive-16by9::before {\r\n padding-top: 56.25%;\r\n }\r\n\r\n .embed-responsive-4by3::before {\r\n padding-top: 75%;\r\n }\r\n\r\n .embed-responsive-1by1::before {\r\n padding-top: 100%;\r\n }\r\n\r\n .flex-row {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: row !important;\r\n flex-direction: row !important;\r\n }\r\n\r\n .flex-column {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: column !important;\r\n flex-direction: column !important;\r\n }\r\n\r\n .flex-row-reverse {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: row-reverse !important;\r\n flex-direction: row-reverse !important;\r\n }\r\n\r\n .flex-column-reverse {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: column-reverse !important;\r\n flex-direction: column-reverse !important;\r\n }\r\n\r\n .flex-wrap {\r\n -ms-flex-wrap: wrap !important;\r\n flex-wrap: wrap !important;\r\n }\r\n\r\n .flex-nowrap {\r\n -ms-flex-wrap: nowrap !important;\r\n flex-wrap: nowrap !important;\r\n }\r\n\r\n .flex-wrap-reverse {\r\n -ms-flex-wrap: wrap-reverse !important;\r\n flex-wrap: wrap-reverse !important;\r\n }\r\n\r\n .flex-fill {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex: 1 1 auto !important;\r\n flex: 1 1 auto !important;\r\n }\r\n\r\n .flex-grow-0 {\r\n -webkit-box-flex: 0 !important;\r\n -ms-flex-positive: 0 !important;\r\n flex-grow: 0 !important;\r\n }\r\n\r\n .flex-grow-1 {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex-positive: 1 !important;\r\n flex-grow: 1 !important;\r\n }\r\n\r\n .flex-shrink-0 {\r\n -ms-flex-negative: 0 !important;\r\n flex-shrink: 0 !important;\r\n }\r\n\r\n .flex-shrink-1 {\r\n -ms-flex-negative: 1 !important;\r\n flex-shrink: 1 !important;\r\n }\r\n\r\n .justify-content-start {\r\n -webkit-box-pack: start !important;\r\n -ms-flex-pack: start !important;\r\n justify-content: flex-start !important;\r\n }\r\n\r\n .justify-content-end {\r\n -webkit-box-pack: end !important;\r\n -ms-flex-pack: end !important;\r\n justify-content: flex-end !important;\r\n }\r\n\r\n .justify-content-center {\r\n -webkit-box-pack: center !important;\r\n -ms-flex-pack: center !important;\r\n justify-content: center !important;\r\n }\r\n\r\n .justify-content-between {\r\n -webkit-box-pack: justify !important;\r\n -ms-flex-pack: justify !important;\r\n justify-content: space-between !important;\r\n }\r\n\r\n .justify-content-around {\r\n -ms-flex-pack: distribute !important;\r\n justify-content: space-around !important;\r\n }\r\n\r\n .align-items-start {\r\n -webkit-box-align: start !important;\r\n -ms-flex-align: start !important;\r\n align-items: flex-start !important;\r\n }\r\n\r\n .align-items-end {\r\n -webkit-box-align: end !important;\r\n -ms-flex-align: end !important;\r\n align-items: flex-end !important;\r\n }\r\n\r\n .align-items-center {\r\n -webkit-box-align: center !important;\r\n -ms-flex-align: center !important;\r\n align-items: center !important;\r\n }\r\n\r\n .align-items-baseline {\r\n -webkit-box-align: baseline !important;\r\n -ms-flex-align: baseline !important;\r\n align-items: baseline !important;\r\n }\r\n\r\n .align-items-stretch {\r\n -webkit-box-align: stretch !important;\r\n -ms-flex-align: stretch !important;\r\n align-items: stretch !important;\r\n }\r\n\r\n .align-content-start {\r\n -ms-flex-line-pack: start !important;\r\n align-content: flex-start !important;\r\n }\r\n\r\n .align-content-end {\r\n -ms-flex-line-pack: end !important;\r\n align-content: flex-end !important;\r\n }\r\n\r\n .align-content-center {\r\n -ms-flex-line-pack: center !important;\r\n align-content: center !important;\r\n }\r\n\r\n .align-content-between {\r\n -ms-flex-line-pack: justify !important;\r\n align-content: space-between !important;\r\n }\r\n\r\n .align-content-around {\r\n -ms-flex-line-pack: distribute !important;\r\n align-content: space-around !important;\r\n }\r\n\r\n .align-content-stretch {\r\n -ms-flex-line-pack: stretch !important;\r\n align-content: stretch !important;\r\n }\r\n\r\n .align-self-auto {\r\n -ms-flex-item-align: auto !important;\r\n align-self: auto !important;\r\n }\r\n\r\n .align-self-start {\r\n -ms-flex-item-align: start !important;\r\n align-self: flex-start !important;\r\n }\r\n\r\n .align-self-end {\r\n -ms-flex-item-align: end !important;\r\n align-self: flex-end !important;\r\n }\r\n\r\n .align-self-center {\r\n -ms-flex-item-align: center !important;\r\n align-self: center !important;\r\n }\r\n\r\n .align-self-baseline {\r\n -ms-flex-item-align: baseline !important;\r\n align-self: baseline !important;\r\n }\r\n\r\n .align-self-stretch {\r\n -ms-flex-item-align: stretch !important;\r\n align-self: stretch !important;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .flex-sm-row {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: row !important;\r\n flex-direction: row !important;\r\n }\r\n .flex-sm-column {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: column !important;\r\n flex-direction: column !important;\r\n }\r\n .flex-sm-row-reverse {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: row-reverse !important;\r\n flex-direction: row-reverse !important;\r\n }\r\n .flex-sm-column-reverse {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: column-reverse !important;\r\n flex-direction: column-reverse !important;\r\n }\r\n .flex-sm-wrap {\r\n -ms-flex-wrap: wrap !important;\r\n flex-wrap: wrap !important;\r\n }\r\n .flex-sm-nowrap {\r\n -ms-flex-wrap: nowrap !important;\r\n flex-wrap: nowrap !important;\r\n }\r\n .flex-sm-wrap-reverse {\r\n -ms-flex-wrap: wrap-reverse !important;\r\n flex-wrap: wrap-reverse !important;\r\n }\r\n .flex-sm-fill {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex: 1 1 auto !important;\r\n flex: 1 1 auto !important;\r\n }\r\n .flex-sm-grow-0 {\r\n -webkit-box-flex: 0 !important;\r\n -ms-flex-positive: 0 !important;\r\n flex-grow: 0 !important;\r\n }\r\n .flex-sm-grow-1 {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex-positive: 1 !important;\r\n flex-grow: 1 !important;\r\n }\r\n .flex-sm-shrink-0 {\r\n -ms-flex-negative: 0 !important;\r\n flex-shrink: 0 !important;\r\n }\r\n .flex-sm-shrink-1 {\r\n -ms-flex-negative: 1 !important;\r\n flex-shrink: 1 !important;\r\n }\r\n .justify-content-sm-start {\r\n -webkit-box-pack: start !important;\r\n -ms-flex-pack: start !important;\r\n justify-content: flex-start !important;\r\n }\r\n .justify-content-sm-end {\r\n -webkit-box-pack: end !important;\r\n -ms-flex-pack: end !important;\r\n justify-content: flex-end !important;\r\n }\r\n .justify-content-sm-center {\r\n -webkit-box-pack: center !important;\r\n -ms-flex-pack: center !important;\r\n justify-content: center !important;\r\n }\r\n .justify-content-sm-between {\r\n -webkit-box-pack: justify !important;\r\n -ms-flex-pack: justify !important;\r\n justify-content: space-between !important;\r\n }\r\n .justify-content-sm-around {\r\n -ms-flex-pack: distribute !important;\r\n justify-content: space-around !important;\r\n }\r\n .align-items-sm-start {\r\n -webkit-box-align: start !important;\r\n -ms-flex-align: start !important;\r\n align-items: flex-start !important;\r\n }\r\n .align-items-sm-end {\r\n -webkit-box-align: end !important;\r\n -ms-flex-align: end !important;\r\n align-items: flex-end !important;\r\n }\r\n .align-items-sm-center {\r\n -webkit-box-align: center !important;\r\n -ms-flex-align: center !important;\r\n align-items: center !important;\r\n }\r\n .align-items-sm-baseline {\r\n -webkit-box-align: baseline !important;\r\n -ms-flex-align: baseline !important;\r\n align-items: baseline !important;\r\n }\r\n .align-items-sm-stretch {\r\n -webkit-box-align: stretch !important;\r\n -ms-flex-align: stretch !important;\r\n align-items: stretch !important;\r\n }\r\n .align-content-sm-start {\r\n -ms-flex-line-pack: start !important;\r\n align-content: flex-start !important;\r\n }\r\n .align-content-sm-end {\r\n -ms-flex-line-pack: end !important;\r\n align-content: flex-end !important;\r\n }\r\n .align-content-sm-center {\r\n -ms-flex-line-pack: center !important;\r\n align-content: center !important;\r\n }\r\n .align-content-sm-between {\r\n -ms-flex-line-pack: justify !important;\r\n align-content: space-between !important;\r\n }\r\n .align-content-sm-around {\r\n -ms-flex-line-pack: distribute !important;\r\n align-content: space-around !important;\r\n }\r\n .align-content-sm-stretch {\r\n -ms-flex-line-pack: stretch !important;\r\n align-content: stretch !important;\r\n }\r\n .align-self-sm-auto {\r\n -ms-flex-item-align: auto !important;\r\n align-self: auto !important;\r\n }\r\n .align-self-sm-start {\r\n -ms-flex-item-align: start !important;\r\n align-self: flex-start !important;\r\n }\r\n .align-self-sm-end {\r\n -ms-flex-item-align: end !important;\r\n align-self: flex-end !important;\r\n }\r\n .align-self-sm-center {\r\n -ms-flex-item-align: center !important;\r\n align-self: center !important;\r\n }\r\n .align-self-sm-baseline {\r\n -ms-flex-item-align: baseline !important;\r\n align-self: baseline !important;\r\n }\r\n .align-self-sm-stretch {\r\n -ms-flex-item-align: stretch !important;\r\n align-self: stretch !important;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .flex-md-row {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: row !important;\r\n flex-direction: row !important;\r\n }\r\n .flex-md-column {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: column !important;\r\n flex-direction: column !important;\r\n }\r\n .flex-md-row-reverse {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: row-reverse !important;\r\n flex-direction: row-reverse !important;\r\n }\r\n .flex-md-column-reverse {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: column-reverse !important;\r\n flex-direction: column-reverse !important;\r\n }\r\n .flex-md-wrap {\r\n -ms-flex-wrap: wrap !important;\r\n flex-wrap: wrap !important;\r\n }\r\n .flex-md-nowrap {\r\n -ms-flex-wrap: nowrap !important;\r\n flex-wrap: nowrap !important;\r\n }\r\n .flex-md-wrap-reverse {\r\n -ms-flex-wrap: wrap-reverse !important;\r\n flex-wrap: wrap-reverse !important;\r\n }\r\n .flex-md-fill {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex: 1 1 auto !important;\r\n flex: 1 1 auto !important;\r\n }\r\n .flex-md-grow-0 {\r\n -webkit-box-flex: 0 !important;\r\n -ms-flex-positive: 0 !important;\r\n flex-grow: 0 !important;\r\n }\r\n .flex-md-grow-1 {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex-positive: 1 !important;\r\n flex-grow: 1 !important;\r\n }\r\n .flex-md-shrink-0 {\r\n -ms-flex-negative: 0 !important;\r\n flex-shrink: 0 !important;\r\n }\r\n .flex-md-shrink-1 {\r\n -ms-flex-negative: 1 !important;\r\n flex-shrink: 1 !important;\r\n }\r\n .justify-content-md-start {\r\n -webkit-box-pack: start !important;\r\n -ms-flex-pack: start !important;\r\n justify-content: flex-start !important;\r\n }\r\n .justify-content-md-end {\r\n -webkit-box-pack: end !important;\r\n -ms-flex-pack: end !important;\r\n justify-content: flex-end !important;\r\n }\r\n .justify-content-md-center {\r\n -webkit-box-pack: center !important;\r\n -ms-flex-pack: center !important;\r\n justify-content: center !important;\r\n }\r\n .justify-content-md-between {\r\n -webkit-box-pack: justify !important;\r\n -ms-flex-pack: justify !important;\r\n justify-content: space-between !important;\r\n }\r\n .justify-content-md-around {\r\n -ms-flex-pack: distribute !important;\r\n justify-content: space-around !important;\r\n }\r\n .align-items-md-start {\r\n -webkit-box-align: start !important;\r\n -ms-flex-align: start !important;\r\n align-items: flex-start !important;\r\n }\r\n .align-items-md-end {\r\n -webkit-box-align: end !important;\r\n -ms-flex-align: end !important;\r\n align-items: flex-end !important;\r\n }\r\n .align-items-md-center {\r\n -webkit-box-align: center !important;\r\n -ms-flex-align: center !important;\r\n align-items: center !important;\r\n }\r\n .align-items-md-baseline {\r\n -webkit-box-align: baseline !important;\r\n -ms-flex-align: baseline !important;\r\n align-items: baseline !important;\r\n }\r\n .align-items-md-stretch {\r\n -webkit-box-align: stretch !important;\r\n -ms-flex-align: stretch !important;\r\n align-items: stretch !important;\r\n }\r\n .align-content-md-start {\r\n -ms-flex-line-pack: start !important;\r\n align-content: flex-start !important;\r\n }\r\n .align-content-md-end {\r\n -ms-flex-line-pack: end !important;\r\n align-content: flex-end !important;\r\n }\r\n .align-content-md-center {\r\n -ms-flex-line-pack: center !important;\r\n align-content: center !important;\r\n }\r\n .align-content-md-between {\r\n -ms-flex-line-pack: justify !important;\r\n align-content: space-between !important;\r\n }\r\n .align-content-md-around {\r\n -ms-flex-line-pack: distribute !important;\r\n align-content: space-around !important;\r\n }\r\n .align-content-md-stretch {\r\n -ms-flex-line-pack: stretch !important;\r\n align-content: stretch !important;\r\n }\r\n .align-self-md-auto {\r\n -ms-flex-item-align: auto !important;\r\n align-self: auto !important;\r\n }\r\n .align-self-md-start {\r\n -ms-flex-item-align: start !important;\r\n align-self: flex-start !important;\r\n }\r\n .align-self-md-end {\r\n -ms-flex-item-align: end !important;\r\n align-self: flex-end !important;\r\n }\r\n .align-self-md-center {\r\n -ms-flex-item-align: center !important;\r\n align-self: center !important;\r\n }\r\n .align-self-md-baseline {\r\n -ms-flex-item-align: baseline !important;\r\n align-self: baseline !important;\r\n }\r\n .align-self-md-stretch {\r\n -ms-flex-item-align: stretch !important;\r\n align-self: stretch !important;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .flex-lg-row {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: row !important;\r\n flex-direction: row !important;\r\n }\r\n .flex-lg-column {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: column !important;\r\n flex-direction: column !important;\r\n }\r\n .flex-lg-row-reverse {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: row-reverse !important;\r\n flex-direction: row-reverse !important;\r\n }\r\n .flex-lg-column-reverse {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: column-reverse !important;\r\n flex-direction: column-reverse !important;\r\n }\r\n .flex-lg-wrap {\r\n -ms-flex-wrap: wrap !important;\r\n flex-wrap: wrap !important;\r\n }\r\n .flex-lg-nowrap {\r\n -ms-flex-wrap: nowrap !important;\r\n flex-wrap: nowrap !important;\r\n }\r\n .flex-lg-wrap-reverse {\r\n -ms-flex-wrap: wrap-reverse !important;\r\n flex-wrap: wrap-reverse !important;\r\n }\r\n .flex-lg-fill {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex: 1 1 auto !important;\r\n flex: 1 1 auto !important;\r\n }\r\n .flex-lg-grow-0 {\r\n -webkit-box-flex: 0 !important;\r\n -ms-flex-positive: 0 !important;\r\n flex-grow: 0 !important;\r\n }\r\n .flex-lg-grow-1 {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex-positive: 1 !important;\r\n flex-grow: 1 !important;\r\n }\r\n .flex-lg-shrink-0 {\r\n -ms-flex-negative: 0 !important;\r\n flex-shrink: 0 !important;\r\n }\r\n .flex-lg-shrink-1 {\r\n -ms-flex-negative: 1 !important;\r\n flex-shrink: 1 !important;\r\n }\r\n .justify-content-lg-start {\r\n -webkit-box-pack: start !important;\r\n -ms-flex-pack: start !important;\r\n justify-content: flex-start !important;\r\n }\r\n .justify-content-lg-end {\r\n -webkit-box-pack: end !important;\r\n -ms-flex-pack: end !important;\r\n justify-content: flex-end !important;\r\n }\r\n .justify-content-lg-center {\r\n -webkit-box-pack: center !important;\r\n -ms-flex-pack: center !important;\r\n justify-content: center !important;\r\n }\r\n .justify-content-lg-between {\r\n -webkit-box-pack: justify !important;\r\n -ms-flex-pack: justify !important;\r\n justify-content: space-between !important;\r\n }\r\n .justify-content-lg-around {\r\n -ms-flex-pack: distribute !important;\r\n justify-content: space-around !important;\r\n }\r\n .align-items-lg-start {\r\n -webkit-box-align: start !important;\r\n -ms-flex-align: start !important;\r\n align-items: flex-start !important;\r\n }\r\n .align-items-lg-end {\r\n -webkit-box-align: end !important;\r\n -ms-flex-align: end !important;\r\n align-items: flex-end !important;\r\n }\r\n .align-items-lg-center {\r\n -webkit-box-align: center !important;\r\n -ms-flex-align: center !important;\r\n align-items: center !important;\r\n }\r\n .align-items-lg-baseline {\r\n -webkit-box-align: baseline !important;\r\n -ms-flex-align: baseline !important;\r\n align-items: baseline !important;\r\n }\r\n .align-items-lg-stretch {\r\n -webkit-box-align: stretch !important;\r\n -ms-flex-align: stretch !important;\r\n align-items: stretch !important;\r\n }\r\n .align-content-lg-start {\r\n -ms-flex-line-pack: start !important;\r\n align-content: flex-start !important;\r\n }\r\n .align-content-lg-end {\r\n -ms-flex-line-pack: end !important;\r\n align-content: flex-end !important;\r\n }\r\n .align-content-lg-center {\r\n -ms-flex-line-pack: center !important;\r\n align-content: center !important;\r\n }\r\n .align-content-lg-between {\r\n -ms-flex-line-pack: justify !important;\r\n align-content: space-between !important;\r\n }\r\n .align-content-lg-around {\r\n -ms-flex-line-pack: distribute !important;\r\n align-content: space-around !important;\r\n }\r\n .align-content-lg-stretch {\r\n -ms-flex-line-pack: stretch !important;\r\n align-content: stretch !important;\r\n }\r\n .align-self-lg-auto {\r\n -ms-flex-item-align: auto !important;\r\n align-self: auto !important;\r\n }\r\n .align-self-lg-start {\r\n -ms-flex-item-align: start !important;\r\n align-self: flex-start !important;\r\n }\r\n .align-self-lg-end {\r\n -ms-flex-item-align: end !important;\r\n align-self: flex-end !important;\r\n }\r\n .align-self-lg-center {\r\n -ms-flex-item-align: center !important;\r\n align-self: center !important;\r\n }\r\n .align-self-lg-baseline {\r\n -ms-flex-item-align: baseline !important;\r\n align-self: baseline !important;\r\n }\r\n .align-self-lg-stretch {\r\n -ms-flex-item-align: stretch !important;\r\n align-self: stretch !important;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .flex-xl-row {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: row !important;\r\n flex-direction: row !important;\r\n }\r\n .flex-xl-column {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: normal !important;\r\n -ms-flex-direction: column !important;\r\n flex-direction: column !important;\r\n }\r\n .flex-xl-row-reverse {\r\n -webkit-box-orient: horizontal !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: row-reverse !important;\r\n flex-direction: row-reverse !important;\r\n }\r\n .flex-xl-column-reverse {\r\n -webkit-box-orient: vertical !important;\r\n -webkit-box-direction: reverse !important;\r\n -ms-flex-direction: column-reverse !important;\r\n flex-direction: column-reverse !important;\r\n }\r\n .flex-xl-wrap {\r\n -ms-flex-wrap: wrap !important;\r\n flex-wrap: wrap !important;\r\n }\r\n .flex-xl-nowrap {\r\n -ms-flex-wrap: nowrap !important;\r\n flex-wrap: nowrap !important;\r\n }\r\n .flex-xl-wrap-reverse {\r\n -ms-flex-wrap: wrap-reverse !important;\r\n flex-wrap: wrap-reverse !important;\r\n }\r\n .flex-xl-fill {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex: 1 1 auto !important;\r\n flex: 1 1 auto !important;\r\n }\r\n .flex-xl-grow-0 {\r\n -webkit-box-flex: 0 !important;\r\n -ms-flex-positive: 0 !important;\r\n flex-grow: 0 !important;\r\n }\r\n .flex-xl-grow-1 {\r\n -webkit-box-flex: 1 !important;\r\n -ms-flex-positive: 1 !important;\r\n flex-grow: 1 !important;\r\n }\r\n .flex-xl-shrink-0 {\r\n -ms-flex-negative: 0 !important;\r\n flex-shrink: 0 !important;\r\n }\r\n .flex-xl-shrink-1 {\r\n -ms-flex-negative: 1 !important;\r\n flex-shrink: 1 !important;\r\n }\r\n .justify-content-xl-start {\r\n -webkit-box-pack: start !important;\r\n -ms-flex-pack: start !important;\r\n justify-content: flex-start !important;\r\n }\r\n .justify-content-xl-end {\r\n -webkit-box-pack: end !important;\r\n -ms-flex-pack: end !important;\r\n justify-content: flex-end !important;\r\n }\r\n .justify-content-xl-center {\r\n -webkit-box-pack: center !important;\r\n -ms-flex-pack: center !important;\r\n justify-content: center !important;\r\n }\r\n .justify-content-xl-between {\r\n -webkit-box-pack: justify !important;\r\n -ms-flex-pack: justify !important;\r\n justify-content: space-between !important;\r\n }\r\n .justify-content-xl-around {\r\n -ms-flex-pack: distribute !important;\r\n justify-content: space-around !important;\r\n }\r\n .align-items-xl-start {\r\n -webkit-box-align: start !important;\r\n -ms-flex-align: start !important;\r\n align-items: flex-start !important;\r\n }\r\n .align-items-xl-end {\r\n -webkit-box-align: end !important;\r\n -ms-flex-align: end !important;\r\n align-items: flex-end !important;\r\n }\r\n .align-items-xl-center {\r\n -webkit-box-align: center !important;\r\n -ms-flex-align: center !important;\r\n align-items: center !important;\r\n }\r\n .align-items-xl-baseline {\r\n -webkit-box-align: baseline !important;\r\n -ms-flex-align: baseline !important;\r\n align-items: baseline !important;\r\n }\r\n .align-items-xl-stretch {\r\n -webkit-box-align: stretch !important;\r\n -ms-flex-align: stretch !important;\r\n align-items: stretch !important;\r\n }\r\n .align-content-xl-start {\r\n -ms-flex-line-pack: start !important;\r\n align-content: flex-start !important;\r\n }\r\n .align-content-xl-end {\r\n -ms-flex-line-pack: end !important;\r\n align-content: flex-end !important;\r\n }\r\n .align-content-xl-center {\r\n -ms-flex-line-pack: center !important;\r\n align-content: center !important;\r\n }\r\n .align-content-xl-between {\r\n -ms-flex-line-pack: justify !important;\r\n align-content: space-between !important;\r\n }\r\n .align-content-xl-around {\r\n -ms-flex-line-pack: distribute !important;\r\n align-content: space-around !important;\r\n }\r\n .align-content-xl-stretch {\r\n -ms-flex-line-pack: stretch !important;\r\n align-content: stretch !important;\r\n }\r\n .align-self-xl-auto {\r\n -ms-flex-item-align: auto !important;\r\n align-self: auto !important;\r\n }\r\n .align-self-xl-start {\r\n -ms-flex-item-align: start !important;\r\n align-self: flex-start !important;\r\n }\r\n .align-self-xl-end {\r\n -ms-flex-item-align: end !important;\r\n align-self: flex-end !important;\r\n }\r\n .align-self-xl-center {\r\n -ms-flex-item-align: center !important;\r\n align-self: center !important;\r\n }\r\n .align-self-xl-baseline {\r\n -ms-flex-item-align: baseline !important;\r\n align-self: baseline !important;\r\n }\r\n .align-self-xl-stretch {\r\n -ms-flex-item-align: stretch !important;\r\n align-self: stretch !important;\r\n }\r\n }\r\n\r\n .float-left {\r\n float: left !important;\r\n }\r\n\r\n .float-right {\r\n float: right !important;\r\n }\r\n\r\n .float-none {\r\n float: none !important;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .float-sm-left {\r\n float: left !important;\r\n }\r\n .float-sm-right {\r\n float: right !important;\r\n }\r\n .float-sm-none {\r\n float: none !important;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .float-md-left {\r\n float: left !important;\r\n }\r\n .float-md-right {\r\n float: right !important;\r\n }\r\n .float-md-none {\r\n float: none !important;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .float-lg-left {\r\n float: left !important;\r\n }\r\n .float-lg-right {\r\n float: right !important;\r\n }\r\n .float-lg-none {\r\n float: none !important;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .float-xl-left {\r\n float: left !important;\r\n }\r\n .float-xl-right {\r\n float: right !important;\r\n }\r\n .float-xl-none {\r\n float: none !important;\r\n }\r\n }\r\n\r\n .overflow-auto {\r\n overflow: auto !important;\r\n }\r\n\r\n .overflow-hidden {\r\n overflow: hidden !important;\r\n }\r\n\r\n .position-static {\r\n position: static !important;\r\n }\r\n\r\n .position-relative {\r\n position: relative !important;\r\n }\r\n\r\n .position-absolute {\r\n position: absolute !important;\r\n }\r\n\r\n .position-fixed {\r\n position: fixed !important;\r\n }\r\n\r\n .position-sticky {\r\n position: -webkit-sticky !important;\r\n position: sticky !important;\r\n }\r\n\r\n .fixed-top {\r\n position: fixed;\r\n top: 0;\r\n right: 0;\r\n left: 0;\r\n z-index: 1030;\r\n }\r\n\r\n .fixed-bottom {\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1030;\r\n }\r\n\r\n @supports ((position: -webkit-sticky) or (position: sticky)) {\r\n .sticky-top {\r\n position: -webkit-sticky;\r\n position: sticky;\r\n top: 0;\r\n z-index: 1020;\r\n }\r\n }\r\n\r\n .sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n white-space: nowrap;\r\n border: 0;\r\n }\r\n\r\n .sr-only-focusable:active,\r\n .sr-only-focusable:focus {\r\n position: static;\r\n width: auto;\r\n height: auto;\r\n overflow: visible;\r\n clip: auto;\r\n white-space: normal;\r\n }\r\n\r\n .shadow-sm {\r\n -webkit-box-shadow: 0 0.125rem 0.25rem 0 rgba(58, 59, 69, 0.2) !important;\r\n box-shadow: 0 0.125rem 0.25rem 0 rgba(58, 59, 69, 0.2) !important;\r\n }\r\n\r\n .shadow {\r\n -webkit-box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15) !important;\r\n box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15) !important;\r\n }\r\n\r\n .shadow-lg {\r\n -webkit-box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\r\n box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\r\n }\r\n\r\n .shadow-none {\r\n -webkit-box-shadow: none !important;\r\n box-shadow: none !important;\r\n }\r\n\r\n .w-25 {\r\n width: 25% !important;\r\n }\r\n\r\n .w-50 {\r\n width: 50% !important;\r\n }\r\n\r\n .w-75 {\r\n width: 75% !important;\r\n }\r\n\r\n .w-100 {\r\n width: 100% !important;\r\n }\r\n\r\n .w-auto {\r\n width: auto !important;\r\n }\r\n\r\n .h-25 {\r\n height: 25% !important;\r\n }\r\n\r\n .h-50 {\r\n height: 50% !important;\r\n }\r\n\r\n .h-75 {\r\n height: 75% !important;\r\n }\r\n\r\n .h-100 {\r\n height: 100% !important;\r\n }\r\n\r\n .h-auto {\r\n height: auto !important;\r\n }\r\n\r\n .mw-100 {\r\n max-width: 100% !important;\r\n }\r\n\r\n .mh-100 {\r\n max-height: 100% !important;\r\n }\r\n\r\n .min-vw-100 {\r\n min-width: 100vw !important;\r\n }\r\n\r\n .min-vh-100 {\r\n min-height: 100vh !important;\r\n }\r\n\r\n .vw-100 {\r\n width: 100vw !important;\r\n }\r\n\r\n .vh-100 {\r\n height: 100vh !important;\r\n }\r\n\r\n .stretched-link::after {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n pointer-events: auto;\r\n content: \"\";\r\n background-color: rgba(0, 0, 0, 0);\r\n }\r\n\r\n .m-0 {\r\n margin: 0 !important;\r\n }\r\n\r\n .mt-0,\r\n .my-0 {\r\n margin-top: 0 !important;\r\n }\r\n\r\n .mr-0,\r\n .mx-0 {\r\n margin-right: 0 !important;\r\n }\r\n\r\n .mb-0,\r\n .my-0 {\r\n margin-bottom: 0 !important;\r\n }\r\n\r\n .ml-0,\r\n .mx-0 {\r\n margin-left: 0 !important;\r\n }\r\n\r\n .m-1 {\r\n margin: 0.25rem !important;\r\n }\r\n\r\n .mt-1,\r\n .my-1 {\r\n margin-top: 0.25rem !important;\r\n }\r\n\r\n .mr-1,\r\n .mx-1 {\r\n margin-right: 0.25rem !important;\r\n }\r\n\r\n .mb-1,\r\n .my-1 {\r\n margin-bottom: 0.25rem !important;\r\n }\r\n\r\n .ml-1,\r\n .mx-1 {\r\n margin-left: 0.25rem !important;\r\n }\r\n\r\n .m-2 {\r\n margin: 0.5rem !important;\r\n }\r\n\r\n .mt-2,\r\n .my-2 {\r\n margin-top: 0.5rem !important;\r\n }\r\n\r\n .mr-2,\r\n .mx-2 {\r\n margin-right: 0.5rem !important;\r\n }\r\n\r\n .mb-2,\r\n .my-2 {\r\n margin-bottom: 0.5rem !important;\r\n }\r\n\r\n .ml-2,\r\n .mx-2 {\r\n margin-left: 0.5rem !important;\r\n }\r\n\r\n .m-3 {\r\n margin: 1rem !important;\r\n }\r\n\r\n .mt-3,\r\n .my-3 {\r\n margin-top: 1rem !important;\r\n }\r\n\r\n .mr-3,\r\n .mx-3 {\r\n margin-right: 1rem !important;\r\n }\r\n\r\n .mb-3,\r\n .my-3 {\r\n margin-bottom: 1rem !important;\r\n }\r\n\r\n .ml-3,\r\n .mx-3 {\r\n margin-left: 1rem !important;\r\n }\r\n\r\n .m-4 {\r\n margin: 1.5rem !important;\r\n }\r\n\r\n .mt-4,\r\n .my-4 {\r\n margin-top: 1.5rem !important;\r\n }\r\n\r\n .mr-4,\r\n .mx-4 {\r\n margin-right: 1.5rem !important;\r\n }\r\n\r\n .mb-4,\r\n .my-4 {\r\n margin-bottom: 1.5rem !important;\r\n }\r\n\r\n .ml-4,\r\n .mx-4 {\r\n margin-left: 1.5rem !important;\r\n }\r\n\r\n .m-5 {\r\n margin: 3rem !important;\r\n }\r\n\r\n .mt-5,\r\n .my-5 {\r\n margin-top: 3rem !important;\r\n }\r\n\r\n .mr-5,\r\n .mx-5 {\r\n margin-right: 3rem !important;\r\n }\r\n\r\n .mb-5,\r\n .my-5 {\r\n margin-bottom: 3rem !important;\r\n }\r\n\r\n .ml-5,\r\n .mx-5 {\r\n margin-left: 3rem !important;\r\n }\r\n\r\n .p-0 {\r\n padding: 0 !important;\r\n }\r\n\r\n .pt-0,\r\n .py-0 {\r\n padding-top: 0 !important;\r\n }\r\n\r\n .pr-0,\r\n .px-0 {\r\n padding-right: 0 !important;\r\n }\r\n\r\n .pb-0,\r\n .py-0 {\r\n padding-bottom: 0 !important;\r\n }\r\n\r\n .pl-0,\r\n .px-0 {\r\n padding-left: 0 !important;\r\n }\r\n\r\n .p-1 {\r\n padding: 0.25rem !important;\r\n }\r\n\r\n .pt-1,\r\n .py-1 {\r\n padding-top: 0.25rem !important;\r\n }\r\n\r\n .pr-1,\r\n .px-1 {\r\n padding-right: 0.25rem !important;\r\n }\r\n\r\n .pb-1,\r\n .py-1 {\r\n padding-bottom: 0.25rem !important;\r\n }\r\n\r\n .pl-1,\r\n .px-1 {\r\n padding-left: 0.25rem !important;\r\n }\r\n\r\n .p-2 {\r\n padding: 0.5rem !important;\r\n }\r\n\r\n .pt-2,\r\n .py-2 {\r\n padding-top: 0.5rem !important;\r\n }\r\n\r\n .pr-2,\r\n .px-2 {\r\n padding-right: 0.5rem !important;\r\n }\r\n\r\n .pb-2,\r\n .py-2 {\r\n padding-bottom: 0.5rem !important;\r\n }\r\n\r\n .pl-2,\r\n .px-2 {\r\n padding-left: 0.5rem !important;\r\n }\r\n\r\n .p-3 {\r\n padding: 1rem !important;\r\n }\r\n\r\n .pt-3,\r\n .py-3 {\r\n padding-top: 1rem !important;\r\n }\r\n\r\n .pr-3,\r\n .px-3 {\r\n padding-right: 1rem !important;\r\n }\r\n\r\n .pb-3,\r\n .py-3 {\r\n padding-bottom: 1rem !important;\r\n }\r\n\r\n .pl-3,\r\n .px-3 {\r\n padding-left: 1rem !important;\r\n }\r\n\r\n .p-4 {\r\n padding: 1.5rem !important;\r\n }\r\n\r\n .pt-4,\r\n .py-4 {\r\n padding-top: 1.5rem !important;\r\n }\r\n\r\n .pr-4,\r\n .px-4 {\r\n padding-right: 1.5rem !important;\r\n }\r\n\r\n .pb-4,\r\n .py-4 {\r\n padding-bottom: 1.5rem !important;\r\n }\r\n\r\n .pl-4,\r\n .px-4 {\r\n padding-left: 1.5rem !important;\r\n }\r\n\r\n .p-5 {\r\n padding: 3rem !important;\r\n }\r\n\r\n .pt-5,\r\n .py-5 {\r\n padding-top: 3rem !important;\r\n }\r\n\r\n .pr-5,\r\n .px-5 {\r\n padding-right: 3rem !important;\r\n }\r\n\r\n .pb-5,\r\n .py-5 {\r\n padding-bottom: 3rem !important;\r\n }\r\n\r\n .pl-5,\r\n .px-5 {\r\n padding-left: 3rem !important;\r\n }\r\n\r\n .m-n1 {\r\n margin: -0.25rem !important;\r\n }\r\n\r\n .mt-n1,\r\n .my-n1 {\r\n margin-top: -0.25rem !important;\r\n }\r\n\r\n .mr-n1,\r\n .mx-n1 {\r\n margin-right: -0.25rem !important;\r\n }\r\n\r\n .mb-n1,\r\n .my-n1 {\r\n margin-bottom: -0.25rem !important;\r\n }\r\n\r\n .ml-n1,\r\n .mx-n1 {\r\n margin-left: -0.25rem !important;\r\n }\r\n\r\n .m-n2 {\r\n margin: -0.5rem !important;\r\n }\r\n\r\n .mt-n2,\r\n .my-n2 {\r\n margin-top: -0.5rem !important;\r\n }\r\n\r\n .mr-n2,\r\n .mx-n2 {\r\n margin-right: -0.5rem !important;\r\n }\r\n\r\n .mb-n2,\r\n .my-n2 {\r\n margin-bottom: -0.5rem !important;\r\n }\r\n\r\n .ml-n2,\r\n .mx-n2 {\r\n margin-left: -0.5rem !important;\r\n }\r\n\r\n .m-n3 {\r\n margin: -1rem !important;\r\n }\r\n\r\n .mt-n3,\r\n .my-n3 {\r\n margin-top: -1rem !important;\r\n }\r\n\r\n .mr-n3,\r\n .mx-n3 {\r\n margin-right: -1rem !important;\r\n }\r\n\r\n .mb-n3,\r\n .my-n3 {\r\n margin-bottom: -1rem !important;\r\n }\r\n\r\n .ml-n3,\r\n .mx-n3 {\r\n margin-left: -1rem !important;\r\n }\r\n\r\n .m-n4 {\r\n margin: -1.5rem !important;\r\n }\r\n\r\n .mt-n4,\r\n .my-n4 {\r\n margin-top: -1.5rem !important;\r\n }\r\n\r\n .mr-n4,\r\n .mx-n4 {\r\n margin-right: -1.5rem !important;\r\n }\r\n\r\n .mb-n4,\r\n .my-n4 {\r\n margin-bottom: -1.5rem !important;\r\n }\r\n\r\n .ml-n4,\r\n .mx-n4 {\r\n margin-left: -1.5rem !important;\r\n }\r\n\r\n .m-n5 {\r\n margin: -3rem !important;\r\n }\r\n\r\n .mt-n5,\r\n .my-n5 {\r\n margin-top: -3rem !important;\r\n }\r\n\r\n .mr-n5,\r\n .mx-n5 {\r\n margin-right: -3rem !important;\r\n }\r\n\r\n .mb-n5,\r\n .my-n5 {\r\n margin-bottom: -3rem !important;\r\n }\r\n\r\n .ml-n5,\r\n .mx-n5 {\r\n margin-left: -3rem !important;\r\n }\r\n\r\n .m-auto {\r\n margin: auto !important;\r\n }\r\n\r\n .mt-auto,\r\n .my-auto {\r\n margin-top: auto !important;\r\n }\r\n\r\n .mr-auto,\r\n .mx-auto {\r\n margin-right: auto !important;\r\n }\r\n\r\n .mb-auto,\r\n .my-auto {\r\n margin-bottom: auto !important;\r\n }\r\n\r\n .ml-auto,\r\n .mx-auto {\r\n margin-left: auto !important;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .m-sm-0 {\r\n margin: 0 !important;\r\n }\r\n .mt-sm-0,\r\n .my-sm-0 {\r\n margin-top: 0 !important;\r\n }\r\n .mr-sm-0,\r\n .mx-sm-0 {\r\n margin-right: 0 !important;\r\n }\r\n .mb-sm-0,\r\n .my-sm-0 {\r\n margin-bottom: 0 !important;\r\n }\r\n .ml-sm-0,\r\n .mx-sm-0 {\r\n margin-left: 0 !important;\r\n }\r\n .m-sm-1 {\r\n margin: 0.25rem !important;\r\n }\r\n .mt-sm-1,\r\n .my-sm-1 {\r\n margin-top: 0.25rem !important;\r\n }\r\n .mr-sm-1,\r\n .mx-sm-1 {\r\n margin-right: 0.25rem !important;\r\n }\r\n .mb-sm-1,\r\n .my-sm-1 {\r\n margin-bottom: 0.25rem !important;\r\n }\r\n .ml-sm-1,\r\n .mx-sm-1 {\r\n margin-left: 0.25rem !important;\r\n }\r\n .m-sm-2 {\r\n margin: 0.5rem !important;\r\n }\r\n .mt-sm-2,\r\n .my-sm-2 {\r\n margin-top: 0.5rem !important;\r\n }\r\n .mr-sm-2,\r\n .mx-sm-2 {\r\n margin-right: 0.5rem !important;\r\n }\r\n .mb-sm-2,\r\n .my-sm-2 {\r\n margin-bottom: 0.5rem !important;\r\n }\r\n .ml-sm-2,\r\n .mx-sm-2 {\r\n margin-left: 0.5rem !important;\r\n }\r\n .m-sm-3 {\r\n margin: 1rem !important;\r\n }\r\n .mt-sm-3,\r\n .my-sm-3 {\r\n margin-top: 1rem !important;\r\n }\r\n .mr-sm-3,\r\n .mx-sm-3 {\r\n margin-right: 1rem !important;\r\n }\r\n .mb-sm-3,\r\n .my-sm-3 {\r\n margin-bottom: 1rem !important;\r\n }\r\n .ml-sm-3,\r\n .mx-sm-3 {\r\n margin-left: 1rem !important;\r\n }\r\n .m-sm-4 {\r\n margin: 1.5rem !important;\r\n }\r\n .mt-sm-4,\r\n .my-sm-4 {\r\n margin-top: 1.5rem !important;\r\n }\r\n .mr-sm-4,\r\n .mx-sm-4 {\r\n margin-right: 1.5rem !important;\r\n }\r\n .mb-sm-4,\r\n .my-sm-4 {\r\n margin-bottom: 1.5rem !important;\r\n }\r\n .ml-sm-4,\r\n .mx-sm-4 {\r\n margin-left: 1.5rem !important;\r\n }\r\n .m-sm-5 {\r\n margin: 3rem !important;\r\n }\r\n .mt-sm-5,\r\n .my-sm-5 {\r\n margin-top: 3rem !important;\r\n }\r\n .mr-sm-5,\r\n .mx-sm-5 {\r\n margin-right: 3rem !important;\r\n }\r\n .mb-sm-5,\r\n .my-sm-5 {\r\n margin-bottom: 3rem !important;\r\n }\r\n .ml-sm-5,\r\n .mx-sm-5 {\r\n margin-left: 3rem !important;\r\n }\r\n .p-sm-0 {\r\n padding: 0 !important;\r\n }\r\n .pt-sm-0,\r\n .py-sm-0 {\r\n padding-top: 0 !important;\r\n }\r\n .pr-sm-0,\r\n .px-sm-0 {\r\n padding-right: 0 !important;\r\n }\r\n .pb-sm-0,\r\n .py-sm-0 {\r\n padding-bottom: 0 !important;\r\n }\r\n .pl-sm-0,\r\n .px-sm-0 {\r\n padding-left: 0 !important;\r\n }\r\n .p-sm-1 {\r\n padding: 0.25rem !important;\r\n }\r\n .pt-sm-1,\r\n .py-sm-1 {\r\n padding-top: 0.25rem !important;\r\n }\r\n .pr-sm-1,\r\n .px-sm-1 {\r\n padding-right: 0.25rem !important;\r\n }\r\n .pb-sm-1,\r\n .py-sm-1 {\r\n padding-bottom: 0.25rem !important;\r\n }\r\n .pl-sm-1,\r\n .px-sm-1 {\r\n padding-left: 0.25rem !important;\r\n }\r\n .p-sm-2 {\r\n padding: 0.5rem !important;\r\n }\r\n .pt-sm-2,\r\n .py-sm-2 {\r\n padding-top: 0.5rem !important;\r\n }\r\n .pr-sm-2,\r\n .px-sm-2 {\r\n padding-right: 0.5rem !important;\r\n }\r\n .pb-sm-2,\r\n .py-sm-2 {\r\n padding-bottom: 0.5rem !important;\r\n }\r\n .pl-sm-2,\r\n .px-sm-2 {\r\n padding-left: 0.5rem !important;\r\n }\r\n .p-sm-3 {\r\n padding: 1rem !important;\r\n }\r\n .pt-sm-3,\r\n .py-sm-3 {\r\n padding-top: 1rem !important;\r\n }\r\n .pr-sm-3,\r\n .px-sm-3 {\r\n padding-right: 1rem !important;\r\n }\r\n .pb-sm-3,\r\n .py-sm-3 {\r\n padding-bottom: 1rem !important;\r\n }\r\n .pl-sm-3,\r\n .px-sm-3 {\r\n padding-left: 1rem !important;\r\n }\r\n .p-sm-4 {\r\n padding: 1.5rem !important;\r\n }\r\n .pt-sm-4,\r\n .py-sm-4 {\r\n padding-top: 1.5rem !important;\r\n }\r\n .pr-sm-4,\r\n .px-sm-4 {\r\n padding-right: 1.5rem !important;\r\n }\r\n .pb-sm-4,\r\n .py-sm-4 {\r\n padding-bottom: 1.5rem !important;\r\n }\r\n .pl-sm-4,\r\n .px-sm-4 {\r\n padding-left: 1.5rem !important;\r\n }\r\n .p-sm-5 {\r\n padding: 3rem !important;\r\n }\r\n .pt-sm-5,\r\n .py-sm-5 {\r\n padding-top: 3rem !important;\r\n }\r\n .pr-sm-5,\r\n .px-sm-5 {\r\n padding-right: 3rem !important;\r\n }\r\n .pb-sm-5,\r\n .py-sm-5 {\r\n padding-bottom: 3rem !important;\r\n }\r\n .pl-sm-5,\r\n .px-sm-5 {\r\n padding-left: 3rem !important;\r\n }\r\n .m-sm-n1 {\r\n margin: -0.25rem !important;\r\n }\r\n .mt-sm-n1,\r\n .my-sm-n1 {\r\n margin-top: -0.25rem !important;\r\n }\r\n .mr-sm-n1,\r\n .mx-sm-n1 {\r\n margin-right: -0.25rem !important;\r\n }\r\n .mb-sm-n1,\r\n .my-sm-n1 {\r\n margin-bottom: -0.25rem !important;\r\n }\r\n .ml-sm-n1,\r\n .mx-sm-n1 {\r\n margin-left: -0.25rem !important;\r\n }\r\n .m-sm-n2 {\r\n margin: -0.5rem !important;\r\n }\r\n .mt-sm-n2,\r\n .my-sm-n2 {\r\n margin-top: -0.5rem !important;\r\n }\r\n .mr-sm-n2,\r\n .mx-sm-n2 {\r\n margin-right: -0.5rem !important;\r\n }\r\n .mb-sm-n2,\r\n .my-sm-n2 {\r\n margin-bottom: -0.5rem !important;\r\n }\r\n .ml-sm-n2,\r\n .mx-sm-n2 {\r\n margin-left: -0.5rem !important;\r\n }\r\n .m-sm-n3 {\r\n margin: -1rem !important;\r\n }\r\n .mt-sm-n3,\r\n .my-sm-n3 {\r\n margin-top: -1rem !important;\r\n }\r\n .mr-sm-n3,\r\n .mx-sm-n3 {\r\n margin-right: -1rem !important;\r\n }\r\n .mb-sm-n3,\r\n .my-sm-n3 {\r\n margin-bottom: -1rem !important;\r\n }\r\n .ml-sm-n3,\r\n .mx-sm-n3 {\r\n margin-left: -1rem !important;\r\n }\r\n .m-sm-n4 {\r\n margin: -1.5rem !important;\r\n }\r\n .mt-sm-n4,\r\n .my-sm-n4 {\r\n margin-top: -1.5rem !important;\r\n }\r\n .mr-sm-n4,\r\n .mx-sm-n4 {\r\n margin-right: -1.5rem !important;\r\n }\r\n .mb-sm-n4,\r\n .my-sm-n4 {\r\n margin-bottom: -1.5rem !important;\r\n }\r\n .ml-sm-n4,\r\n .mx-sm-n4 {\r\n margin-left: -1.5rem !important;\r\n }\r\n .m-sm-n5 {\r\n margin: -3rem !important;\r\n }\r\n .mt-sm-n5,\r\n .my-sm-n5 {\r\n margin-top: -3rem !important;\r\n }\r\n .mr-sm-n5,\r\n .mx-sm-n5 {\r\n margin-right: -3rem !important;\r\n }\r\n .mb-sm-n5,\r\n .my-sm-n5 {\r\n margin-bottom: -3rem !important;\r\n }\r\n .ml-sm-n5,\r\n .mx-sm-n5 {\r\n margin-left: -3rem !important;\r\n }\r\n .m-sm-auto {\r\n margin: auto !important;\r\n }\r\n .mt-sm-auto,\r\n .my-sm-auto {\r\n margin-top: auto !important;\r\n }\r\n .mr-sm-auto,\r\n .mx-sm-auto {\r\n margin-right: auto !important;\r\n }\r\n .mb-sm-auto,\r\n .my-sm-auto {\r\n margin-bottom: auto !important;\r\n }\r\n .ml-sm-auto,\r\n .mx-sm-auto {\r\n margin-left: auto !important;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .m-md-0 {\r\n margin: 0 !important;\r\n }\r\n .mt-md-0,\r\n .my-md-0 {\r\n margin-top: 0 !important;\r\n }\r\n .mr-md-0,\r\n .mx-md-0 {\r\n margin-right: 0 !important;\r\n }\r\n .mb-md-0,\r\n .my-md-0 {\r\n margin-bottom: 0 !important;\r\n }\r\n .ml-md-0,\r\n .mx-md-0 {\r\n margin-left: 0 !important;\r\n }\r\n .m-md-1 {\r\n margin: 0.25rem !important;\r\n }\r\n .mt-md-1,\r\n .my-md-1 {\r\n margin-top: 0.25rem !important;\r\n }\r\n .mr-md-1,\r\n .mx-md-1 {\r\n margin-right: 0.25rem !important;\r\n }\r\n .mb-md-1,\r\n .my-md-1 {\r\n margin-bottom: 0.25rem !important;\r\n }\r\n .ml-md-1,\r\n .mx-md-1 {\r\n margin-left: 0.25rem !important;\r\n }\r\n .m-md-2 {\r\n margin: 0.5rem !important;\r\n }\r\n .mt-md-2,\r\n .my-md-2 {\r\n margin-top: 0.5rem !important;\r\n }\r\n .mr-md-2,\r\n .mx-md-2 {\r\n margin-right: 0.5rem !important;\r\n }\r\n .mb-md-2,\r\n .my-md-2 {\r\n margin-bottom: 0.5rem !important;\r\n }\r\n .ml-md-2,\r\n .mx-md-2 {\r\n margin-left: 0.5rem !important;\r\n }\r\n .m-md-3 {\r\n margin: 1rem !important;\r\n }\r\n .mt-md-3,\r\n .my-md-3 {\r\n margin-top: 1rem !important;\r\n }\r\n .mr-md-3,\r\n .mx-md-3 {\r\n margin-right: 1rem !important;\r\n }\r\n .mb-md-3,\r\n .my-md-3 {\r\n margin-bottom: 1rem !important;\r\n }\r\n .ml-md-3,\r\n .mx-md-3 {\r\n margin-left: 1rem !important;\r\n }\r\n .m-md-4 {\r\n margin: 1.5rem !important;\r\n }\r\n .mt-md-4,\r\n .my-md-4 {\r\n margin-top: 1.5rem !important;\r\n }\r\n .mr-md-4,\r\n .mx-md-4 {\r\n margin-right: 1.5rem !important;\r\n }\r\n .mb-md-4,\r\n .my-md-4 {\r\n margin-bottom: 1.5rem !important;\r\n }\r\n .ml-md-4,\r\n .mx-md-4 {\r\n margin-left: 1.5rem !important;\r\n }\r\n .m-md-5 {\r\n margin: 3rem !important;\r\n }\r\n .mt-md-5,\r\n .my-md-5 {\r\n margin-top: 3rem !important;\r\n }\r\n .mr-md-5,\r\n .mx-md-5 {\r\n margin-right: 3rem !important;\r\n }\r\n .mb-md-5,\r\n .my-md-5 {\r\n margin-bottom: 3rem !important;\r\n }\r\n .ml-md-5,\r\n .mx-md-5 {\r\n margin-left: 3rem !important;\r\n }\r\n .p-md-0 {\r\n padding: 0 !important;\r\n }\r\n .pt-md-0,\r\n .py-md-0 {\r\n padding-top: 0 !important;\r\n }\r\n .pr-md-0,\r\n .px-md-0 {\r\n padding-right: 0 !important;\r\n }\r\n .pb-md-0,\r\n .py-md-0 {\r\n padding-bottom: 0 !important;\r\n }\r\n .pl-md-0,\r\n .px-md-0 {\r\n padding-left: 0 !important;\r\n }\r\n .p-md-1 {\r\n padding: 0.25rem !important;\r\n }\r\n .pt-md-1,\r\n .py-md-1 {\r\n padding-top: 0.25rem !important;\r\n }\r\n .pr-md-1,\r\n .px-md-1 {\r\n padding-right: 0.25rem !important;\r\n }\r\n .pb-md-1,\r\n .py-md-1 {\r\n padding-bottom: 0.25rem !important;\r\n }\r\n .pl-md-1,\r\n .px-md-1 {\r\n padding-left: 0.25rem !important;\r\n }\r\n .p-md-2 {\r\n padding: 0.5rem !important;\r\n }\r\n .pt-md-2,\r\n .py-md-2 {\r\n padding-top: 0.5rem !important;\r\n }\r\n .pr-md-2,\r\n .px-md-2 {\r\n padding-right: 0.5rem !important;\r\n }\r\n .pb-md-2,\r\n .py-md-2 {\r\n padding-bottom: 0.5rem !important;\r\n }\r\n .pl-md-2,\r\n .px-md-2 {\r\n padding-left: 0.5rem !important;\r\n }\r\n .p-md-3 {\r\n padding: 1rem !important;\r\n }\r\n .pt-md-3,\r\n .py-md-3 {\r\n padding-top: 1rem !important;\r\n }\r\n .pr-md-3,\r\n .px-md-3 {\r\n padding-right: 1rem !important;\r\n }\r\n .pb-md-3,\r\n .py-md-3 {\r\n padding-bottom: 1rem !important;\r\n }\r\n .pl-md-3,\r\n .px-md-3 {\r\n padding-left: 1rem !important;\r\n }\r\n .p-md-4 {\r\n padding: 1.5rem !important;\r\n }\r\n .pt-md-4,\r\n .py-md-4 {\r\n padding-top: 1.5rem !important;\r\n }\r\n .pr-md-4,\r\n .px-md-4 {\r\n padding-right: 1.5rem !important;\r\n }\r\n .pb-md-4,\r\n .py-md-4 {\r\n padding-bottom: 1.5rem !important;\r\n }\r\n .pl-md-4,\r\n .px-md-4 {\r\n padding-left: 1.5rem !important;\r\n }\r\n .p-md-5 {\r\n padding: 3rem !important;\r\n }\r\n .pt-md-5,\r\n .py-md-5 {\r\n padding-top: 3rem !important;\r\n }\r\n .pr-md-5,\r\n .px-md-5 {\r\n padding-right: 3rem !important;\r\n }\r\n .pb-md-5,\r\n .py-md-5 {\r\n padding-bottom: 3rem !important;\r\n }\r\n .pl-md-5,\r\n .px-md-5 {\r\n padding-left: 3rem !important;\r\n }\r\n .m-md-n1 {\r\n margin: -0.25rem !important;\r\n }\r\n .mt-md-n1,\r\n .my-md-n1 {\r\n margin-top: -0.25rem !important;\r\n }\r\n .mr-md-n1,\r\n .mx-md-n1 {\r\n margin-right: -0.25rem !important;\r\n }\r\n .mb-md-n1,\r\n .my-md-n1 {\r\n margin-bottom: -0.25rem !important;\r\n }\r\n .ml-md-n1,\r\n .mx-md-n1 {\r\n margin-left: -0.25rem !important;\r\n }\r\n .m-md-n2 {\r\n margin: -0.5rem !important;\r\n }\r\n .mt-md-n2,\r\n .my-md-n2 {\r\n margin-top: -0.5rem !important;\r\n }\r\n .mr-md-n2,\r\n .mx-md-n2 {\r\n margin-right: -0.5rem !important;\r\n }\r\n .mb-md-n2,\r\n .my-md-n2 {\r\n margin-bottom: -0.5rem !important;\r\n }\r\n .ml-md-n2,\r\n .mx-md-n2 {\r\n margin-left: -0.5rem !important;\r\n }\r\n .m-md-n3 {\r\n margin: -1rem !important;\r\n }\r\n .mt-md-n3,\r\n .my-md-n3 {\r\n margin-top: -1rem !important;\r\n }\r\n .mr-md-n3,\r\n .mx-md-n3 {\r\n margin-right: -1rem !important;\r\n }\r\n .mb-md-n3,\r\n .my-md-n3 {\r\n margin-bottom: -1rem !important;\r\n }\r\n .ml-md-n3,\r\n .mx-md-n3 {\r\n margin-left: -1rem !important;\r\n }\r\n .m-md-n4 {\r\n margin: -1.5rem !important;\r\n }\r\n .mt-md-n4,\r\n .my-md-n4 {\r\n margin-top: -1.5rem !important;\r\n }\r\n .mr-md-n4,\r\n .mx-md-n4 {\r\n margin-right: -1.5rem !important;\r\n }\r\n .mb-md-n4,\r\n .my-md-n4 {\r\n margin-bottom: -1.5rem !important;\r\n }\r\n .ml-md-n4,\r\n .mx-md-n4 {\r\n margin-left: -1.5rem !important;\r\n }\r\n .m-md-n5 {\r\n margin: -3rem !important;\r\n }\r\n .mt-md-n5,\r\n .my-md-n5 {\r\n margin-top: -3rem !important;\r\n }\r\n .mr-md-n5,\r\n .mx-md-n5 {\r\n margin-right: -3rem !important;\r\n }\r\n .mb-md-n5,\r\n .my-md-n5 {\r\n margin-bottom: -3rem !important;\r\n }\r\n .ml-md-n5,\r\n .mx-md-n5 {\r\n margin-left: -3rem !important;\r\n }\r\n .m-md-auto {\r\n margin: auto !important;\r\n }\r\n .mt-md-auto,\r\n .my-md-auto {\r\n margin-top: auto !important;\r\n }\r\n .mr-md-auto,\r\n .mx-md-auto {\r\n margin-right: auto !important;\r\n }\r\n .mb-md-auto,\r\n .my-md-auto {\r\n margin-bottom: auto !important;\r\n }\r\n .ml-md-auto,\r\n .mx-md-auto {\r\n margin-left: auto !important;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .m-lg-0 {\r\n margin: 0 !important;\r\n }\r\n .mt-lg-0,\r\n .my-lg-0 {\r\n margin-top: 0 !important;\r\n }\r\n .mr-lg-0,\r\n .mx-lg-0 {\r\n margin-right: 0 !important;\r\n }\r\n .mb-lg-0,\r\n .my-lg-0 {\r\n margin-bottom: 0 !important;\r\n }\r\n .ml-lg-0,\r\n .mx-lg-0 {\r\n margin-left: 0 !important;\r\n }\r\n .m-lg-1 {\r\n margin: 0.25rem !important;\r\n }\r\n .mt-lg-1,\r\n .my-lg-1 {\r\n margin-top: 0.25rem !important;\r\n }\r\n .mr-lg-1,\r\n .mx-lg-1 {\r\n margin-right: 0.25rem !important;\r\n }\r\n .mb-lg-1,\r\n .my-lg-1 {\r\n margin-bottom: 0.25rem !important;\r\n }\r\n .ml-lg-1,\r\n .mx-lg-1 {\r\n margin-left: 0.25rem !important;\r\n }\r\n .m-lg-2 {\r\n margin: 0.5rem !important;\r\n }\r\n .mt-lg-2,\r\n .my-lg-2 {\r\n margin-top: 0.5rem !important;\r\n }\r\n .mr-lg-2,\r\n .mx-lg-2 {\r\n margin-right: 0.5rem !important;\r\n }\r\n .mb-lg-2,\r\n .my-lg-2 {\r\n margin-bottom: 0.5rem !important;\r\n }\r\n .ml-lg-2,\r\n .mx-lg-2 {\r\n margin-left: 0.5rem !important;\r\n }\r\n .m-lg-3 {\r\n margin: 1rem !important;\r\n }\r\n .mt-lg-3,\r\n .my-lg-3 {\r\n margin-top: 1rem !important;\r\n }\r\n .mr-lg-3,\r\n .mx-lg-3 {\r\n margin-right: 1rem !important;\r\n }\r\n .mb-lg-3,\r\n .my-lg-3 {\r\n margin-bottom: 1rem !important;\r\n }\r\n .ml-lg-3,\r\n .mx-lg-3 {\r\n margin-left: 1rem !important;\r\n }\r\n .m-lg-4 {\r\n margin: 1.5rem !important;\r\n }\r\n .mt-lg-4,\r\n .my-lg-4 {\r\n margin-top: 1.5rem !important;\r\n }\r\n .mr-lg-4,\r\n .mx-lg-4 {\r\n margin-right: 1.5rem !important;\r\n }\r\n .mb-lg-4,\r\n .my-lg-4 {\r\n margin-bottom: 1.5rem !important;\r\n }\r\n .ml-lg-4,\r\n .mx-lg-4 {\r\n margin-left: 1.5rem !important;\r\n }\r\n .m-lg-5 {\r\n margin: 3rem !important;\r\n }\r\n .mt-lg-5,\r\n .my-lg-5 {\r\n margin-top: 3rem !important;\r\n }\r\n .mr-lg-5,\r\n .mx-lg-5 {\r\n margin-right: 3rem !important;\r\n }\r\n .mb-lg-5,\r\n .my-lg-5 {\r\n margin-bottom: 3rem !important;\r\n }\r\n .ml-lg-5,\r\n .mx-lg-5 {\r\n margin-left: 3rem !important;\r\n }\r\n .p-lg-0 {\r\n padding: 0 !important;\r\n }\r\n .pt-lg-0,\r\n .py-lg-0 {\r\n padding-top: 0 !important;\r\n }\r\n .pr-lg-0,\r\n .px-lg-0 {\r\n padding-right: 0 !important;\r\n }\r\n .pb-lg-0,\r\n .py-lg-0 {\r\n padding-bottom: 0 !important;\r\n }\r\n .pl-lg-0,\r\n .px-lg-0 {\r\n padding-left: 0 !important;\r\n }\r\n .p-lg-1 {\r\n padding: 0.25rem !important;\r\n }\r\n .pt-lg-1,\r\n .py-lg-1 {\r\n padding-top: 0.25rem !important;\r\n }\r\n .pr-lg-1,\r\n .px-lg-1 {\r\n padding-right: 0.25rem !important;\r\n }\r\n .pb-lg-1,\r\n .py-lg-1 {\r\n padding-bottom: 0.25rem !important;\r\n }\r\n .pl-lg-1,\r\n .px-lg-1 {\r\n padding-left: 0.25rem !important;\r\n }\r\n .p-lg-2 {\r\n padding: 0.5rem !important;\r\n }\r\n .pt-lg-2,\r\n .py-lg-2 {\r\n padding-top: 0.5rem !important;\r\n }\r\n .pr-lg-2,\r\n .px-lg-2 {\r\n padding-right: 0.5rem !important;\r\n }\r\n .pb-lg-2,\r\n .py-lg-2 {\r\n padding-bottom: 0.5rem !important;\r\n }\r\n .pl-lg-2,\r\n .px-lg-2 {\r\n padding-left: 0.5rem !important;\r\n }\r\n .p-lg-3 {\r\n padding: 1rem !important;\r\n }\r\n .pt-lg-3,\r\n .py-lg-3 {\r\n padding-top: 1rem !important;\r\n }\r\n .pr-lg-3,\r\n .px-lg-3 {\r\n padding-right: 1rem !important;\r\n }\r\n .pb-lg-3,\r\n .py-lg-3 {\r\n padding-bottom: 1rem !important;\r\n }\r\n .pl-lg-3,\r\n .px-lg-3 {\r\n padding-left: 1rem !important;\r\n }\r\n .p-lg-4 {\r\n padding: 1.5rem !important;\r\n }\r\n .pt-lg-4,\r\n .py-lg-4 {\r\n padding-top: 1.5rem !important;\r\n }\r\n .pr-lg-4,\r\n .px-lg-4 {\r\n padding-right: 1.5rem !important;\r\n }\r\n .pb-lg-4,\r\n .py-lg-4 {\r\n padding-bottom: 1.5rem !important;\r\n }\r\n .pl-lg-4,\r\n .px-lg-4 {\r\n padding-left: 1.5rem !important;\r\n }\r\n .p-lg-5 {\r\n padding: 3rem !important;\r\n }\r\n .pt-lg-5,\r\n .py-lg-5 {\r\n padding-top: 3rem !important;\r\n }\r\n .pr-lg-5,\r\n .px-lg-5 {\r\n padding-right: 3rem !important;\r\n }\r\n .pb-lg-5,\r\n .py-lg-5 {\r\n padding-bottom: 3rem !important;\r\n }\r\n .pl-lg-5,\r\n .px-lg-5 {\r\n padding-left: 3rem !important;\r\n }\r\n .m-lg-n1 {\r\n margin: -0.25rem !important;\r\n }\r\n .mt-lg-n1,\r\n .my-lg-n1 {\r\n margin-top: -0.25rem !important;\r\n }\r\n .mr-lg-n1,\r\n .mx-lg-n1 {\r\n margin-right: -0.25rem !important;\r\n }\r\n .mb-lg-n1,\r\n .my-lg-n1 {\r\n margin-bottom: -0.25rem !important;\r\n }\r\n .ml-lg-n1,\r\n .mx-lg-n1 {\r\n margin-left: -0.25rem !important;\r\n }\r\n .m-lg-n2 {\r\n margin: -0.5rem !important;\r\n }\r\n .mt-lg-n2,\r\n .my-lg-n2 {\r\n margin-top: -0.5rem !important;\r\n }\r\n .mr-lg-n2,\r\n .mx-lg-n2 {\r\n margin-right: -0.5rem !important;\r\n }\r\n .mb-lg-n2,\r\n .my-lg-n2 {\r\n margin-bottom: -0.5rem !important;\r\n }\r\n .ml-lg-n2,\r\n .mx-lg-n2 {\r\n margin-left: -0.5rem !important;\r\n }\r\n .m-lg-n3 {\r\n margin: -1rem !important;\r\n }\r\n .mt-lg-n3,\r\n .my-lg-n3 {\r\n margin-top: -1rem !important;\r\n }\r\n .mr-lg-n3,\r\n .mx-lg-n3 {\r\n margin-right: -1rem !important;\r\n }\r\n .mb-lg-n3,\r\n .my-lg-n3 {\r\n margin-bottom: -1rem !important;\r\n }\r\n .ml-lg-n3,\r\n .mx-lg-n3 {\r\n margin-left: -1rem !important;\r\n }\r\n .m-lg-n4 {\r\n margin: -1.5rem !important;\r\n }\r\n .mt-lg-n4,\r\n .my-lg-n4 {\r\n margin-top: -1.5rem !important;\r\n }\r\n .mr-lg-n4,\r\n .mx-lg-n4 {\r\n margin-right: -1.5rem !important;\r\n }\r\n .mb-lg-n4,\r\n .my-lg-n4 {\r\n margin-bottom: -1.5rem !important;\r\n }\r\n .ml-lg-n4,\r\n .mx-lg-n4 {\r\n margin-left: -1.5rem !important;\r\n }\r\n .m-lg-n5 {\r\n margin: -3rem !important;\r\n }\r\n .mt-lg-n5,\r\n .my-lg-n5 {\r\n margin-top: -3rem !important;\r\n }\r\n .mr-lg-n5,\r\n .mx-lg-n5 {\r\n margin-right: -3rem !important;\r\n }\r\n .mb-lg-n5,\r\n .my-lg-n5 {\r\n margin-bottom: -3rem !important;\r\n }\r\n .ml-lg-n5,\r\n .mx-lg-n5 {\r\n margin-left: -3rem !important;\r\n }\r\n .m-lg-auto {\r\n margin: auto !important;\r\n }\r\n .mt-lg-auto,\r\n .my-lg-auto {\r\n margin-top: auto !important;\r\n }\r\n .mr-lg-auto,\r\n .mx-lg-auto {\r\n margin-right: auto !important;\r\n }\r\n .mb-lg-auto,\r\n .my-lg-auto {\r\n margin-bottom: auto !important;\r\n }\r\n .ml-lg-auto,\r\n .mx-lg-auto {\r\n margin-left: auto !important;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .m-xl-0 {\r\n margin: 0 !important;\r\n }\r\n .mt-xl-0,\r\n .my-xl-0 {\r\n margin-top: 0 !important;\r\n }\r\n .mr-xl-0,\r\n .mx-xl-0 {\r\n margin-right: 0 !important;\r\n }\r\n .mb-xl-0,\r\n .my-xl-0 {\r\n margin-bottom: 0 !important;\r\n }\r\n .ml-xl-0,\r\n .mx-xl-0 {\r\n margin-left: 0 !important;\r\n }\r\n .m-xl-1 {\r\n margin: 0.25rem !important;\r\n }\r\n .mt-xl-1,\r\n .my-xl-1 {\r\n margin-top: 0.25rem !important;\r\n }\r\n .mr-xl-1,\r\n .mx-xl-1 {\r\n margin-right: 0.25rem !important;\r\n }\r\n .mb-xl-1,\r\n .my-xl-1 {\r\n margin-bottom: 0.25rem !important;\r\n }\r\n .ml-xl-1,\r\n .mx-xl-1 {\r\n margin-left: 0.25rem !important;\r\n }\r\n .m-xl-2 {\r\n margin: 0.5rem !important;\r\n }\r\n .mt-xl-2,\r\n .my-xl-2 {\r\n margin-top: 0.5rem !important;\r\n }\r\n .mr-xl-2,\r\n .mx-xl-2 {\r\n margin-right: 0.5rem !important;\r\n }\r\n .mb-xl-2,\r\n .my-xl-2 {\r\n margin-bottom: 0.5rem !important;\r\n }\r\n .ml-xl-2,\r\n .mx-xl-2 {\r\n margin-left: 0.5rem !important;\r\n }\r\n .m-xl-3 {\r\n margin: 1rem !important;\r\n }\r\n .mt-xl-3,\r\n .my-xl-3 {\r\n margin-top: 1rem !important;\r\n }\r\n .mr-xl-3,\r\n .mx-xl-3 {\r\n margin-right: 1rem !important;\r\n }\r\n .mb-xl-3,\r\n .my-xl-3 {\r\n margin-bottom: 1rem !important;\r\n }\r\n .ml-xl-3,\r\n .mx-xl-3 {\r\n margin-left: 1rem !important;\r\n }\r\n .m-xl-4 {\r\n margin: 1.5rem !important;\r\n }\r\n .mt-xl-4,\r\n .my-xl-4 {\r\n margin-top: 1.5rem !important;\r\n }\r\n .mr-xl-4,\r\n .mx-xl-4 {\r\n margin-right: 1.5rem !important;\r\n }\r\n .mb-xl-4,\r\n .my-xl-4 {\r\n margin-bottom: 1.5rem !important;\r\n }\r\n .ml-xl-4,\r\n .mx-xl-4 {\r\n margin-left: 1.5rem !important;\r\n }\r\n .m-xl-5 {\r\n margin: 3rem !important;\r\n }\r\n .mt-xl-5,\r\n .my-xl-5 {\r\n margin-top: 3rem !important;\r\n }\r\n .mr-xl-5,\r\n .mx-xl-5 {\r\n margin-right: 3rem !important;\r\n }\r\n .mb-xl-5,\r\n .my-xl-5 {\r\n margin-bottom: 3rem !important;\r\n }\r\n .ml-xl-5,\r\n .mx-xl-5 {\r\n margin-left: 3rem !important;\r\n }\r\n .p-xl-0 {\r\n padding: 0 !important;\r\n }\r\n .pt-xl-0,\r\n .py-xl-0 {\r\n padding-top: 0 !important;\r\n }\r\n .pr-xl-0,\r\n .px-xl-0 {\r\n padding-right: 0 !important;\r\n }\r\n .pb-xl-0,\r\n .py-xl-0 {\r\n padding-bottom: 0 !important;\r\n }\r\n .pl-xl-0,\r\n .px-xl-0 {\r\n padding-left: 0 !important;\r\n }\r\n .p-xl-1 {\r\n padding: 0.25rem !important;\r\n }\r\n .pt-xl-1,\r\n .py-xl-1 {\r\n padding-top: 0.25rem !important;\r\n }\r\n .pr-xl-1,\r\n .px-xl-1 {\r\n padding-right: 0.25rem !important;\r\n }\r\n .pb-xl-1,\r\n .py-xl-1 {\r\n padding-bottom: 0.25rem !important;\r\n }\r\n .pl-xl-1,\r\n .px-xl-1 {\r\n padding-left: 0.25rem !important;\r\n }\r\n .p-xl-2 {\r\n padding: 0.5rem !important;\r\n }\r\n .pt-xl-2,\r\n .py-xl-2 {\r\n padding-top: 0.5rem !important;\r\n }\r\n .pr-xl-2,\r\n .px-xl-2 {\r\n padding-right: 0.5rem !important;\r\n }\r\n .pb-xl-2,\r\n .py-xl-2 {\r\n padding-bottom: 0.5rem !important;\r\n }\r\n .pl-xl-2,\r\n .px-xl-2 {\r\n padding-left: 0.5rem !important;\r\n }\r\n .p-xl-3 {\r\n padding: 1rem !important;\r\n }\r\n .pt-xl-3,\r\n .py-xl-3 {\r\n padding-top: 1rem !important;\r\n }\r\n .pr-xl-3,\r\n .px-xl-3 {\r\n padding-right: 1rem !important;\r\n }\r\n .pb-xl-3,\r\n .py-xl-3 {\r\n padding-bottom: 1rem !important;\r\n }\r\n .pl-xl-3,\r\n .px-xl-3 {\r\n padding-left: 1rem !important;\r\n }\r\n .p-xl-4 {\r\n padding: 1.5rem !important;\r\n }\r\n .pt-xl-4,\r\n .py-xl-4 {\r\n padding-top: 1.5rem !important;\r\n }\r\n .pr-xl-4,\r\n .px-xl-4 {\r\n padding-right: 1.5rem !important;\r\n }\r\n .pb-xl-4,\r\n .py-xl-4 {\r\n padding-bottom: 1.5rem !important;\r\n }\r\n .pl-xl-4,\r\n .px-xl-4 {\r\n padding-left: 1.5rem !important;\r\n }\r\n .p-xl-5 {\r\n padding: 3rem !important;\r\n }\r\n .pt-xl-5,\r\n .py-xl-5 {\r\n padding-top: 3rem !important;\r\n }\r\n .pr-xl-5,\r\n .px-xl-5 {\r\n padding-right: 3rem !important;\r\n }\r\n .pb-xl-5,\r\n .py-xl-5 {\r\n padding-bottom: 3rem !important;\r\n }\r\n .pl-xl-5,\r\n .px-xl-5 {\r\n padding-left: 3rem !important;\r\n }\r\n .m-xl-n1 {\r\n margin: -0.25rem !important;\r\n }\r\n .mt-xl-n1,\r\n .my-xl-n1 {\r\n margin-top: -0.25rem !important;\r\n }\r\n .mr-xl-n1,\r\n .mx-xl-n1 {\r\n margin-right: -0.25rem !important;\r\n }\r\n .mb-xl-n1,\r\n .my-xl-n1 {\r\n margin-bottom: -0.25rem !important;\r\n }\r\n .ml-xl-n1,\r\n .mx-xl-n1 {\r\n margin-left: -0.25rem !important;\r\n }\r\n .m-xl-n2 {\r\n margin: -0.5rem !important;\r\n }\r\n .mt-xl-n2,\r\n .my-xl-n2 {\r\n margin-top: -0.5rem !important;\r\n }\r\n .mr-xl-n2,\r\n .mx-xl-n2 {\r\n margin-right: -0.5rem !important;\r\n }\r\n .mb-xl-n2,\r\n .my-xl-n2 {\r\n margin-bottom: -0.5rem !important;\r\n }\r\n .ml-xl-n2,\r\n .mx-xl-n2 {\r\n margin-left: -0.5rem !important;\r\n }\r\n .m-xl-n3 {\r\n margin: -1rem !important;\r\n }\r\n .mt-xl-n3,\r\n .my-xl-n3 {\r\n margin-top: -1rem !important;\r\n }\r\n .mr-xl-n3,\r\n .mx-xl-n3 {\r\n margin-right: -1rem !important;\r\n }\r\n .mb-xl-n3,\r\n .my-xl-n3 {\r\n margin-bottom: -1rem !important;\r\n }\r\n .ml-xl-n3,\r\n .mx-xl-n3 {\r\n margin-left: -1rem !important;\r\n }\r\n .m-xl-n4 {\r\n margin: -1.5rem !important;\r\n }\r\n .mt-xl-n4,\r\n .my-xl-n4 {\r\n margin-top: -1.5rem !important;\r\n }\r\n .mr-xl-n4,\r\n .mx-xl-n4 {\r\n margin-right: -1.5rem !important;\r\n }\r\n .mb-xl-n4,\r\n .my-xl-n4 {\r\n margin-bottom: -1.5rem !important;\r\n }\r\n .ml-xl-n4,\r\n .mx-xl-n4 {\r\n margin-left: -1.5rem !important;\r\n }\r\n .m-xl-n5 {\r\n margin: -3rem !important;\r\n }\r\n .mt-xl-n5,\r\n .my-xl-n5 {\r\n margin-top: -3rem !important;\r\n }\r\n .mr-xl-n5,\r\n .mx-xl-n5 {\r\n margin-right: -3rem !important;\r\n }\r\n .mb-xl-n5,\r\n .my-xl-n5 {\r\n margin-bottom: -3rem !important;\r\n }\r\n .ml-xl-n5,\r\n .mx-xl-n5 {\r\n margin-left: -3rem !important;\r\n }\r\n .m-xl-auto {\r\n margin: auto !important;\r\n }\r\n .mt-xl-auto,\r\n .my-xl-auto {\r\n margin-top: auto !important;\r\n }\r\n .mr-xl-auto,\r\n .mx-xl-auto {\r\n margin-right: auto !important;\r\n }\r\n .mb-xl-auto,\r\n .my-xl-auto {\r\n margin-bottom: auto !important;\r\n }\r\n .ml-xl-auto,\r\n .mx-xl-auto {\r\n margin-left: auto !important;\r\n }\r\n }\r\n\r\n .text-monospace {\r\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\r\n \"Courier New\", monospace !important;\r\n }\r\n\r\n .text-justify {\r\n text-align: justify !important;\r\n }\r\n\r\n .text-wrap {\r\n white-space: normal !important;\r\n }\r\n\r\n .text-nowrap {\r\n white-space: nowrap !important;\r\n }\r\n\r\n .text-truncate {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n .text-left {\r\n text-align: left !important;\r\n }\r\n\r\n .text-right {\r\n text-align: right !important;\r\n }\r\n\r\n .text-center {\r\n text-align: center !important;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .text-sm-left {\r\n text-align: left !important;\r\n }\r\n .text-sm-right {\r\n text-align: right !important;\r\n }\r\n .text-sm-center {\r\n text-align: center !important;\r\n }\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .text-md-left {\r\n text-align: left !important;\r\n }\r\n .text-md-right {\r\n text-align: right !important;\r\n }\r\n .text-md-center {\r\n text-align: center !important;\r\n }\r\n }\r\n\r\n @media (min-width: 992px) {\r\n .text-lg-left {\r\n text-align: left !important;\r\n }\r\n .text-lg-right {\r\n text-align: right !important;\r\n }\r\n .text-lg-center {\r\n text-align: center !important;\r\n }\r\n }\r\n\r\n @media (min-width: 1200px) {\r\n .text-xl-left {\r\n text-align: left !important;\r\n }\r\n .text-xl-right {\r\n text-align: right !important;\r\n }\r\n .text-xl-center {\r\n text-align: center !important;\r\n }\r\n }\r\n\r\n .text-lowercase {\r\n text-transform: lowercase !important;\r\n }\r\n\r\n .text-uppercase,\r\n .dropdown .dropdown-menu .dropdown-header,\r\n .sidebar .sidebar-heading {\r\n text-transform: uppercase !important;\r\n }\r\n\r\n .text-capitalize {\r\n text-transform: capitalize !important;\r\n }\r\n\r\n .font-weight-light {\r\n font-weight: 300 !important;\r\n }\r\n\r\n .font-weight-lighter {\r\n font-weight: lighter !important;\r\n }\r\n\r\n .font-weight-normal {\r\n font-weight: 400 !important;\r\n }\r\n\r\n .font-weight-bold {\r\n font-weight: 700 !important;\r\n }\r\n\r\n .font-weight-bolder {\r\n font-weight: bolder !important;\r\n }\r\n\r\n .font-italic {\r\n font-style: italic !important;\r\n }\r\n\r\n .text-white {\r\n color: var(--white) !important;\r\n }\r\n\r\n .text-primary {\r\n color: var(--primary) !important;\r\n }\r\n\r\n a.text-primary:hover,\r\n a.text-primary:focus {\r\n color: var(--warning) !important;\r\n }\r\n\r\n .text-secondary {\r\n color: var(--secondary) !important;\r\n }\r\n\r\n a.text-secondary:hover,\r\n a.text-secondary:focus {\r\n color: var(--warning) !important;\r\n }\r\n\r\n .text-success {\r\n color: var(--success) !important;\r\n }\r\n\r\n a.text-success:hover,\r\n a.text-success:focus {\r\n color: var(--warning) !important;\r\n }\r\n\r\n .text-info {\r\n color: var(--info) !important;\r\n }\r\n\r\n a.text-info:hover,\r\n a.text-info:focus {\r\n color: #258391 !important;\r\n }\r\n\r\n .text-warning {\r\n color: var(--warning) !important;\r\n }\r\n\r\n a.text-warning:hover,\r\n a.text-warning:focus {\r\n color: #dda20a !important;\r\n }\r\n\r\n .text-danger {\r\n color: var(--danger) !important;\r\n }\r\n\r\n a.text-danger:hover,\r\n a.text-danger:focus {\r\n color: var(--warning) !important;\r\n }\r\n\r\n .text-light {\r\n color: var(--light) !important;\r\n }\r\n\r\n a.text-light:hover,\r\n a.text-light:focus {\r\n color: var(--warning) !important;\r\n }\r\n\r\n .text-dark {\r\n color: var(--gray-dark) !important;\r\n }\r\n\r\n a.text-dark:hover,\r\n a.text-dark:focus {\r\n color: var(--warning) !important;\r\n }\r\n\r\n .text-body {\r\n color: var(--secondary) !important;\r\n }\r\n\r\n .text-muted {\r\n color: var(--secondary) !important;\r\n }\r\n\r\n .text-black-50 {\r\n color: rgba(0, 0, 0, 0.5) !important;\r\n }\r\n\r\n .text-white-50 {\r\n color: rgba(255, 255, 255, 0.5) !important;\r\n }\r\n\r\n .text-hide {\r\n font: 0/0 a;\r\n color: transparent;\r\n text-shadow: none;\r\n background-color: transparent;\r\n border: 0;\r\n }\r\n\r\n .text-decoration-none {\r\n text-decoration: none !important;\r\n }\r\n\r\n .text-break {\r\n word-break: break-word !important;\r\n overflow-wrap: break-word !important;\r\n }\r\n\r\n .text-reset {\r\n color: inherit !important;\r\n }\r\n\r\n .visible {\r\n visibility: visible !important;\r\n }\r\n\r\n .invisible {\r\n visibility: hidden !important;\r\n }\r\n\r\n @media print {\r\n *,\r\n *::before,\r\n *::after {\r\n text-shadow: none !important;\r\n -webkit-box-shadow: none !important;\r\n box-shadow: none !important;\r\n }\r\n a:not(.btn) {\r\n text-decoration: underline;\r\n }\r\n abbr[title]::after {\r\n content: \" (\" attr(title) \")\";\r\n }\r\n pre {\r\n white-space: pre-wrap !important;\r\n }\r\n pre,\r\n blockquote {\r\n border: 1px solid #b7b9cc;\r\n page-break-inside: avoid;\r\n }\r\n thead {\r\n display: table-header-group;\r\n }\r\n tr,\r\n img {\r\n page-break-inside: avoid;\r\n }\r\n p,\r\n h2,\r\n h3 {\r\n orphans: 3;\r\n widows: 3;\r\n }\r\n h2,\r\n h3 {\r\n page-break-after: avoid;\r\n }\r\n @page {\r\n size: a3;\r\n }\r\n body {\r\n min-width: 992px !important;\r\n }\r\n .container {\r\n min-width: 992px !important;\r\n }\r\n .navbar {\r\n display: none;\r\n }\r\n .badge {\r\n border: 1px solid #000;\r\n }\r\n .table td,\r\n .table th {\r\n background-color: var(--white) !important;\r\n }\r\n .table-bordered th,\r\n .table-bordered td {\r\n border: 1px solid #dddfeb !important;\r\n }\r\n .table-dark {\r\n color: inherit;\r\n }\r\n .table-dark th,\r\n .table-dark td,\r\n .table-dark thead th,\r\n .table-dark tbody + tbody {\r\n border-color: #e3e6f0;\r\n }\r\n .table .thead-dark th {\r\n color: inherit;\r\n border-color: #e3e6f0;\r\n }\r\n }\r\n\r\n html {\r\n position: relative;\r\n min-height: 100%;\r\n }\r\n\r\n body {\r\n height: 100%;\r\n }\r\n\r\n a:focus {\r\n outline: none;\r\n }\r\n\r\n #wrapper {\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n }\r\n\r\n #wrapper #content-wrapper {\r\n background-color: var(--light);\r\n width: 100%;\r\n overflow-x: hidden;\r\n }\r\n\r\n #wrapper #content-wrapper #content {\r\n -webkit-box-flex: 1;\r\n -ms-flex: 1 0 auto;\r\n flex: 1 0 auto;\r\n }\r\n\r\n .container,\r\n .container-fluid {\r\n padding-left: 1.5rem;\r\n padding-right: 1.5rem;\r\n }\r\n\r\n .scroll-to-top {\r\n position: fixed;\r\n right: 1rem;\r\n bottom: 1rem;\r\n display: none;\r\n width: 2.75rem;\r\n height: 2.75rem;\r\n text-align: center;\r\n color: var(--white);\r\n background: rgba(90, 92, 105, 0.5);\r\n line-height: 46px;\r\n }\r\n\r\n .scroll-to-top:focus,\r\n .scroll-to-top:hover {\r\n color: white;\r\n }\r\n\r\n .scroll-to-top:hover {\r\n background: var(--gray-dark);\r\n }\r\n\r\n .scroll-to-top i {\r\n font-weight: 800;\r\n }\r\n\r\n @-webkit-keyframes growIn {\r\n 0% {\r\n -webkit-transform: scale(0.9);\r\n transform: scale(0.9);\r\n opacity: 0;\r\n }\r\n 100% {\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n }\r\n\r\n @keyframes growIn {\r\n 0% {\r\n -webkit-transform: scale(0.9);\r\n transform: scale(0.9);\r\n opacity: 0;\r\n }\r\n 100% {\r\n -webkit-transform: scale(1);\r\n transform: scale(1);\r\n opacity: 1;\r\n }\r\n }\r\n\r\n .animated--grow-in,\r\n .sidebar .nav-item .collapse {\r\n -webkit-animation-name: growIn;\r\n animation-name: growIn;\r\n -webkit-animation-duration: 200ms;\r\n animation-duration: 200ms;\r\n -webkit-animation-timing-function: transform\r\n cubic-bezier(0.18, 1.25, 0.4, 1),\r\n opacity cubic-bezier(0, 1, 0.4, 1);\r\n animation-timing-function: transform cubic-bezier(0.18, 1.25, 0.4, 1),\r\n opacity cubic-bezier(0, 1, 0.4, 1);\r\n }\r\n\r\n @-webkit-keyframes fadeIn {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n @keyframes fadeIn {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n .animated--fade-in {\r\n -webkit-animation-name: fadeIn;\r\n animation-name: fadeIn;\r\n -webkit-animation-duration: 200ms;\r\n animation-duration: 200ms;\r\n -webkit-animation-timing-function: opacity cubic-bezier(0, 1, 0.4, 1);\r\n animation-timing-function: opacity cubic-bezier(0, 1, 0.4, 1);\r\n }\r\n\r\n .bg-gradient-primary {\r\n background-color: var(--gray-dark);\r\n background-image: -webkit-gradient(\r\n linear,\r\n left top,\r\n left bottom,\r\n color-stop(10%, var(--primary)),\r\n to(#224abe)\r\n );\r\n background-image: linear-gradient(\r\n 180deg,\r\n var(--primary) 10%,\r\n #224abe 100%\r\n );\r\n background-size: cover;\r\n }\r\n\r\n .bg-gradient-success {\r\n background-color: var(--success);\r\n background-image: -webkit-gradient(\r\n linear,\r\n left top,\r\n left bottom,\r\n color-stop(10%, var(--success)),\r\n to(#13855c)\r\n );\r\n background-image: linear-gradient(\r\n 180deg,\r\n var(--success) 10%,\r\n #13855c 100%\r\n );\r\n background-size: cover;\r\n }\r\n\r\n .bg-gradient-info {\r\n background-color: var(--info);\r\n background-image: -webkit-gradient(\r\n linear,\r\n left top,\r\n left bottom,\r\n color-stop(10%, var(--info)),\r\n to(#258391)\r\n );\r\n background-image: linear-gradient(\r\n 180deg,\r\n var(--info) 10%,\r\n #258391 100%\r\n );\r\n background-size: cover;\r\n }\r\n\r\n .bg-gradient-warning {\r\n background-color: var(--warning);\r\n background-image: -webkit-gradient(\r\n linear,\r\n left top,\r\n left bottom,\r\n color-stop(10%, var(--warning)),\r\n to(#dda20a)\r\n );\r\n background-image: linear-gradient(\r\n 180deg,\r\n var(--warning) 10%,\r\n #dda20a 100%\r\n );\r\n background-size: cover;\r\n }\r\n\r\n .bg-gradient-danger {\r\n background-color: var(--danger);\r\n background-image: -webkit-gradient(\r\n linear,\r\n left top,\r\n left bottom,\r\n color-stop(10%, var(--danger)),\r\n to(#be2617)\r\n );\r\n background-image: linear-gradient(\r\n 180deg,\r\n var(--danger) 10%,\r\n #be2617 100%\r\n );\r\n background-size: cover;\r\n }\r\n\r\n .bg-gray-100 {\r\n background-color: var(--light) !important;\r\n }\r\n\r\n .bg-gray-200 {\r\n background-color: #eaecf4 !important;\r\n }\r\n\r\n .bg-gray-300 {\r\n background-color: #dddfeb !important;\r\n }\r\n\r\n .bg-gray-400 {\r\n background-color: #d1d3e2 !important;\r\n }\r\n\r\n .bg-gray-500 {\r\n background-color: #b7b9cc !important;\r\n }\r\n\r\n .bg-gray-600 {\r\n background-color: var(--secondary) !important;\r\n }\r\n\r\n .bg-gray-700 {\r\n background-color: #6e707e !important;\r\n }\r\n\r\n .bg-gray-800 {\r\n background-color: var(--gray-dark) !important;\r\n }\r\n\r\n .bg-gray-900 {\r\n background-color: #3a3b45 !important;\r\n }\r\n\r\n .o-hidden {\r\n overflow: hidden !important;\r\n }\r\n\r\n .text-xs {\r\n font-size: 0.7rem;\r\n }\r\n\r\n .text-lg {\r\n font-size: 1.2rem;\r\n }\r\n\r\n .text-gray-100 {\r\n color: var(--light) !important;\r\n }\r\n\r\n .text-gray-200 {\r\n color: #eaecf4 !important;\r\n }\r\n\r\n .text-gray-300 {\r\n color: #dddfeb !important;\r\n }\r\n\r\n .text-gray-400 {\r\n color: #d1d3e2 !important;\r\n }\r\n\r\n .text-gray-500 {\r\n color: #b7b9cc !important;\r\n }\r\n\r\n .text-gray-600 {\r\n color: var(--secondary) !important;\r\n }\r\n\r\n .text-gray-700 {\r\n color: #6e707e !important;\r\n }\r\n\r\n .text-gray-800 {\r\n color: var(--gray-dark) !important;\r\n }\r\n\r\n .text-gray-900 {\r\n color: #3a3b45 !important;\r\n }\r\n\r\n .icon-circle {\r\n height: 2.5rem;\r\n width: 2.5rem;\r\n border-radius: 100%;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n }\r\n\r\n .border-left-primary {\r\n border-left: 0.25rem solid var(--primary) !important;\r\n }\r\n\r\n .border-left-success {\r\n border-left: 0.25rem solid var(--success) !important;\r\n }\r\n\r\n .border-left-info {\r\n border-left: 0.25rem solid var(--info) !important;\r\n }\r\n\r\n .border-left-warning {\r\n border-left: 0.25rem solid var(--warning) !important;\r\n }\r\n\r\n .border-left-danger {\r\n border-left: 0.25rem solid var(--danger) !important;\r\n }\r\n\r\n .border-bottom-primary {\r\n border-bottom: 0.25rem solid var(--primary) !important;\r\n }\r\n\r\n .border-bottom-success {\r\n border-bottom: 0.25rem solid var(--success) !important;\r\n }\r\n\r\n .border-bottom-info {\r\n border-bottom: 0.25rem solid var(--info) !important;\r\n }\r\n\r\n .border-bottom-warning {\r\n border-bottom: 0.25rem solid var(--warning) !important;\r\n }\r\n\r\n .border-bottom-danger {\r\n border-bottom: 0.25rem solid var(--danger) !important;\r\n }\r\n\r\n .progress-sm {\r\n height: 0.5rem;\r\n }\r\n\r\n .rotate-15 {\r\n -webkit-transform: rotate(15deg);\r\n transform: rotate(15deg);\r\n }\r\n\r\n .rotate-n-15 {\r\n -webkit-transform: rotate(-15deg);\r\n transform: rotate(-15deg);\r\n }\r\n\r\n .dropdown .dropdown-menu {\r\n font-size: 0.85rem;\r\n }\r\n\r\n .dropdown .dropdown-menu .dropdown-header {\r\n font-weight: 800;\r\n font-size: 0.65rem;\r\n color: #b7b9cc;\r\n }\r\n\r\n .dropdown.no-arrow .dropdown-toggle::after {\r\n display: none;\r\n }\r\n\r\n .sidebar .nav-item.dropdown .dropdown-toggle::after,\r\n .topbar .nav-item.dropdown .dropdown-toggle::after {\r\n width: 1rem;\r\n text-align: center;\r\n float: right;\r\n vertical-align: 0;\r\n border: 0;\r\n font-weight: 900;\r\n content: \"\\\\f105\";\r\n font-family: \"Font Awesome 5 Free\";\r\n }\r\n\r\n .sidebar .nav-item.dropdown.show .dropdown-toggle::after,\r\n .topbar .nav-item.dropdown.show .dropdown-toggle::after {\r\n content: \"\\\\f107\";\r\n }\r\n\r\n .sidebar .nav-item .nav-link,\r\n .topbar .nav-item .nav-link {\r\n position: relative;\r\n }\r\n\r\n .sidebar .nav-item .nav-link .badge-counter,\r\n .topbar .nav-item .nav-link .badge-counter {\r\n position: absolute;\r\n -webkit-transform: scale(0.7);\r\n transform: scale(0.7);\r\n -webkit-transform-origin: top right;\r\n transform-origin: top right;\r\n right: 0.25rem;\r\n margin-top: -0.25rem;\r\n }\r\n\r\n .sidebar .nav-item .nav-link .img-profile,\r\n .topbar .nav-item .nav-link .img-profile {\r\n height: 2rem;\r\n width: 2rem;\r\n }\r\n\r\n .topbar {\r\n height: 4.375rem;\r\n }\r\n\r\n .topbar #sidebarToggleTop {\r\n height: 2.5rem;\r\n width: 2.5rem;\r\n }\r\n\r\n .topbar #sidebarToggleTop:hover {\r\n background-color: #eaecf4;\r\n }\r\n\r\n .topbar #sidebarToggleTop:active {\r\n background-color: #dddfeb;\r\n }\r\n\r\n .topbar .navbar-search {\r\n width: 25rem;\r\n }\r\n\r\n .topbar .navbar-search input {\r\n font-size: 0.85rem;\r\n }\r\n\r\n .topbar .topbar-divider {\r\n width: 0;\r\n border-right: 1px solid #e3e6f0;\r\n height: calc(4.375rem - 2rem);\r\n margin: auto 1rem;\r\n }\r\n\r\n .topbar .nav-item .nav-link {\r\n height: 4.375rem;\r\n display: -webkit-box;\r\n display: -ms-flexbox;\r\n display: flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n padding: 0 0.75rem;\r\n }\r\n\r\n .topbar .nav-item .nav-link:focus {\r\n outline: none;\r\n }\r\n\r\n .topbar .nav-item:focus {\r\n outline: none;\r\n }\r\n\r\n .topbar .dropdown {\r\n position: static;\r\n }\r\n\r\n .topbar .dropdown .dropdown-menu {\r\n width: calc(100% - 1.5rem);\r\n right: 0.75rem;\r\n }\r\n\r\n .topbar .dropdown-list {\r\n padding: 0;\r\n border: none;\r\n overflow: hidden;\r\n }\r\n\r\n .topbar .dropdown-list .dropdown-header {\r\n background-color: var(--primary);\r\n border: 1px solid var(--primary);\r\n padding-top: 0.75rem;\r\n padding-bottom: 0.75rem;\r\n color: var(--white);\r\n }\r\n\r\n .topbar .dropdown-list .dropdown-item {\r\n white-space: normal;\r\n padding-top: 0.5rem;\r\n padding-bottom: 0.5rem;\r\n border-left: 1px solid #e3e6f0;\r\n border-right: 1px solid #e3e6f0;\r\n border-bottom: 1px solid #e3e6f0;\r\n line-height: 1.3rem;\r\n }\r\n\r\n .topbar .dropdown-list .dropdown-item .dropdown-list-image {\r\n position: relative;\r\n height: 2.5rem;\r\n width: 2.5rem;\r\n }\r\n\r\n .topbar .dropdown-list .dropdown-item .dropdown-list-image img {\r\n height: 2.5rem;\r\n width: 2.5rem;\r\n }\r\n\r\n .topbar\r\n .dropdown-list\r\n .dropdown-item\r\n .dropdown-list-image\r\n .status-indicator {\r\n background-color: #eaecf4;\r\n height: 0.75rem;\r\n width: 0.75rem;\r\n border-radius: 100%;\r\n position: absolute;\r\n bottom: 0;\r\n right: 0;\r\n border: 0.125rem solid var(--white);\r\n }\r\n\r\n .topbar .dropdown-list .dropdown-item .text-truncate {\r\n max-width: 10rem;\r\n }\r\n\r\n .topbar .dropdown-list .dropdown-item:active {\r\n background-color: #eaecf4;\r\n color: #3a3b45;\r\n }\r\n\r\n @media (min-width: 576px) {\r\n .topbar .dropdown {\r\n position: relative;\r\n }\r\n .topbar .dropdown .dropdown-menu {\r\n width: auto;\r\n right: 0;\r\n }\r\n .topbar .dropdown-list {\r\n width: 20rem !important;\r\n }\r\n .topbar .dropdown-list .dropdown-item .text-truncate {\r\n max-width: 13.375rem;\r\n }\r\n }\r\n\r\n .topbar.navbar-light .navbar-nav .nav-item .nav-link {\r\n color: #d1d3e2;\r\n }\r\n\r\n .topbar.navbar-light .navbar-nav .nav-item .nav-link:hover {\r\n color: #b7b9cc;\r\n }\r\n\r\n .topbar.navbar-light .navbar-nav .nav-item .nav-link:active {\r\n color: var(--secondary);\r\n }\r\n\r\n .sidebar {\r\n width: 6.5rem;\r\n min-height: 100vh;\r\n }\r\n\r\n .sidebar .nav-item {\r\n position: relative;\r\n }\r\n\r\n .sidebar .nav-item:last-child {\r\n margin-bottom: 1rem;\r\n }\r\n\r\n .sidebar .nav-item .nav-link {\r\n text-align: center;\r\n padding: 0.75rem 1rem;\r\n width: 6.5rem;\r\n }\r\n\r\n .sidebar .nav-item .nav-link span {\r\n font-size: 0.65rem;\r\n display: block;\r\n }\r\n\r\n .sidebar .nav-item.active .nav-link {\r\n font-weight: 700;\r\n }\r\n\r\n .sidebar .nav-item .collapse {\r\n position: absolute;\r\n left: calc(6.5rem + 1.5rem / 2);\r\n z-index: 1;\r\n top: 2px;\r\n }\r\n\r\n .sidebar .nav-item .collapse .collapse-inner {\r\n border-radius: 1.35rem;\r\n -webkit-box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15);\r\n box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15);\r\n }\r\n\r\n .sidebar .nav-item .collapsing {\r\n display: none;\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n\r\n .sidebar .nav-item .collapse .collapse-inner,\r\n .sidebar .nav-item .collapsing .collapse-inner {\r\n padding: 0.5rem 0;\r\n min-width: 10rem;\r\n font-size: 0.85rem;\r\n margin: 0 0 1rem 0;\r\n }\r\n\r\n .sidebar .nav-item .collapse .collapse-inner .collapse-header,\r\n .sidebar .nav-item .collapsing .collapse-inner .collapse-header {\r\n margin: 0;\r\n white-space: nowrap;\r\n padding: 0.5rem 1.5rem;\r\n text-transform: uppercase;\r\n font-weight: 800;\r\n font-size: 0.65rem;\r\n color: #b7b9cc;\r\n }\r\n\r\n .sidebar .nav-item .collapse .collapse-inner .collapse-item,\r\n .sidebar .nav-item .collapsing .collapse-inner .collapse-item {\r\n padding: 0.5rem 1rem;\r\n margin: 0 0.5rem;\r\n display: block;\r\n color: #3a3b45;\r\n text-decoration: none;\r\n border-radius: 1.35rem;\r\n white-space: nowrap;\r\n }\r\n\r\n .sidebar .nav-item .collapse .collapse-inner .collapse-item:hover,\r\n .sidebar .nav-item .collapsing .collapse-inner .collapse-item:hover {\r\n background-color: #eaecf4;\r\n }\r\n\r\n .sidebar .nav-item .collapse .collapse-inner .collapse-item:active,\r\n .sidebar .nav-item .collapsing .collapse-inner .collapse-item:active {\r\n background-color: #dddfeb;\r\n }\r\n\r\n .sidebar .nav-item .collapse .collapse-inner .collapse-item.active,\r\n .sidebar .nav-item .collapsing .collapse-inner .collapse-item.active {\r\n color: var(--primary);\r\n font-weight: 700;\r\n }\r\n\r\n .sidebar #sidebarToggle {\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n text-align: center;\r\n margin-bottom: 1rem;\r\n cursor: pointer;\r\n }\r\n\r\n .sidebar #sidebarToggle::after {\r\n font-weight: 900;\r\n content: \"\\\\f104\";\r\n font-family: \"Font Awesome 5 Free\";\r\n margin-right: 0.1rem;\r\n }\r\n\r\n .sidebar #sidebarToggle:hover {\r\n text-decoration: none;\r\n }\r\n\r\n .sidebar #sidebarToggle:focus {\r\n outline: none;\r\n }\r\n\r\n .sidebar.toggled {\r\n width: 0 !important;\r\n overflow: hidden;\r\n }\r\n\r\n .sidebar.toggled #sidebarToggle::after {\r\n content: \"\\\\f105\";\r\n font-family: \"Font Awesome 5 Free\";\r\n margin-left: 0.25rem;\r\n }\r\n\r\n .sidebar .sidebar-brand {\r\n height: 4.375rem;\r\n text-decoration: none;\r\n font-size: 1rem;\r\n font-weight: 800;\r\n padding: 1.5rem 1rem;\r\n text-align: center;\r\n text-transform: uppercase;\r\n letter-spacing: 0.05rem;\r\n z-index: 1;\r\n }\r\n\r\n .sidebar .sidebar-brand .sidebar-brand-icon i {\r\n font-size: 2rem;\r\n }\r\n\r\n .sidebar .sidebar-brand .sidebar-brand-text {\r\n display: none;\r\n }\r\n\r\n .sidebar hr.sidebar-divider {\r\n margin: 0 1rem 1rem;\r\n }\r\n\r\n .sidebar .sidebar-heading {\r\n text-align: center;\r\n padding: 0 1rem;\r\n font-weight: 800;\r\n font-size: 0.65rem;\r\n }\r\n\r\n @media (min-width: 900px) {\r\n .sidebar {\r\n width: 14rem !important;\r\n }\r\n .sidebar .nav-item .collapse {\r\n position: relative;\r\n left: 0;\r\n z-index: 1;\r\n top: 0;\r\n -webkit-animation: none;\r\n animation: none;\r\n }\r\n .sidebar .nav-item .collapse .collapse-inner {\r\n border-radius: 0;\r\n -webkit-box-shadow: none;\r\n box-shadow: none;\r\n }\r\n .sidebar .nav-item .collapsing {\r\n display: block;\r\n -webkit-transition: height 0.15s ease;\r\n transition: height 0.15s ease;\r\n }\r\n .sidebar .nav-item .collapse,\r\n .sidebar .nav-item .collapsing {\r\n margin: 0 1rem;\r\n }\r\n .sidebar .nav-item .nav-link {\r\n display: block;\r\n width: 100%;\r\n text-align: left;\r\n padding: 1rem;\r\n width: 14rem;\r\n }\r\n .sidebar .nav-item .nav-link i {\r\n font-size: 0.85rem;\r\n margin-right: 0.25rem;\r\n }\r\n .sidebar .nav-item .nav-link span {\r\n font-size: 0.85rem;\r\n display: inline;\r\n }\r\n .sidebar .nav-item .nav-link[data-toggle=\"collapse\"]::after {\r\n width: 1rem;\r\n text-align: center;\r\n float: right;\r\n vertical-align: 0;\r\n border: 0;\r\n font-weight: 900;\r\n content: \"\\\\f107\";\r\n font-family: \"Font Awesome 5 Free\";\r\n }\r\n .sidebar .nav-item .nav-link[data-toggle=\"collapse\"].collapsed::after {\r\n content: \"\\\\f105\";\r\n }\r\n .sidebar .sidebar-brand .sidebar-brand-icon i {\r\n font-size: 2rem;\r\n }\r\n .sidebar .sidebar-brand .sidebar-brand-text {\r\n display: inline;\r\n }\r\n .sidebar .sidebar-heading {\r\n text-align: left;\r\n }\r\n .sidebar.toggled {\r\n overflow: visible;\r\n width: 6.5rem !important;\r\n }\r\n .sidebar.toggled .nav-item .collapse {\r\n position: absolute;\r\n left: calc(6.5rem + 1.5rem / 2);\r\n z-index: 1;\r\n top: 2px;\r\n -webkit-animation-name: growIn;\r\n animation-name: growIn;\r\n -webkit-animation-duration: 200ms;\r\n animation-duration: 200ms;\r\n -webkit-animation-timing-function: transform\r\n cubic-bezier(0.18, 1.25, 0.4, 1),\r\n opacity cubic-bezier(0, 1, 0.4, 1);\r\n animation-timing-function: transform\r\n cubic-bezier(0.18, 1.25, 0.4, 1),\r\n opacity cubic-bezier(0, 1, 0.4, 1);\r\n }\r\n .sidebar.toggled .nav-item .collapse .collapse-inner {\r\n -webkit-box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15);\r\n box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15);\r\n border-radius: 1.35rem;\r\n }\r\n .sidebar.toggled .nav-item .collapsing {\r\n display: none;\r\n -webkit-transition: none;\r\n transition: none;\r\n }\r\n .sidebar.toggled .nav-item .collapse,\r\n .sidebar.toggled .nav-item .collapsing {\r\n margin: 0;\r\n }\r\n .sidebar.toggled .nav-item:last-child {\r\n margin-bottom: 1rem;\r\n }\r\n .sidebar.toggled .nav-item .nav-link {\r\n text-align: center;\r\n padding: 0.75rem 1rem;\r\n width: 6.5rem;\r\n }\r\n .sidebar.toggled .nav-item .nav-link span {\r\n font-size: 0.65rem;\r\n display: block;\r\n }\r\n .sidebar.toggled .nav-item .nav-link i {\r\n margin-right: 0;\r\n }\r\n .sidebar.toggled .nav-item .nav-link[data-toggle=\"collapse\"]::after {\r\n display: none;\r\n }\r\n .sidebar.toggled .sidebar-brand .sidebar-brand-icon i {\r\n font-size: 2rem;\r\n }\r\n .sidebar.toggled .sidebar-brand .sidebar-brand-text {\r\n display: none;\r\n }\r\n .sidebar.toggled .sidebar-heading {\r\n text-align: center;\r\n }\r\n }\r\n\r\n @media (max-width: 550px) {\r\n .sidebar {\r\n width: 0px !important;\r\n overflow: hidden;\r\n }\r\n .sidebar.open {\r\n width: 6.5rem !important;\r\n }\r\n }\r\n @media (max-width: 900px) {\r\n .sidebar.close {\r\n width: 0px !important;\r\n overflow: hidden;\r\n }\r\n .sidebar.open {\r\n width: 6.5rem !important;\r\n }\r\n }\r\n\r\n .sidebar-light .sidebar-brand {\r\n color: #6e707e;\r\n }\r\n\r\n .sidebar-light hr.sidebar-divider {\r\n border-top: 1px solid #eaecf4;\r\n }\r\n\r\n .sidebar-light .sidebar-heading {\r\n color: #b7b9cc;\r\n }\r\n\r\n .sidebar-light .nav-item .nav-link {\r\n color: var(--secondary);\r\n }\r\n\r\n .sidebar-light .nav-item .nav-link i {\r\n color: #d1d3e2;\r\n }\r\n\r\n .sidebar-light .nav-item .nav-link:active,\r\n .sidebar-light .nav-item .nav-link:focus,\r\n .sidebar-light .nav-item .nav-link:hover {\r\n color: #6e707e;\r\n }\r\n\r\n .sidebar-light .nav-item .nav-link:active i,\r\n .sidebar-light .nav-item .nav-link:focus i,\r\n .sidebar-light .nav-item .nav-link:hover i {\r\n color: #6e707e;\r\n }\r\n\r\n .sidebar-light .nav-item .nav-link[data-toggle=\"collapse\"]::after {\r\n color: #b7b9cc;\r\n }\r\n\r\n .sidebar-light .nav-item.active .nav-link {\r\n color: #6e707e;\r\n }\r\n\r\n .sidebar-light .nav-item.active .nav-link i {\r\n color: #6e707e;\r\n }\r\n\r\n .sidebar-light #sidebarToggle {\r\n background-color: #eaecf4;\r\n }\r\n\r\n .sidebar-light #sidebarToggle::after {\r\n color: #b7b9cc;\r\n }\r\n\r\n .sidebar-light #sidebarToggle:hover {\r\n background-color: #dddfeb;\r\n }\r\n\r\n .sidebar-dark .sidebar-brand {\r\n color: var(--white);\r\n }\r\n\r\n .sidebar-dark hr.sidebar-divider {\r\n border-top: 1px solid rgba(255, 255, 255, 0.15);\r\n }\r\n\r\n .sidebar-dark .sidebar-heading {\r\n color: rgba(255, 255, 255, 0.4);\r\n }\r\n\r\n .sidebar-dark .nav-item .nav-link {\r\n color: rgba(255, 255, 255, 0.8);\r\n }\r\n\r\n .sidebar-dark .nav-item .nav-link i {\r\n color: rgba(255, 255, 255, 0.3);\r\n }\r\n\r\n .sidebar-dark .nav-item .nav-link:active,\r\n .sidebar-dark .nav-item .nav-link:focus,\r\n .sidebar-dark .nav-item .nav-link:hover {\r\n color: var(--white);\r\n }\r\n\r\n .sidebar-dark .nav-item .nav-link:active i,\r\n .sidebar-dark .nav-item .nav-link:focus i,\r\n .sidebar-dark .nav-item .nav-link:hover i {\r\n color: var(--white);\r\n }\r\n\r\n .sidebar-dark .nav-item .nav-link[data-toggle=\"collapse\"]::after {\r\n color: rgba(255, 255, 255, 0.5);\r\n }\r\n\r\n .sidebar-dark .nav-item.active .nav-link {\r\n color: var(--white);\r\n }\r\n\r\n .sidebar-dark .nav-item.active .nav-link i {\r\n color: var(--white);\r\n }\r\n\r\n .sidebar-dark #sidebarToggle {\r\n background-color: rgba(255, 255, 255, 0.2);\r\n }\r\n\r\n .sidebar-dark #sidebarToggle::after {\r\n color: rgba(255, 255, 255, 0.5);\r\n }\r\n\r\n .sidebar-dark #sidebarToggle:hover {\r\n background-color: rgba(255, 255, 255, 0.25);\r\n }\r\n\r\n .sidebar-dark.toggled #sidebarToggle::after {\r\n color: rgba(255, 255, 255, 0.5);\r\n }\r\n\r\n .btn-circle {\r\n border-radius: 100%;\r\n height: 2.5rem;\r\n width: 2.5rem;\r\n font-size: 1rem;\r\n display: -webkit-inline-box;\r\n display: -ms-inline-flexbox;\r\n display: inline-flex;\r\n -webkit-box-align: center;\r\n -ms-flex-align: center;\r\n align-items: center;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n }\r\n\r\n .btn-circle.btn-sm,\r\n .btn-group-sm > .btn-circle.btn {\r\n height: 1.8rem;\r\n width: 1.8rem;\r\n font-size: 0.75rem;\r\n }\r\n\r\n .btn-circle.btn-lg,\r\n .btn-group-lg > .btn-circle.btn {\r\n height: 3.5rem;\r\n width: 3.5rem;\r\n font-size: 1.35rem;\r\n }\r\n\r\n .btn-icon-split {\r\n padding: 0;\r\n display: -webkit-inline-box;\r\n display: -ms-inline-flexbox;\r\n display: inline-flex;\r\n -webkit-box-align: stretch;\r\n -ms-flex-align: stretch;\r\n align-items: stretch;\r\n -webkit-box-pack: center;\r\n -ms-flex-pack: center;\r\n justify-content: center;\r\n overflow: hidden !important;\r\n height: 38px !important;\r\n max-height: 38px !important;\r\n white-space: nowrap;\r\n min-width: 250px !important;\r\n width: 270px !important;\r\n max-width: 270px !important;\r\n }\r\n\r\n .btn-icon-split .icon {\r\n background: rgba(0, 0, 0, 0.15);\r\n display: inline-block;\r\n padding: 0.375rem 0.75rem;\r\n border-bottom-left-radius: 1.35rem;\r\n border-top-left-radius: 1.35rem;\r\n }\r\n\r\n .btn-icon-split .text {\r\n display: inline-block;\r\n padding: 0.375rem 0.75rem;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .btn-icon-split.btn-sm .icon,\r\n .btn-group-sm > .btn-icon-split.btn .icon {\r\n padding: 0.25rem 0.5rem;\r\n }\r\n\r\n .btn-icon-split.btn-sm .text,\r\n .btn-group-sm > .btn-icon-split.btn .text {\r\n padding: 0.25rem 0.5rem;\r\n }\r\n\r\n .btn-icon-split.btn-lg .icon,\r\n .btn-group-lg > .btn-icon-split.btn .icon {\r\n padding: 0.5rem 1rem;\r\n }\r\n\r\n .btn-icon-split.btn-lg .text,\r\n .btn-group-lg > .btn-icon-split.btn .text {\r\n padding: 0.5rem 1rem;\r\n }\r\n\r\n .card .card-header .dropdown {\r\n line-height: 1;\r\n }\r\n\r\n .card .card-header .dropdown .dropdown-menu {\r\n line-height: 1.5;\r\n }\r\n\r\n .card .card-header[data-toggle=\"collapse\"] {\r\n text-decoration: none;\r\n position: relative;\r\n padding: 0.75rem 3.25rem 0.75rem 1.25rem;\r\n }\r\n\r\n .card .card-header[data-toggle=\"collapse\"]::after {\r\n position: absolute;\r\n right: 0;\r\n top: 0;\r\n padding-right: 1.725rem;\r\n line-height: 51px;\r\n font-weight: 900;\r\n content: \"\\\\f107\";\r\n font-family: \"Font Awesome 5 Free\";\r\n color: #d1d3e2;\r\n }\r\n\r\n .card .card-header[data-toggle=\"collapse\"].collapsed {\r\n border-radius: 1.35rem;\r\n }\r\n\r\n .card .card-header[data-toggle=\"collapse\"].collapsed::after {\r\n content: \"\\\\f105\";\r\n }\r\n\r\n .chart-area {\r\n position: relative;\r\n height: 10rem;\r\n width: 100%;\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .chart-area {\r\n height: 20rem;\r\n }\r\n }\r\n\r\n .chart-bar {\r\n position: relative;\r\n height: 10rem;\r\n width: 100%;\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .chart-bar {\r\n height: 20rem;\r\n }\r\n }\r\n\r\n .chart-pie {\r\n position: relative;\r\n height: 15rem;\r\n width: 100%;\r\n }\r\n\r\n @media (min-width: 768px) {\r\n .chart-pie {\r\n height: calc(20rem - 43px) !important;\r\n }\r\n }\r\n\r\n .bg-impressum-image {\r\n background: url(\"/images/login.svg\");\r\n background-position: center;\r\n background-size: cover;\r\n }\r\n\r\n .bg-login-image {\r\n background: url(\"/images/login.svg\");\r\n background-position: center;\r\n background-size: cover;\r\n }\r\n\r\n .error {\r\n color: var(--danger);\r\n font-size: 7rem;\r\n position: relative;\r\n line-height: 1;\r\n width: 12.5rem;\r\n }\r\n\r\n @-webkit-keyframes noise-anim {\r\n 0% {\r\n clip: rect(89px, 9999px, 5px, 0);\r\n }\r\n 5% {\r\n clip: rect(92px, 9999px, 71px, 0);\r\n }\r\n 10% {\r\n clip: rect(63px, 9999px, 67px, 0);\r\n }\r\n 15% {\r\n clip: rect(85px, 9999px, 47px, 0);\r\n }\r\n 20% {\r\n clip: rect(76px, 9999px, 50px, 0);\r\n }\r\n 25% {\r\n clip: rect(99px, 9999px, 10px, 0);\r\n }\r\n 30% {\r\n clip: rect(76px, 9999px, 83px, 0);\r\n }\r\n 35% {\r\n clip: rect(5px, 9999px, 45px, 0);\r\n }\r\n 40% {\r\n clip: rect(3px, 9999px, 11px, 0);\r\n }\r\n 45% {\r\n clip: rect(1px, 9999px, 87px, 0);\r\n }\r\n 50% {\r\n clip: rect(56px, 9999px, 79px, 0);\r\n }\r\n 55% {\r\n clip: rect(12px, 9999px, 54px, 0);\r\n }\r\n 60% {\r\n clip: rect(38px, 9999px, 21px, 0);\r\n }\r\n 65% {\r\n clip: rect(5px, 9999px, 15px, 0);\r\n }\r\n 70% {\r\n clip: rect(20px, 9999px, 75px, 0);\r\n }\r\n 75% {\r\n clip: rect(14px, 9999px, 33px, 0);\r\n }\r\n 80% {\r\n clip: rect(70px, 9999px, 79px, 0);\r\n }\r\n 85% {\r\n clip: rect(68px, 9999px, 78px, 0);\r\n }\r\n 90% {\r\n clip: rect(96px, 9999px, 69px, 0);\r\n }\r\n 95% {\r\n clip: rect(16px, 9999px, 95px, 0);\r\n }\r\n 100% {\r\n clip: rect(96px, 9999px, 60px, 0);\r\n }\r\n }\r\n\r\n @keyframes noise-anim {\r\n 0% {\r\n clip: rect(89px, 9999px, 5px, 0);\r\n }\r\n 5% {\r\n clip: rect(92px, 9999px, 71px, 0);\r\n }\r\n 10% {\r\n clip: rect(63px, 9999px, 67px, 0);\r\n }\r\n 15% {\r\n clip: rect(85px, 9999px, 47px, 0);\r\n }\r\n 20% {\r\n clip: rect(76px, 9999px, 50px, 0);\r\n }\r\n 25% {\r\n clip: rect(99px, 9999px, 10px, 0);\r\n }\r\n 30% {\r\n clip: rect(76px, 9999px, 83px, 0);\r\n }\r\n 35% {\r\n clip: rect(5px, 9999px, 45px, 0);\r\n }\r\n 40% {\r\n clip: rect(3px, 9999px, 11px, 0);\r\n }\r\n 45% {\r\n clip: rect(1px, 9999px, 87px, 0);\r\n }\r\n 50% {\r\n clip: rect(56px, 9999px, 79px, 0);\r\n }\r\n 55% {\r\n clip: rect(12px, 9999px, 54px, 0);\r\n }\r\n 60% {\r\n clip: rect(38px, 9999px, 21px, 0);\r\n }\r\n 65% {\r\n clip: rect(5px, 9999px, 15px, 0);\r\n }\r\n 70% {\r\n clip: rect(20px, 9999px, 75px, 0);\r\n }\r\n 75% {\r\n clip: rect(14px, 9999px, 33px, 0);\r\n }\r\n 80% {\r\n clip: rect(70px, 9999px, 79px, 0);\r\n }\r\n 85% {\r\n clip: rect(68px, 9999px, 78px, 0);\r\n }\r\n 90% {\r\n clip: rect(96px, 9999px, 69px, 0);\r\n }\r\n 95% {\r\n clip: rect(16px, 9999px, 95px, 0);\r\n }\r\n 100% {\r\n clip: rect(96px, 9999px, 60px, 0);\r\n }\r\n }\r\n\r\n .error:after {\r\n content: attr(data-text);\r\n position: absolute;\r\n left: 2px;\r\n text-shadow: -1px 0 var(--danger);\r\n top: 0;\r\n color: var(--gray-dark);\r\n background: var(--light);\r\n overflow: hidden;\r\n clip: rect(0, 900px, 0, 0);\r\n animation: noise-anim 2s infinite linear alternate-reverse;\r\n }\r\n\r\n @-webkit-keyframes noise-anim-2 {\r\n 0% {\r\n clip: rect(50px, 9999px, 32px, 0);\r\n }\r\n 5% {\r\n clip: rect(32px, 9999px, 76px, 0);\r\n }\r\n 10% {\r\n clip: rect(28px, 9999px, 55px, 0);\r\n }\r\n 15% {\r\n clip: rect(64px, 9999px, 11px, 0);\r\n }\r\n 20% {\r\n clip: rect(23px, 9999px, 53px, 0);\r\n }\r\n 25% {\r\n clip: rect(69px, 9999px, 48px, 0);\r\n }\r\n 30% {\r\n clip: rect(84px, 9999px, 66px, 0);\r\n }\r\n 35% {\r\n clip: rect(66px, 9999px, 70px, 0);\r\n }\r\n 40% {\r\n clip: rect(21px, 9999px, 86px, 0);\r\n }\r\n 45% {\r\n clip: rect(70px, 9999px, 85px, 0);\r\n }\r\n 50% {\r\n clip: rect(40px, 9999px, 4px, 0);\r\n }\r\n 55% {\r\n clip: rect(62px, 9999px, 47px, 0);\r\n }\r\n 60% {\r\n clip: rect(17px, 9999px, 97px, 0);\r\n }\r\n 65% {\r\n clip: rect(57px, 9999px, 94px, 0);\r\n }\r\n 70% {\r\n clip: rect(78px, 9999px, 85px, 0);\r\n }\r\n 75% {\r\n clip: rect(97px, 9999px, 48px, 0);\r\n }\r\n 80% {\r\n clip: rect(8px, 9999px, 31px, 0);\r\n }\r\n 85% {\r\n clip: rect(14px, 9999px, 17px, 0);\r\n }\r\n 90% {\r\n clip: rect(92px, 9999px, 92px, 0);\r\n }\r\n 95% {\r\n clip: rect(95px, 9999px, 63px, 0);\r\n }\r\n 100% {\r\n clip: rect(49px, 9999px, 11px, 0);\r\n }\r\n }\r\n\r\n @keyframes noise-anim-2 {\r\n 0% {\r\n clip: rect(50px, 9999px, 32px, 0);\r\n }\r\n 5% {\r\n clip: rect(32px, 9999px, 76px, 0);\r\n }\r\n 10% {\r\n clip: rect(28px, 9999px, 55px, 0);\r\n }\r\n 15% {\r\n clip: rect(64px, 9999px, 11px, 0);\r\n }\r\n 20% {\r\n clip: rect(23px, 9999px, 53px, 0);\r\n }\r\n 25% {\r\n clip: rect(69px, 9999px, 48px, 0);\r\n }\r\n 30% {\r\n clip: rect(84px, 9999px, 66px, 0);\r\n }\r\n 35% {\r\n clip: rect(66px, 9999px, 70px, 0);\r\n }\r\n 40% {\r\n clip: rect(21px, 9999px, 86px, 0);\r\n }\r\n 45% {\r\n clip: rect(70px, 9999px, 85px, 0);\r\n }\r\n 50% {\r\n clip: rect(40px, 9999px, 4px, 0);\r\n }\r\n 55% {\r\n clip: rect(62px, 9999px, 47px, 0);\r\n }\r\n 60% {\r\n clip: rect(17px, 9999px, 97px, 0);\r\n }\r\n 65% {\r\n clip: rect(57px, 9999px, 94px, 0);\r\n }\r\n 70% {\r\n clip: rect(78px, 9999px, 85px, 0);\r\n }\r\n 75% {\r\n clip: rect(97px, 9999px, 48px, 0);\r\n }\r\n 80% {\r\n clip: rect(8px, 9999px, 31px, 0);\r\n }\r\n 85% {\r\n clip: rect(14px, 9999px, 17px, 0);\r\n }\r\n 90% {\r\n clip: rect(92px, 9999px, 92px, 0);\r\n }\r\n 95% {\r\n clip: rect(95px, 9999px, 63px, 0);\r\n }\r\n 100% {\r\n clip: rect(49px, 9999px, 11px, 0);\r\n }\r\n }\r\n\r\n .error:before {\r\n content: attr(data-text);\r\n position: absolute;\r\n left: -2px;\r\n text-shadow: 1px 0 var(--primary);\r\n top: 0;\r\n color: var(--danger);\r\n background: var(--light);\r\n overflow: hidden;\r\n clip: rect(0, 900px, 0, 0);\r\n animation: noise-anim-2 3s infinite linear alternate-reverse;\r\n }\r\n\r\n footer.sticky-footer {\r\n padding: 2rem 0;\r\n -ms-flex-negative: 0;\r\n flex-shrink: 0;\r\n }\r\n\r\n footer.sticky-footer .copyright {\r\n line-height: 1;\r\n font-size: 0.8rem;\r\n }\r\n\r\n body.sidebar-toggled footer.sticky-footer {\r\n width: 100%;\r\n }\r\n\r\n .dataTables_length {\r\n padding-top: 5px;\r\n float: left;\r\n }\r\n .overlay {\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n position: fixed;\r\n background: rgb(255 255 255 / 50%);\r\n z-index: 100;\r\n }\r\n\r\n .overlay_inner {\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n position: absolute;\r\n z-index: 105;\r\n }\r\n\r\n .overlay_content {\r\n left: 50%;\r\n position: absolute;\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n z-index: 110;\r\n }\r\n`;\r\n","import { css } from \"lit\";\r\n\r\nexport const AlgoStyles = css`\r\n body {\r\n margin: 0;\r\n font-family: Roboto, \"Nunito\", -apple-system, BlinkMacSystemFont,\r\n \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\",\r\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\r\n font-size: 1rem;\r\n font-weight: 400;\r\n line-height: 1.5;\r\n color: #858796;\r\n text-align: left;\r\n background-color: #fff;\r\n }\r\n\r\n .administration {\r\n float: right;\r\n width: 33%;\r\n padding-left: 20px;\r\n margin-bottom: 20px;\r\n }\r\n\r\n .de-DE {\r\n content: url(/images/german.png);\r\n width: 25px;\r\n height: 25px;\r\n border-radius: 50%;\r\n }\r\n\r\n .en-EN {\r\n content: url(/images/england.png);\r\n width: 25px;\r\n height: 25px;\r\n border-radius: 50%;\r\n }\r\n\r\n .selected-language {\r\n height: 30px !important;\r\n width: 30px !important;\r\n }\r\n\r\n .dashboard {\r\n float: left;\r\n width: 67%;\r\n box-shadow: inset #858796 -3px 0px 0px 0px;\r\n padding-right: 23px;\r\n min-height: 80vh;\r\n margin-bottom: 20px;\r\n }\r\n\r\n .text-color {\r\n color: #6e707eff !important;\r\n }\r\n\r\n .btn-icon-split {\r\n display: block;\r\n }\r\n\r\n .btn-icon-split .icon {\r\n float: left !important;\r\n width: 44px !important;\r\n }\r\n\r\n .view {\r\n display: none;\r\n }\r\n\r\n .view[active] {\r\n display: block;\r\n }\r\n\r\n .page {\r\n display: none;\r\n }\r\n\r\n .page[active] {\r\n display: block;\r\n }\r\n\r\n bs-card {\r\n width: 100%;\r\n }\r\n\r\n .tooltip {\r\n font-family: Roboto;\r\n }\r\n\r\n .popover {\r\n font-family: Roboto;\r\n }\r\n\r\n .item-header-text-color {\r\n color: rgb(245, 187, 0) !important;\r\n padding-left: 30px !important;\r\n }\r\n\r\n .nav-icons {\r\n height: 24px;\r\n }\r\n\r\n .text-primary {\r\n color: #4e73df;\r\n }\r\n\r\n .page-link {\r\n color: #414142 !important;\r\n }\r\n\r\n .action-btn {\r\n color: #414142 !important;\r\n }\r\n\r\n .page-link:hover {\r\n color: #414142 !important;\r\n background-color: #c8c8c8;\r\n }\r\n\r\n .page-link:focus {\r\n -webkit-box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);\r\n }\r\n\r\n .page-item.active .page-link {\r\n background-color: #414142;\r\n border-color: #414142;\r\n text-decoration: none;\r\n }\r\n\r\n a.no-arrow::after {\r\n display: none !important;\r\n }\r\n\r\n ::-webkit-scrollbar {\r\n width: 8px;\r\n height: 8px;\r\n background-color: #f8f9fc;\r\n }\r\n\r\n ::-webkit-scrollbar-thumb {\r\n background: #aaaaaa;\r\n }\r\n\r\n ::-webkit-scrollbar-button:single-button {\r\n background-color: #bbbbbb;\r\n display: block;\r\n border-style: solid;\r\n border-width: 1px;\r\n }\r\n\r\n ::-webkit-scrollbar-button:horizontal:end:increment {\r\n background: linear-gradient(210deg, #aaaaaa 40%, rgba(0, 0, 0, 0) 41%),\r\n linear-gradient(330deg, #aaaaaa 40%, rgba(0, 0, 0, 0) 41%),\r\n linear-gradient(90deg, #aaaaaa 30%, rgba(0, 0, 0, 0) 31%);\r\n background-color: #f8f9fc;\r\n }\r\n\r\n ::-webkit-scrollbar-button:horizontal:start:decrement {\r\n background: linear-gradient(30deg, #aaaaaa 40%, rgba(0, 0, 0, 0) 41%),\r\n linear-gradient(150deg, #aaaaaa 40%, rgba(0, 0, 0, 0) 41%),\r\n linear-gradient(270deg, #aaaaaa 30%, rgba(0, 0, 0, 0) 31%);\r\n background-color: #f8f9fc;\r\n }\r\n\r\n .content-center {\r\n margin: 0;\r\n position: absolute;\r\n top: 50%;\r\n -ms-transform: translate(0%, -50%);\r\n transform: translate(0%, -50%);\r\n width: 100%;\r\n }\r\n\r\n a.no-arrow::after {\r\n display: none !important;\r\n }\r\n .identity-container {\r\n height: 600px;\r\n }\r\n\r\n .identity-center {\r\n margin: 0;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n -ms-transform: translate(-50%, -50%);\r\n transform: translate(-50%, -50%);\r\n max-width: 1400px;\r\n }\r\n\r\n a {\r\n color: #fff;\r\n cursor: pointer;\r\n }\r\n\r\n a.nav-link {\r\n color: #6e707e !important;\r\n }\r\n\r\n .action-container {\r\n justify-content: space-evenly;\r\n display: flex;\r\n }\r\n .edit,\r\n .copy,\r\n .navigation,\r\n .update,\r\n .sperren,\r\n .show-file,\r\n .download,\r\n .download-vorlage,\r\n .pruefen,\r\n .entpruefen,\r\n .sperren,\r\n .entsperren,\r\n .print,\r\n .upload,\r\n .send-mail {\r\n color: rgb(64, 64, 64) !important;\r\n }\r\n .actions {\r\n pointer-events: all;\r\n padding-right: 2.5px;\r\n padding-left: 2.5px;\r\n }\r\n\r\n .erstellen-icon::before {\r\n background-color: #939393 !important;\r\n color: rgb(64, 64, 64) !important;\r\n border-radius: 50% !important;\r\n border: 1px solid #939393 !important;\r\n }\r\n\r\n a[disabled] {\r\n color: gray !important;\r\n opacity: 0.65 !important;\r\n cursor: not-allowed !important;\r\n pointer-events: none !important;\r\n }\r\n .dt-down-arrow {\r\n visibility: hidden;\r\n }\r\n\r\n .actions > i {\r\n font-size: 21px;\r\n }\r\n\r\n a:not([href]):not([tabindex]) {\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n\r\n a:not([href]):not([tabindex]):hover,\r\n a:not([href]):not([tabindex]):focus {\r\n color: #fff;\r\n text-decoration: none;\r\n }\r\n .tool-tip[disabled],\r\n .tool-tip:disabled {\r\n color: gray !important;\r\n opacity: 0.65 !important;\r\n cursor: not-allowed !important;\r\n }\r\n\r\n a.btn[disabled] {\r\n background-color: gray;\r\n border-color: gray;\r\n }\r\n\r\n .sidebar-dark .nav-item .nav-link {\r\n color: #a2a2a2 !important;\r\n }\r\n\r\n .sidebar-dark .nav-item .nav-link i {\r\n color: #a2a2a2;\r\n }\r\n\r\n .sidebar-dark .nav-item.active .nav-link {\r\n color: #fff !important;\r\n }\r\n\r\n .sidebar-dark .nav-item .nav-link:hover {\r\n color: #fff !important;\r\n }\r\n\r\n .sidebar-dark .nav-item.active .nav-link i {\r\n color: #fff !important;\r\n }\r\n\r\n .bg-algo-dark {\r\n background-color: #414142;\r\n }\r\n\r\n .bg-algo-medium {\r\n background-color: #585656;\r\n }\r\n\r\n .bg-algo-light {\r\n background-color: #c8c8c8;\r\n }\r\n\r\n .bg-gradient-primary {\r\n background-color: rgb(64, 64, 64);\r\n background-image: -webkit-gradient(\r\n linear,\r\n left top,\r\n left bottom,\r\n color-stop(10%, #424241),\r\n to(#222222)\r\n );\r\n background-image: linear-gradient(\r\n 180deg,\r\n rgb(64, 64, 64) 10%,\r\n #222222 100%\r\n );\r\n background-size: cover;\r\n }\r\n\r\n .dropdown-item:active,\r\n .dropdown-ausweis-item:active {\r\n background-color: #c8c8c8;\r\n }\r\n\r\n .custom-control-input:checked ~ .custom-control-label::before {\r\n border-color: #585656;\r\n background-color: #585656;\r\n }\r\n\r\n .custom-control-input:focus ~ .custom-control-label::before {\r\n box-shadow: #c8c8c8 0px 0px 0px 0.2rem;\r\n }\r\n\r\n .custom-checkbox\r\n .custom-control-input:disabled:checked\r\n ~ .custom-control-label::before {\r\n background-color: rgba(78, 78, 78, 0.5);\r\n }\r\n\r\n .custom-checkbox\r\n .custom-control-input:indeterminate\r\n ~ .custom-control-label::before {\r\n border-color: #585656;\r\n background-color: #585656;\r\n }\r\n\r\n .custom-select:focus {\r\n box-shadow: #c8c8c8 0px 0px 0px 0.2rem;\r\n border-color: #c8c8c8;\r\n }\r\n\r\n button:focus {\r\n outline: 0;\r\n }\r\n\r\n .rounded-circle {\r\n border: 1px solid #cccccc;\r\n }\r\n\r\n .sidebar .nav-item .nav-link {\r\n padding: 0 1rem 0.75rem 1rem;\r\n }\r\n\r\n .sidebar hr.sidebar-divider {\r\n margin: 0 1rem 0.75rem 1rem;\r\n }\r\n\r\n .sidebar-heading {\r\n margin-bottom: 0.75rem;\r\n }\r\n\r\n .sidebar.toggled .nav-item .nav-link {\r\n padding: 0 1rem 0.75rem 1rem !important;\r\n }\r\n\r\n label.col-sm-4 {\r\n text-align: right !important;\r\n }\r\n\r\n .asd-sub-col-label {\r\n font-size: small !important;\r\n font-weight: bold !important;\r\n padding-left: 20px !important;\r\n }\r\n .asd-sub-sub-col-label {\r\n font-size: small !important;\r\n font-weight: bold !important;\r\n padding-left: 82px !important;\r\n }\r\n\r\n .asd-sub-sub-sub-col-label {\r\n font-size: small !important;\r\n font-weight: bold !important;\r\n padding-left: 144px !important;\r\n }\r\n .asd-sub-sub-sub-sub-col-label {\r\n font-size: small !important;\r\n font-weight: bold !important;\r\n padding-left: 205px !important;\r\n }\r\n .asd-sub-col-radio {\r\n padding-left: 10px !important;\r\n }\r\n .asd-sub-sub-col-radio {\r\n padding-left: 82px !important;\r\n }\r\n\r\n .asd-sub-sub-sub-col-radio {\r\n padding-left: 144px !important;\r\n }\r\n .asd-sub-sub-sub-sub-col-radio {\r\n padding-left: 205px !important;\r\n }\r\n\r\n label.asd-col-link {\r\n color: #858796ff !important;\r\n font-size: small !important;\r\n font-weight: bold !important;\r\n padding-left: 5px !important;\r\n text-decoration: underline !important;\r\n }\r\n label.asd-helper-text-title {\r\n font-size: 16px !important;\r\n color: #858796ff !important;\r\n font-weight: bold !important;\r\n }\r\n .form-control.number {\r\n float: right;\r\n width: 75px;\r\n }\r\n\r\n .fading-hr-70 {\r\n margin: 26px 0px;\r\n height: 1px;\r\n border: 0px;\r\n background: -webkit-gradient(\r\n linear,\r\n 0 0,\r\n 70% 0,\r\n from(rgb(255, 255, 255)),\r\n to(rgb(255, 255, 255)),\r\n color-stop(0.5, rgb(194, 194, 194))\r\n );\r\n }\r\n\r\n .fading-hr {\r\n margin: 25px 0;\r\n height: 1px;\r\n border: 0;\r\n background: black;\r\n background: -webkit-gradient(\r\n linear,\r\n 0 0,\r\n 100% 0,\r\n from(#ffffff),\r\n to(#ffffff),\r\n color-stop(50%, #c2c2c2)\r\n );\r\n }\r\n\r\n .fading-hr-projekt {\r\n margin: 25px 0;\r\n height: 1px;\r\n border: 0;\r\n background: black;\r\n background: -webkit-gradient(\r\n linear,\r\n 0 0,\r\n 100% 0,\r\n from(#ffffff),\r\n to(#ffffff),\r\n color-stop(50%, #823d8f)\r\n );\r\n }\r\n\r\n .fading-hr-zuko {\r\n margin: 25px 0;\r\n height: 1px;\r\n border: 0;\r\n background: black;\r\n background: -webkit-gradient(\r\n linear,\r\n 0 0,\r\n 100% 0,\r\n from(#ffffff),\r\n to(#ffffff),\r\n color-stop(50%, #d34a4a)\r\n );\r\n }\r\n\r\n label.col-sm-4 {\r\n font-weight: bold;\r\n }\r\n\r\n @media (min-width: 900px) {\r\n .sidebar .nav-item .nav-link {\r\n padding: 0 1rem 0.75rem 1rem;\r\n }\r\n .sidebar.toggled .nav-item .nav-link {\r\n padding: 0 1rem 0.75rem 1rem;\r\n }\r\n }\r\n\r\n /* cyrillic-ext */\r\n /* cyrillic-ext */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 400;\r\n src: local(\"Roboto\"), local(\"Roboto-Regular\"),\r\n url(../css/fonts/roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF,\r\n U+A640-A69F, U+FE2E-FE2F;\r\n }\r\n /* cyrillic */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 400;\r\n src: local(\"Roboto\"), local(\"Roboto-Regular\"),\r\n url(../css/fonts/roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\r\n }\r\n /* greek-ext */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 400;\r\n src: local(\"Roboto\"), local(\"Roboto-Regular\"),\r\n url(../css/fonts/roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+1F00-1FFF;\r\n }\r\n /* greek */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 400;\r\n src: local(\"Roboto\"), local(\"Roboto-Regular\"),\r\n url(../css/fonts/roboto/KFOmCnqEu92Fr1Mu4WxKOzY.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0370-03FF;\r\n }\r\n /* vietnamese */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 400;\r\n src: local(\"Roboto\"), local(\"Roboto-Regular\"),\r\n url(../css/fonts/roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\r\n }\r\n /* latin-ext */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 400;\r\n src: local(\"Roboto\"), local(\"Roboto-Regular\"),\r\n url(../css/fonts/roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\r\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\r\n }\r\n /* latin */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 400;\r\n src: local(\"Roboto\"), local(\"Roboto-Regular\"),\r\n url(../css/fonts/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2) format(\"woff2\");\r\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,\r\n U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,\r\n U+2212, U+2215, U+FEFF, U+FFFD;\r\n }\r\n /* cyrillic-ext */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 700;\r\n src: local(\"Roboto Bold\"), local(\"Roboto-Bold\"),\r\n url(../css/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF,\r\n U+A640-A69F, U+FE2E-FE2F;\r\n }\r\n /* cyrillic */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 700;\r\n src: local(\"Roboto Bold\"), local(\"Roboto-Bold\"),\r\n url(../css/fonts/roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\r\n }\r\n /* greek-ext */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 700;\r\n src: local(\"Roboto Bold\"), local(\"Roboto-Bold\"),\r\n url(../css/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+1F00-1FFF;\r\n }\r\n /* greek */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 700;\r\n src: local(\"Roboto Bold\"), local(\"Roboto-Bold\"),\r\n url(../css/fonts/roboto/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0370-03FF;\r\n }\r\n /* vietnamese */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 700;\r\n src: local(\"Roboto Bold\"), local(\"Roboto-Bold\"),\r\n url(../css/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;\r\n }\r\n /* latin-ext */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 700;\r\n src: local(\"Roboto Bold\"), local(\"Roboto-Bold\"),\r\n url(../css/fonts/roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\r\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\r\n }\r\n /* latin */\r\n @font-face {\r\n font-family: \"Roboto\";\r\n font-style: normal;\r\n font-weight: 700;\r\n src: local(\"Roboto Bold\"), local(\"Roboto-Bold\"),\r\n url(../css/fonts/roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2)\r\n format(\"woff2\");\r\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,\r\n U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,\r\n U+2212, U+2215, U+FEFF, U+FFFD;\r\n }\r\n`;\r\n","import { css } from \"lit\";\r\n\r\nexport const FontawesomeIcons = css`\r\n.fa,\r\n.fas,\r\n.far,\r\n.fal,\r\n.fab {\r\n -moz-osx-font-smoothing: grayscale;\r\n -webkit-font-smoothing: antialiased;\r\n display: inline-block;\r\n font-style: normal;\r\n font-variant: normal;\r\n text-rendering: auto;\r\n line-height: 1; }\r\n\r\n.fa-lg {\r\n font-size: 1.33333em;\r\n line-height: 0.75em;\r\n vertical-align: -.0667em; }\r\n\r\n.fa-xs {\r\n font-size: .75em; }\r\n\r\n.fa-sm {\r\n font-size: .875em; }\r\n\r\n.fa-1x {\r\n font-size: 1em; }\r\n\r\n.fa-2x {\r\n font-size: 2em; }\r\n\r\n.fa-3x {\r\n font-size: 3em; }\r\n\r\n.fa-4x {\r\n font-size: 4em; }\r\n\r\n.fa-5x {\r\n font-size: 5em; }\r\n\r\n.fa-6x {\r\n font-size: 6em; }\r\n\r\n.fa-7x {\r\n font-size: 7em; }\r\n\r\n.fa-8x {\r\n font-size: 8em; }\r\n\r\n.fa-9x {\r\n font-size: 9em; }\r\n\r\n.fa-10x {\r\n font-size: 10em; }\r\n\r\n.fa-fw {\r\n text-align: center;\r\n width: 1.25em; }\r\n\r\n.fa-ul {\r\n list-style-type: none;\r\n margin-left: 2.5em;\r\n padding-left: 0; }\r\n .fa-ul > li {\r\n position: relative; }\r\n\r\n.fa-li {\r\n left: -2em;\r\n position: absolute;\r\n text-align: center;\r\n width: 2em;\r\n line-height: inherit; }\r\n\r\n.fa-border {\r\n border: solid 0.08em #eee;\r\n border-radius: .1em;\r\n padding: .2em .25em .15em; }\r\n\r\n.fa-pull-left {\r\n float: left; }\r\n\r\n.fa-pull-right {\r\n float: right; }\r\n\r\n.fa.fa-pull-left,\r\n.fas.fa-pull-left,\r\n.far.fa-pull-left,\r\n.fal.fa-pull-left,\r\n.fab.fa-pull-left {\r\n margin-right: .3em; }\r\n\r\n.fa.fa-pull-right,\r\n.fas.fa-pull-right,\r\n.far.fa-pull-right,\r\n.fal.fa-pull-right,\r\n.fab.fa-pull-right {\r\n margin-left: .3em; }\r\n\r\n.fa-spin {\r\n -webkit-animation: fa-spin 2s infinite linear;\r\n animation: fa-spin 2s infinite linear; }\r\n\r\n.fa-pulse {\r\n -webkit-animation: fa-spin 1s infinite steps(8);\r\n animation: fa-spin 1s infinite steps(8); }\r\n\r\n@-webkit-keyframes fa-spin {\r\n 0% {\r\n -webkit-transform: rotate(0deg);\r\n transform: rotate(0deg); }\r\n 100% {\r\n -webkit-transform: rotate(360deg);\r\n transform: rotate(360deg); } }\r\n\r\n@keyframes fa-spin {\r\n 0% {\r\n -webkit-transform: rotate(0deg);\r\n transform: rotate(0deg); }\r\n 100% {\r\n -webkit-transform: rotate(360deg);\r\n transform: rotate(360deg); } }\r\n\r\n.fa-rotate-90 {\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\r\n -webkit-transform: rotate(90deg);\r\n transform: rotate(90deg); }\r\n\r\n.fa-rotate-180 {\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\r\n -webkit-transform: rotate(180deg);\r\n transform: rotate(180deg); }\r\n\r\n.fa-rotate-270 {\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\r\n -webkit-transform: rotate(270deg);\r\n transform: rotate(270deg); }\r\n\r\n.fa-flip-horizontal {\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\r\n -webkit-transform: scale(-1, 1);\r\n transform: scale(-1, 1); }\r\n\r\n.fa-flip-vertical {\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\r\n -webkit-transform: scale(1, -1);\r\n transform: scale(1, -1); }\r\n\r\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\r\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\r\n -webkit-transform: scale(-1, -1);\r\n transform: scale(-1, -1); }\r\n\r\n:root .fa-rotate-90,\r\n:root .fa-rotate-180,\r\n:root .fa-rotate-270,\r\n:root .fa-flip-horizontal,\r\n:root .fa-flip-vertical,\r\n:root .fa-flip-both {\r\n -webkit-filter: none;\r\n filter: none; }\r\n\r\n.fa-stack {\r\n display: inline-block;\r\n height: 2em;\r\n line-height: 2em;\r\n position: relative;\r\n vertical-align: middle;\r\n width: 2.5em; }\r\n\r\n.fa-stack-1x,\r\n.fa-stack-2x {\r\n left: 0;\r\n position: absolute;\r\n text-align: center;\r\n width: 100%; }\r\n\r\n.fa-stack-1x {\r\n line-height: inherit; }\r\n\r\n.fa-stack-2x {\r\n font-size: 2em; }\r\n\r\n.fa-inverse {\r\n color: #fff; }\r\n\r\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\r\nreaders do not read off random characters that represent icons */\r\n.fa-500px:before {\r\n content: \"\\\\f26e\"; }\r\n\r\n.fa-accessible-icon:before {\r\n content: \"\\\\f368\"; }\r\n\r\n.fa-accusoft:before {\r\n content: \"\\\\f369\"; }\r\n\r\n.fa-acquisitions-incorporated:before {\r\n content: \"\\\\f6af\"; }\r\n\r\n.fa-ad:before {\r\n content: \"\\\\f641\"; }\r\n\r\n.fa-address-book:before {\r\n content: \"\\\\f2b9\"; }\r\n\r\n.fa-address-card:before {\r\n content: \"\\\\f2bb\"; }\r\n\r\n.fa-adjust:before {\r\n content: \"\\\\f042\"; }\r\n\r\n.fa-adn:before {\r\n content: \"\\\\f170\"; }\r\n\r\n.fa-adobe:before {\r\n content: \"\\\\f778\"; }\r\n\r\n.fa-adversal:before {\r\n content: \"\\\\f36a\"; }\r\n\r\n.fa-affiliatetheme:before {\r\n content: \"\\\\f36b\"; }\r\n\r\n.fa-air-freshener:before {\r\n content: \"\\\\f5d0\"; }\r\n\r\n.fa-algolia:before {\r\n content: \"\\\\f36c\"; }\r\n\r\n.fa-align-center:before {\r\n content: \"\\\\f037\"; }\r\n\r\n.fa-align-justify:before {\r\n content: \"\\\\f039\"; }\r\n\r\n.fa-align-left:before {\r\n content: \"\\\\f036\"; }\r\n\r\n.fa-align-right:before {\r\n content: \"\\\\f038\"; }\r\n\r\n.fa-alipay:before {\r\n content: \"\\\\f642\"; }\r\n\r\n.fa-allergies:before {\r\n content: \"\\\\f461\"; }\r\n\r\n.fa-amazon:before {\r\n content: \"\\\\f270\"; }\r\n\r\n.fa-amazon-pay:before {\r\n content: \"\\\\f42c\"; }\r\n\r\n.fa-ambulance:before {\r\n content: \"\\\\f0f9\"; }\r\n\r\n.fa-american-sign-language-interpreting:before {\r\n content: \"\\\\f2a3\"; }\r\n\r\n.fa-amilia:before {\r\n content: \"\\\\f36d\"; }\r\n\r\n.fa-anchor:before {\r\n content: \"\\\\f13d\"; }\r\n\r\n.fa-android:before {\r\n content: \"\\\\f17b\"; }\r\n\r\n.fa-angellist:before {\r\n content: \"\\\\f209\"; }\r\n\r\n.fa-angle-double-down:before {\r\n content: \"\\\\f103\"; }\r\n\r\n.fa-angle-double-left:before {\r\n content: \"\\\\f100\"; }\r\n\r\n.fa-angle-double-right:before {\r\n content: \"\\\\f101\"; }\r\n\r\n.fa-angle-double-up:before {\r\n content: \"\\\\f102\"; }\r\n\r\n.fa-angle-down:before {\r\n content: \"\\\\f107\"; }\r\n\r\n.fa-angle-left:before {\r\n content: \"\\\\f104\"; }\r\n\r\n.fa-angle-right:before {\r\n content: \"\\\\f105\"; }\r\n\r\n.fa-angle-up:before {\r\n content: \"\\\\f106\"; }\r\n\r\n.fa-angry:before {\r\n content: \"\\\\f556\"; }\r\n\r\n.fa-angrycreative:before {\r\n content: \"\\\\f36e\"; }\r\n\r\n.fa-angular:before {\r\n content: \"\\\\f420\"; }\r\n\r\n.fa-ankh:before {\r\n content: \"\\\\f644\"; }\r\n\r\n.fa-app-store:before {\r\n content: \"\\\\f36f\"; }\r\n\r\n.fa-app-store-ios:before {\r\n content: \"\\\\f370\"; }\r\n\r\n.fa-apper:before {\r\n content: \"\\\\f371\"; }\r\n\r\n.fa-apple:before {\r\n content: \"\\\\f179\"; }\r\n\r\n.fa-apple-alt:before {\r\n content: \"\\\\f5d1\"; }\r\n\r\n.fa-apple-pay:before {\r\n content: \"\\\\f415\"; }\r\n\r\n.fa-archive:before {\r\n content: \"\\\\f187\"; }\r\n\r\n.fa-archway:before {\r\n content: \"\\\\f557\"; }\r\n\r\n.fa-arrow-alt-circle-down:before {\r\n content: \"\\\\f358\"; }\r\n\r\n.fa-arrow-alt-circle-left:before {\r\n content: \"\\\\f359\"; }\r\n\r\n.fa-arrow-alt-circle-right:before {\r\n content: \"\\\\f35a\"; }\r\n\r\n.fa-arrow-alt-circle-up:before {\r\n content: \"\\\\f35b\"; }\r\n\r\n.fa-arrow-circle-down:before {\r\n content: \"\\\\f0ab\"; }\r\n\r\n.fa-arrow-circle-left:before {\r\n content: \"\\\\f0a8\"; }\r\n\r\n.fa-arrow-circle-right:before {\r\n content: \"\\\\f0a9\"; }\r\n\r\n.fa-arrow-circle-up:before {\r\n content: \"\\\\f0aa\"; }\r\n\r\n.fa-arrow-down:before {\r\n content: \"\\\\f063\"; }\r\n\r\n.fa-arrow-left:before {\r\n content: \"\\\\f060\"; }\r\n\r\n.fa-arrow-right:before {\r\n content: \"\\\\f061\"; }\r\n\r\n.fa-arrow-up:before {\r\n content: \"\\\\f062\"; }\r\n\r\n.fa-arrows-alt:before {\r\n content: \"\\\\f0b2\"; }\r\n\r\n.fa-arrows-alt-h:before {\r\n content: \"\\\\f337\"; }\r\n\r\n.fa-arrows-alt-v:before {\r\n content: \"\\\\f338\"; }\r\n\r\n.fa-artstation:before {\r\n content: \"\\\\f77a\"; }\r\n\r\n.fa-assistive-listening-systems:before {\r\n content: \"\\\\f2a2\"; }\r\n\r\n.fa-asterisk:before {\r\n content: \"\\\\f069\"; }\r\n\r\n.fa-asymmetrik:before {\r\n content: \"\\\\f372\"; }\r\n\r\n.fa-at:before {\r\n content: \"\\\\f1fa\"; }\r\n\r\n.fa-atlas:before {\r\n content: \"\\\\f558\"; }\r\n\r\n.fa-atlassian:before {\r\n content: \"\\\\f77b\"; }\r\n\r\n.fa-atom:before {\r\n content: \"\\\\f5d2\"; }\r\n\r\n.fa-audible:before {\r\n content: \"\\\\f373\"; }\r\n\r\n.fa-audio-description:before {\r\n content: \"\\\\f29e\"; }\r\n\r\n.fa-autoprefixer:before {\r\n content: \"\\\\f41c\"; }\r\n\r\n.fa-avianex:before {\r\n content: \"\\\\f374\"; }\r\n\r\n.fa-aviato:before {\r\n content: \"\\\\f421\"; }\r\n\r\n.fa-award:before {\r\n content: \"\\\\f559\"; }\r\n\r\n.fa-aws:before {\r\n content: \"\\\\f375\"; }\r\n\r\n.fa-baby:before {\r\n content: \"\\\\f77c\"; }\r\n\r\n.fa-baby-carriage:before {\r\n content: \"\\\\f77d\"; }\r\n\r\n.fa-backspace:before {\r\n content: \"\\\\f55a\"; }\r\n\r\n.fa-backward:before {\r\n content: \"\\\\f04a\"; }\r\n\r\n.fa-bacon:before {\r\n content: \"\\\\f7e5\"; }\r\n\r\n.fa-balance-scale:before {\r\n content: \"\\\\f24e\"; }\r\n\r\n.fa-ban:before {\r\n content: \"\\\\f05e\"; }\r\n\r\n.fa-band-aid:before {\r\n content: \"\\\\f462\"; }\r\n\r\n.fa-bandcamp:before {\r\n content: \"\\\\f2d5\"; }\r\n\r\n.fa-barcode:before {\r\n content: \"\\\\f02a\"; }\r\n\r\n.fa-bars:before {\r\n content: \"\\\\f0c9\"; }\r\n\r\n.fa-baseball-ball:before {\r\n content: \"\\\\f433\"; }\r\n\r\n.fa-basketball-ball:before {\r\n content: \"\\\\f434\"; }\r\n\r\n.fa-bath:before {\r\n content: \"\\\\f2cd\"; }\r\n\r\n.fa-battery-empty:before {\r\n content: \"\\\\f244\"; }\r\n\r\n.fa-battery-full:before {\r\n content: \"\\\\f240\"; }\r\n\r\n.fa-battery-half:before {\r\n content: \"\\\\f242\"; }\r\n\r\n.fa-battery-quarter:before {\r\n content: \"\\\\f243\"; }\r\n\r\n.fa-battery-three-quarters:before {\r\n content: \"\\\\f241\"; }\r\n\r\n.fa-bed:before {\r\n content: \"\\\\f236\"; }\r\n\r\n.fa-beer:before {\r\n content: \"\\\\f0fc\"; }\r\n\r\n.fa-behance:before {\r\n content: \"\\\\f1b4\"; }\r\n\r\n.fa-behance-square:before {\r\n content: \"\\\\f1b5\"; }\r\n\r\n.fa-bell:before {\r\n content: \"\\\\f0f3\"; }\r\n\r\n.fa-bell-slash:before {\r\n content: \"\\\\f1f6\"; }\r\n\r\n.fa-bezier-curve:before {\r\n content: \"\\\\f55b\"; }\r\n\r\n.fa-bible:before {\r\n content: \"\\\\f647\"; }\r\n\r\n.fa-bicycle:before {\r\n content: \"\\\\f206\"; }\r\n\r\n.fa-bimobject:before {\r\n content: \"\\\\f378\"; }\r\n\r\n.fa-binoculars:before {\r\n content: \"\\\\f1e5\"; }\r\n\r\n.fa-biohazard:before {\r\n content: \"\\\\f780\"; }\r\n\r\n.fa-birthday-cake:before {\r\n content: \"\\\\f1fd\"; }\r\n\r\n.fa-bitbucket:before {\r\n content: \"\\\\f171\"; }\r\n\r\n.fa-bitcoin:before {\r\n content: \"\\\\f379\"; }\r\n\r\n.fa-bity:before {\r\n content: \"\\\\f37a\"; }\r\n\r\n.fa-black-tie:before {\r\n content: \"\\\\f27e\"; }\r\n\r\n.fa-blackberry:before {\r\n content: \"\\\\f37b\"; }\r\n\r\n.fa-blender:before {\r\n content: \"\\\\f517\"; }\r\n\r\n.fa-blender-phone:before {\r\n content: \"\\\\f6b6\"; }\r\n\r\n.fa-blind:before {\r\n content: \"\\\\f29d\"; }\r\n\r\n.fa-blog:before {\r\n content: \"\\\\f781\"; }\r\n\r\n.fa-blogger:before {\r\n content: \"\\\\f37c\"; }\r\n\r\n.fa-blogger-b:before {\r\n content: \"\\\\f37d\"; }\r\n\r\n.fa-bluetooth:before {\r\n content: \"\\\\f293\"; }\r\n\r\n.fa-bluetooth-b:before {\r\n content: \"\\\\f294\"; }\r\n\r\n.fa-bold:before {\r\n content: \"\\\\f032\"; }\r\n\r\n.fa-bolt:before {\r\n content: \"\\\\f0e7\"; }\r\n\r\n.fa-bomb:before {\r\n content: \"\\\\f1e2\"; }\r\n\r\n.fa-bone:before {\r\n content: \"\\\\f5d7\"; }\r\n\r\n.fa-bong:before {\r\n content: \"\\\\f55c\"; }\r\n\r\n.fa-book:before {\r\n content: \"\\\\f02d\"; }\r\n\r\n.fa-book-dead:before {\r\n content: \"\\\\f6b7\"; }\r\n\r\n.fa-book-medical:before {\r\n content: \"\\\\f7e6\"; }\r\n\r\n.fa-book-open:before {\r\n content: \"\\\\f518\"; }\r\n\r\n.fa-book-reader:before {\r\n content: \"\\\\f5da\"; }\r\n\r\n.fa-bookmark:before {\r\n content: \"\\\\f02e\"; }\r\n\r\n.fa-bowling-ball:before {\r\n content: \"\\\\f436\"; }\r\n\r\n.fa-box:before {\r\n content: \"\\\\f466\"; }\r\n\r\n.fa-box-open:before {\r\n content: \"\\\\f49e\"; }\r\n\r\n.fa-boxes:before {\r\n content: \"\\\\f468\"; }\r\n\r\n.fa-braille:before {\r\n content: \"\\\\f2a1\"; }\r\n\r\n.fa-brain:before {\r\n content: \"\\\\f5dc\"; }\r\n\r\n.fa-bread-slice:before {\r\n content: \"\\\\f7ec\"; }\r\n\r\n.fa-briefcase:before {\r\n content: \"\\\\f0b1\"; }\r\n\r\n.fa-briefcase-medical:before {\r\n content: \"\\\\f469\"; }\r\n\r\n.fa-broadcast-tower:before {\r\n content: \"\\\\f519\"; }\r\n\r\n.fa-broom:before {\r\n content: \"\\\\f51a\"; }\r\n\r\n.fa-brush:before {\r\n content: \"\\\\f55d\"; }\r\n\r\n.fa-btc:before {\r\n content: \"\\\\f15a\"; }\r\n\r\n.fa-bug:before {\r\n content: \"\\\\f188\"; }\r\n\r\n.fa-building:before {\r\n content: \"\\\\f1ad\"; }\r\n\r\n.fa-bullhorn:before {\r\n content: \"\\\\f0a1\"; }\r\n\r\n.fa-bullseye:before {\r\n content: \"\\\\f140\"; }\r\n\r\n.fa-burn:before {\r\n content: \"\\\\f46a\"; }\r\n\r\n.fa-buromobelexperte:before {\r\n content: \"\\\\f37f\"; }\r\n\r\n.fa-bus:before {\r\n content: \"\\\\f207\"; }\r\n\r\n.fa-bus-alt:before {\r\n content: \"\\\\f55e\"; }\r\n\r\n.fa-business-time:before {\r\n content: \"\\\\f64a\"; }\r\n\r\n.fa-buysellads:before {\r\n content: \"\\\\f20d\"; }\r\n\r\n.fa-calculator:before {\r\n content: \"\\\\f1ec\"; }\r\n\r\n.fa-calendar:before {\r\n content: \"\\\\f133\"; }\r\n\r\n.fa-calendar-alt:before {\r\n content: \"\\\\f073\"; }\r\n\r\n.fa-calendar-check:before {\r\n content: \"\\\\f274\"; }\r\n\r\n.fa-calendar-day:before {\r\n content: \"\\\\f783\"; }\r\n\r\n.fa-calendar-minus:before {\r\n content: \"\\\\f272\"; }\r\n\r\n.fa-calendar-plus:before {\r\n content: \"\\\\f271\"; }\r\n\r\n.fa-calendar-times:before {\r\n content: \"\\\\f273\"; }\r\n\r\n.fa-calendar-week:before {\r\n content: \"\\\\f784\"; }\r\n\r\n.fa-camera:before {\r\n content: \"\\\\f030\"; }\r\n\r\n.fa-camera-retro:before {\r\n content: \"\\\\f083\"; }\r\n\r\n.fa-campground:before {\r\n content: \"\\\\f6bb\"; }\r\n\r\n.fa-canadian-maple-leaf:before {\r\n content: \"\\\\f785\"; }\r\n\r\n.fa-candy-cane:before {\r\n content: \"\\\\f786\"; }\r\n\r\n.fa-cannabis:before {\r\n content: \"\\\\f55f\"; }\r\n\r\n.fa-capsules:before {\r\n content: \"\\\\f46b\"; }\r\n\r\n.fa-car:before {\r\n content: \"\\\\f1b9\"; }\r\n\r\n.fa-car-alt:before {\r\n content: \"\\\\f5de\"; }\r\n\r\n.fa-car-battery:before {\r\n content: \"\\\\f5df\"; }\r\n\r\n.fa-car-crash:before {\r\n content: \"\\\\f5e1\"; }\r\n\r\n.fa-car-side:before {\r\n content: \"\\\\f5e4\"; }\r\n\r\n.fa-caret-down:before {\r\n content: \"\\\\f0d7\"; }\r\n\r\n.fa-caret-left:before {\r\n content: \"\\\\f0d9\"; }\r\n\r\n.fa-caret-right:before {\r\n content: \"\\\\f0da\"; }\r\n\r\n.fa-caret-square-down:before {\r\n content: \"\\\\f150\"; }\r\n\r\n.fa-caret-square-left:before {\r\n content: \"\\\\f191\"; }\r\n\r\n.fa-caret-square-right:before {\r\n content: \"\\\\f152\"; }\r\n\r\n.fa-caret-square-up:before {\r\n content: \"\\\\f151\"; }\r\n\r\n.fa-caret-up:before {\r\n content: \"\\\\f0d8\"; }\r\n\r\n.fa-carrot:before {\r\n content: \"\\\\f787\"; }\r\n\r\n.fa-cart-arrow-down:before {\r\n content: \"\\\\f218\"; }\r\n\r\n.fa-cart-plus:before {\r\n content: \"\\\\f217\"; }\r\n\r\n.fa-cash-register:before {\r\n content: \"\\\\f788\"; }\r\n\r\n.fa-cat:before {\r\n content: \"\\\\f6be\"; }\r\n\r\n.fa-cc-amazon-pay:before {\r\n content: \"\\\\f42d\"; }\r\n\r\n.fa-cc-amex:before {\r\n content: \"\\\\f1f3\"; }\r\n\r\n.fa-cc-apple-pay:before {\r\n content: \"\\\\f416\"; }\r\n\r\n.fa-cc-diners-club:before {\r\n content: \"\\\\f24c\"; }\r\n\r\n.fa-cc-discover:before {\r\n content: \"\\\\f1f2\"; }\r\n\r\n.fa-cc-jcb:before {\r\n content: \"\\\\f24b\"; }\r\n\r\n.fa-cc-mastercard:before {\r\n content: \"\\\\f1f1\"; }\r\n\r\n.fa-cc-paypal:before {\r\n content: \"\\\\f1f4\"; }\r\n\r\n.fa-cc-stripe:before {\r\n content: \"\\\\f1f5\"; }\r\n\r\n.fa-cc-visa:before {\r\n content: \"\\\\f1f0\"; }\r\n\r\n.fa-centercode:before {\r\n content: \"\\\\f380\"; }\r\n\r\n.fa-centos:before {\r\n content: \"\\\\f789\"; }\r\n\r\n.fa-certificate:before {\r\n content: \"\\\\f0a3\"; }\r\n\r\n.fa-chair:before {\r\n content: \"\\\\f6c0\"; }\r\n\r\n.fa-chalkboard:before {\r\n content: \"\\\\f51b\"; }\r\n\r\n.fa-chalkboard-teacher:before {\r\n content: \"\\\\f51c\"; }\r\n\r\n.fa-charging-station:before {\r\n content: \"\\\\f5e7\"; }\r\n\r\n.fa-chart-area:before {\r\n content: \"\\\\f1fe\"; }\r\n\r\n.fa-chart-bar:before {\r\n content: \"\\\\f080\"; }\r\n\r\n.fa-chart-line:before {\r\n content: \"\\\\f201\"; }\r\n\r\n.fa-chart-pie:before {\r\n content: \"\\\\f200\"; }\r\n\r\n.fa-check:before {\r\n content: \"\\\\f00c\"; }\r\n\r\n.fa-check-circle:before {\r\n content: \"\\\\f058\"; }\r\n\r\n.fa-check-double:before {\r\n content: \"\\\\f560\"; }\r\n\r\n.fa-check-square:before {\r\n content: \"\\\\f14a\"; }\r\n\r\n.fa-cheese:before {\r\n content: \"\\\\f7ef\"; }\r\n\r\n.fa-chess:before {\r\n content: \"\\\\f439\"; }\r\n\r\n.fa-chess-bishop:before {\r\n content: \"\\\\f43a\"; }\r\n\r\n.fa-chess-board:before {\r\n content: \"\\\\f43c\"; }\r\n\r\n.fa-chess-king:before {\r\n content: \"\\\\f43f\"; }\r\n\r\n.fa-chess-knight:before {\r\n content: \"\\\\f441\"; }\r\n\r\n.fa-chess-pawn:before {\r\n content: \"\\\\f443\"; }\r\n\r\n.fa-chess-queen:before {\r\n content: \"\\\\f445\"; }\r\n\r\n.fa-chess-rook:before {\r\n content: \"\\\\f447\"; }\r\n\r\n.fa-chevron-circle-down:before {\r\n content: \"\\\\f13a\"; }\r\n\r\n.fa-chevron-circle-left:before {\r\n content: \"\\\\f137\"; }\r\n\r\n.fa-chevron-circle-right:before {\r\n content: \"\\\\f138\"; }\r\n\r\n.fa-chevron-circle-up:before {\r\n content: \"\\\\f139\"; }\r\n\r\n.fa-chevron-down:before {\r\n content: \"\\\\f078\"; }\r\n\r\n.fa-chevron-left:before {\r\n content: \"\\\\f053\"; }\r\n\r\n.fa-chevron-right:before {\r\n content: \"\\\\f054\"; }\r\n\r\n.fa-chevron-up:before {\r\n content: \"\\\\f077\"; }\r\n\r\n.fa-child:before {\r\n content: \"\\\\f1ae\"; }\r\n\r\n.fa-chrome:before {\r\n content: \"\\\\f268\"; }\r\n\r\n.fa-church:before {\r\n content: \"\\\\f51d\"; }\r\n\r\n.fa-circle:before {\r\n content: \"\\\\f111\"; }\r\n\r\n.fa-circle-notch:before {\r\n content: \"\\\\f1ce\"; }\r\n\r\n.fa-city:before {\r\n content: \"\\\\f64f\"; }\r\n\r\n.fa-clinic-medical:before {\r\n content: \"\\\\f7f2\"; }\r\n\r\n.fa-clipboard:before {\r\n content: \"\\\\f328\"; }\r\n\r\n.fa-clipboard-check:before {\r\n content: \"\\\\f46c\"; }\r\n\r\n.fa-clipboard-list:before {\r\n content: \"\\\\f46d\"; }\r\n\r\n.fa-clock:before {\r\n content: \"\\\\f017\"; }\r\n\r\n.fa-clone:before {\r\n content: \"\\\\f24d\"; }\r\n\r\n.fa-closed-captioning:before {\r\n content: \"\\\\f20a\"; }\r\n\r\n.fa-cloud:before {\r\n content: \"\\\\f0c2\"; }\r\n\r\n.fa-cloud-download-alt:before {\r\n content: \"\\\\f381\"; }\r\n\r\n.fa-cloud-meatball:before {\r\n content: \"\\\\f73b\"; }\r\n\r\n.fa-cloud-moon:before {\r\n content: \"\\\\f6c3\"; }\r\n\r\n.fa-cloud-moon-rain:before {\r\n content: \"\\\\f73c\"; }\r\n\r\n.fa-cloud-rain:before {\r\n content: \"\\\\f73d\"; }\r\n\r\n.fa-cloud-showers-heavy:before {\r\n content: \"\\\\f740\"; }\r\n\r\n.fa-cloud-sun:before {\r\n content: \"\\\\f6c4\"; }\r\n\r\n.fa-cloud-sun-rain:before {\r\n content: \"\\\\f743\"; }\r\n\r\n.fa-cloud-upload-alt:before {\r\n content: \"\\\\f382\"; }\r\n\r\n.fa-cloudscale:before {\r\n content: \"\\\\f383\"; }\r\n\r\n.fa-cloudsmith:before {\r\n content: \"\\\\f384\"; }\r\n\r\n.fa-cloudversify:before {\r\n content: \"\\\\f385\"; }\r\n\r\n.fa-cocktail:before {\r\n content: \"\\\\f561\"; }\r\n\r\n.fa-code:before {\r\n content: \"\\\\f121\"; }\r\n\r\n.fa-code-branch:before {\r\n content: \"\\\\f126\"; }\r\n\r\n.fa-codepen:before {\r\n content: \"\\\\f1cb\"; }\r\n\r\n.fa-codiepie:before {\r\n content: \"\\\\f284\"; }\r\n\r\n.fa-coffee:before {\r\n content: \"\\\\f0f4\"; }\r\n\r\n.fa-cog:before {\r\n content: \"\\\\f013\"; }\r\n\r\n.fa-cogs:before {\r\n content: \"\\\\f085\"; }\r\n\r\n.fa-coins:before {\r\n content: \"\\\\f51e\"; }\r\n\r\n.fa-columns:before {\r\n content: \"\\\\f0db\"; }\r\n\r\n.fa-comment:before {\r\n content: \"\\\\f075\"; }\r\n\r\n.fa-comment-alt:before {\r\n content: \"\\\\f27a\"; }\r\n\r\n.fa-comment-dollar:before {\r\n content: \"\\\\f651\"; }\r\n\r\n.fa-comment-dots:before {\r\n content: \"\\\\f4ad\"; }\r\n\r\n.fa-comment-medical:before {\r\n content: \"\\\\f7f5\"; }\r\n\r\n.fa-comment-slash:before {\r\n content: \"\\\\f4b3\"; }\r\n\r\n.fa-comments:before {\r\n content: \"\\\\f086\"; }\r\n\r\n.fa-comments-dollar:before {\r\n content: \"\\\\f653\"; }\r\n\r\n.fa-compact-disc:before {\r\n content: \"\\\\f51f\"; }\r\n\r\n.fa-compass:before {\r\n content: \"\\\\f14e\"; }\r\n\r\n.fa-compress:before {\r\n content: \"\\\\f066\"; }\r\n\r\n.fa-compress-arrows-alt:before {\r\n content: \"\\\\f78c\"; }\r\n\r\n.fa-concierge-bell:before {\r\n content: \"\\\\f562\"; }\r\n\r\n.fa-confluence:before {\r\n content: \"\\\\f78d\"; }\r\n\r\n.fa-connectdevelop:before {\r\n content: \"\\\\f20e\"; }\r\n\r\n.fa-contao:before {\r\n content: \"\\\\f26d\"; }\r\n\r\n.fa-cookie:before {\r\n content: \"\\\\f563\"; }\r\n\r\n.fa-cookie-bite:before {\r\n content: \"\\\\f564\"; }\r\n\r\n.fa-copy:before {\r\n content: \"\\\\f0c5\"; }\r\n\r\n.fa-copyright:before {\r\n content: \"\\\\f1f9\"; }\r\n\r\n.fa-couch:before {\r\n content: \"\\\\f4b8\"; }\r\n\r\n.fa-cpanel:before {\r\n content: \"\\\\f388\"; }\r\n\r\n.fa-creative-commons:before {\r\n content: \"\\\\f25e\"; }\r\n\r\n.fa-creative-commons-by:before {\r\n content: \"\\\\f4e7\"; }\r\n\r\n.fa-creative-commons-nc:before {\r\n content: \"\\\\f4e8\"; }\r\n\r\n.fa-creative-commons-nc-eu:before {\r\n content: \"\\\\f4e9\"; }\r\n\r\n.fa-creative-commons-nc-jp:before {\r\n content: \"\\\\f4ea\"; }\r\n\r\n.fa-creative-commons-nd:before {\r\n content: \"\\\\f4eb\"; }\r\n\r\n.fa-creative-commons-pd:before {\r\n content: \"\\\\f4ec\"; }\r\n\r\n.fa-creative-commons-pd-alt:before {\r\n content: \"\\\\f4ed\"; }\r\n\r\n.fa-creative-commons-remix:before {\r\n content: \"\\\\f4ee\"; }\r\n\r\n.fa-creative-commons-sa:before {\r\n content: \"\\\\f4ef\"; }\r\n\r\n.fa-creative-commons-sampling:before {\r\n content: \"\\\\f4f0\"; }\r\n\r\n.fa-creative-commons-sampling-plus:before {\r\n content: \"\\\\f4f1\"; }\r\n\r\n.fa-creative-commons-share:before {\r\n content: \"\\\\f4f2\"; }\r\n\r\n.fa-creative-commons-zero:before {\r\n content: \"\\\\f4f3\"; }\r\n\r\n.fa-credit-card:before {\r\n content: \"\\\\f09d\"; }\r\n\r\n.fa-critical-role:before {\r\n content: \"\\\\f6c9\"; }\r\n\r\n.fa-crop:before {\r\n content: \"\\\\f125\"; }\r\n\r\n.fa-crop-alt:before {\r\n content: \"\\\\f565\"; }\r\n\r\n.fa-cross:before {\r\n content: \"\\\\f654\"; }\r\n\r\n.fa-crosshairs:before {\r\n content: \"\\\\f05b\"; }\r\n\r\n.fa-crow:before {\r\n content: \"\\\\f520\"; }\r\n\r\n.fa-crown:before {\r\n content: \"\\\\f521\"; }\r\n\r\n.fa-crutch:before {\r\n content: \"\\\\f7f7\"; }\r\n\r\n.fa-css3:before {\r\n content: \"\\\\f13c\"; }\r\n\r\n.fa-css3-alt:before {\r\n content: \"\\\\f38b\"; }\r\n\r\n.fa-cube:before {\r\n content: \"\\\\f1b2\"; }\r\n\r\n.fa-cubes:before {\r\n content: \"\\\\f1b3\"; }\r\n\r\n.fa-cut:before {\r\n content: \"\\\\f0c4\"; }\r\n\r\n.fa-cuttlefish:before {\r\n content: \"\\\\f38c\"; }\r\n\r\n.fa-d-and-d:before {\r\n content: \"\\\\f38d\"; }\r\n\r\n.fa-d-and-d-beyond:before {\r\n content: \"\\\\f6ca\"; }\r\n\r\n.fa-dashcube:before {\r\n content: \"\\\\f210\"; }\r\n\r\n.fa-database:before {\r\n content: \"\\\\f1c0\"; }\r\n\r\n.fa-deaf:before {\r\n content: \"\\\\f2a4\"; }\r\n\r\n.fa-delicious:before {\r\n content: \"\\\\f1a5\"; }\r\n\r\n.fa-democrat:before {\r\n content: \"\\\\f747\"; }\r\n\r\n.fa-deploydog:before {\r\n content: \"\\\\f38e\"; }\r\n\r\n.fa-deskpro:before {\r\n content: \"\\\\f38f\"; }\r\n\r\n.fa-desktop:before {\r\n content: \"\\\\f108\"; }\r\n\r\n.fa-dev:before {\r\n content: \"\\\\f6cc\"; }\r\n\r\n.fa-deviantart:before {\r\n content: \"\\\\f1bd\"; }\r\n\r\n.fa-dharmachakra:before {\r\n content: \"\\\\f655\"; }\r\n\r\n.fa-dhl:before {\r\n content: \"\\\\f790\"; }\r\n\r\n.fa-diagnoses:before {\r\n content: \"\\\\f470\"; }\r\n\r\n.fa-diaspora:before {\r\n content: \"\\\\f791\"; }\r\n\r\n.fa-dice:before {\r\n content: \"\\\\f522\"; }\r\n\r\n.fa-dice-d20:before {\r\n content: \"\\\\f6cf\"; }\r\n\r\n.fa-dice-d6:before {\r\n content: \"\\\\f6d1\"; }\r\n\r\n.fa-dice-five:before {\r\n content: \"\\\\f523\"; }\r\n\r\n.fa-dice-four:before {\r\n content: \"\\\\f524\"; }\r\n\r\n.fa-dice-one:before {\r\n content: \"\\\\f525\"; }\r\n\r\n.fa-dice-six:before {\r\n content: \"\\\\f526\"; }\r\n\r\n.fa-dice-three:before {\r\n content: \"\\\\f527\"; }\r\n\r\n.fa-dice-two:before {\r\n content: \"\\\\f528\"; }\r\n\r\n.fa-digg:before {\r\n content: \"\\\\f1a6\"; }\r\n\r\n.fa-digital-ocean:before {\r\n content: \"\\\\f391\"; }\r\n\r\n.fa-digital-tachograph:before {\r\n content: \"\\\\f566\"; }\r\n\r\n.fa-directions:before {\r\n content: \"\\\\f5eb\"; }\r\n\r\n.fa-discord:before {\r\n content: \"\\\\f392\"; }\r\n\r\n.fa-discourse:before {\r\n content: \"\\\\f393\"; }\r\n\r\n.fa-divide:before {\r\n content: \"\\\\f529\"; }\r\n\r\n.fa-dizzy:before {\r\n content: \"\\\\f567\"; }\r\n\r\n.fa-dna:before {\r\n content: \"\\\\f471\"; }\r\n\r\n.fa-dochub:before {\r\n content: \"\\\\f394\"; }\r\n\r\n.fa-docker:before {\r\n content: \"\\\\f395\"; }\r\n\r\n.fa-dog:before {\r\n content: \"\\\\f6d3\"; }\r\n\r\n.fa-dollar-sign:before {\r\n content: \"\\\\f155\"; }\r\n\r\n.fa-dolly:before {\r\n content: \"\\\\f472\"; }\r\n\r\n.fa-dolly-flatbed:before {\r\n content: \"\\\\f474\"; }\r\n\r\n.fa-donate:before {\r\n content: \"\\\\f4b9\"; }\r\n\r\n.fa-door-closed:before {\r\n content: \"\\\\f52a\"; }\r\n\r\n.fa-door-open:before {\r\n content: \"\\\\f52b\"; }\r\n\r\n.fa-dot-circle:before {\r\n content: \"\\\\f192\"; }\r\n\r\n.fa-dove:before {\r\n content: \"\\\\f4ba\"; }\r\n\r\n.fa-download:before {\r\n content: \"\\\\f019\"; }\r\n\r\n.fa-draft2digital:before {\r\n content: \"\\\\f396\"; }\r\n\r\n.fa-drafting-compass:before {\r\n content: \"\\\\f568\"; }\r\n\r\n.fa-dragon:before {\r\n content: \"\\\\f6d5\"; }\r\n\r\n.fa-draw-polygon:before {\r\n content: \"\\\\f5ee\"; }\r\n\r\n.fa-dribbble:before {\r\n content: \"\\\\f17d\"; }\r\n\r\n.fa-dribbble-square:before {\r\n content: \"\\\\f397\"; }\r\n\r\n.fa-dropbox:before {\r\n content: \"\\\\f16b\"; }\r\n\r\n.fa-drum:before {\r\n content: \"\\\\f569\"; }\r\n\r\n.fa-drum-steelpan:before {\r\n content: \"\\\\f56a\"; }\r\n\r\n.fa-drumstick-bite:before {\r\n content: \"\\\\f6d7\"; }\r\n\r\n.fa-drupal:before {\r\n content: \"\\\\f1a9\"; }\r\n\r\n.fa-dumbbell:before {\r\n content: \"\\\\f44b\"; }\r\n\r\n.fa-dumpster:before {\r\n content: \"\\\\f793\"; }\r\n\r\n.fa-dumpster-fire:before {\r\n content: \"\\\\f794\"; }\r\n\r\n.fa-dungeon:before {\r\n content: \"\\\\f6d9\"; }\r\n\r\n.fa-dyalog:before {\r\n content: \"\\\\f399\"; }\r\n\r\n.fa-earlybirds:before {\r\n content: \"\\\\f39a\"; }\r\n\r\n.fa-ebay:before {\r\n content: \"\\\\f4f4\"; }\r\n\r\n.fa-edge:before {\r\n content: \"\\\\f282\"; }\r\n\r\n.fa-edit:before {\r\n content: \"\\\\f044\"; }\r\n\r\n.fa-egg:before {\r\n content: \"\\\\f7fb\"; }\r\n\r\n.fa-eject:before {\r\n content: \"\\\\f052\"; }\r\n\r\n.fa-elementor:before {\r\n content: \"\\\\f430\"; }\r\n\r\n.fa-ellipsis-h:before {\r\n content: \"\\\\f141\"; }\r\n\r\n.fa-ellipsis-v:before {\r\n content: \"\\\\f142\"; }\r\n\r\n.fa-ello:before {\r\n content: \"\\\\f5f1\"; }\r\n\r\n.fa-ember:before {\r\n content: \"\\\\f423\"; }\r\n\r\n.fa-empire:before {\r\n content: \"\\\\f1d1\"; }\r\n\r\n.fa-envelope:before {\r\n content: \"\\\\f0e0\"; }\r\n\r\n.fa-envelope-open:before {\r\n content: \"\\\\f2b6\"; }\r\n\r\n.fa-envelope-open-text:before {\r\n content: \"\\\\f658\"; }\r\n\r\n.fa-envelope-square:before {\r\n content: \"\\\\f199\"; }\r\n\r\n.fa-envira:before {\r\n content: \"\\\\f299\"; }\r\n\r\n.fa-equals:before {\r\n content: \"\\\\f52c\"; }\r\n\r\n.fa-eraser:before {\r\n content: \"\\\\f12d\"; }\r\n\r\n.fa-erlang:before {\r\n content: \"\\\\f39d\"; }\r\n\r\n.fa-ethereum:before {\r\n content: \"\\\\f42e\"; }\r\n\r\n.fa-ethernet:before {\r\n content: \"\\\\f796\"; }\r\n\r\n.fa-etsy:before {\r\n content: \"\\\\f2d7\"; }\r\n\r\n.fa-euro-sign:before {\r\n content: \"\\\\f153\"; }\r\n\r\n.fa-exchange-alt:before {\r\n content: \"\\\\f362\"; }\r\n\r\n.fa-exclamation:before {\r\n content: \"\\\\f12a\"; }\r\n\r\n.fa-exclamation-circle:before {\r\n content: \"\\\\f06a\"; }\r\n\r\n.fa-exclamation-triangle:before {\r\n content: \"\\\\f071\"; }\r\n\r\n.fa-expand:before {\r\n content: \"\\\\f065\"; }\r\n\r\n.fa-expand-arrows-alt:before {\r\n content: \"\\\\f31e\"; }\r\n\r\n.fa-expeditedssl:before {\r\n content: \"\\\\f23e\"; }\r\n\r\n.fa-external-link-alt:before {\r\n content: \"\\\\f35d\"; }\r\n\r\n.fa-external-link-square-alt:before {\r\n content: \"\\\\f360\"; }\r\n\r\n.fa-eye:before {\r\n content: \"\\\\f06e\"; }\r\n\r\n.fa-eye-dropper:before {\r\n content: \"\\\\f1fb\"; }\r\n\r\n.fa-eye-slash:before {\r\n content: \"\\\\f070\"; }\r\n\r\n.fa-facebook:before {\r\n content: \"\\\\f09a\"; }\r\n\r\n.fa-facebook-f:before {\r\n content: \"\\\\f39e\"; }\r\n\r\n.fa-facebook-messenger:before {\r\n content: \"\\\\f39f\"; }\r\n\r\n.fa-facebook-square:before {\r\n content: \"\\\\f082\"; }\r\n\r\n.fa-fantasy-flight-games:before {\r\n content: \"\\\\f6dc\"; }\r\n\r\n.fa-fast-backward:before {\r\n content: \"\\\\f049\"; }\r\n\r\n.fa-fast-forward:before {\r\n content: \"\\\\f050\"; }\r\n\r\n.fa-fax:before {\r\n content: \"\\\\f1ac\"; }\r\n\r\n.fa-feather:before {\r\n content: \"\\\\f52d\"; }\r\n\r\n.fa-feather-alt:before {\r\n content: \"\\\\f56b\"; }\r\n\r\n.fa-fedex:before {\r\n content: \"\\\\f797\"; }\r\n\r\n.fa-fedora:before {\r\n content: \"\\\\f798\"; }\r\n\r\n.fa-female:before {\r\n content: \"\\\\f182\"; }\r\n\r\n.fa-fighter-jet:before {\r\n content: \"\\\\f0fb\"; }\r\n\r\n.fa-figma:before {\r\n content: \"\\\\f799\"; }\r\n\r\n.fa-file:before {\r\n content: \"\\\\f15b\"; }\r\n\r\n.fa-file-alt:before {\r\n content: \"\\\\f15c\"; }\r\n\r\n.fa-file-archive:before {\r\n content: \"\\\\f1c6\"; }\r\n\r\n.fa-file-audio:before {\r\n content: \"\\\\f1c7\"; }\r\n\r\n.fa-file-code:before {\r\n content: \"\\\\f1c9\"; }\r\n\r\n.fa-file-contract:before {\r\n content: \"\\\\f56c\"; }\r\n\r\n.fa-file-csv:before {\r\n content: \"\\\\f6dd\"; }\r\n\r\n.fa-file-download:before {\r\n content: \"\\\\f56d\"; }\r\n\r\n.fa-file-excel:before {\r\n content: \"\\\\f1c3\"; }\r\n\r\n.fa-file-export:before {\r\n content: \"\\\\f56e\"; }\r\n\r\n.fa-file-image:before {\r\n content: \"\\\\f1c5\"; }\r\n\r\n.fa-file-import:before {\r\n content: \"\\\\f56f\"; }\r\n\r\n.fa-file-invoice:before {\r\n content: \"\\\\f570\"; }\r\n\r\n.fa-file-invoice-dollar:before {\r\n content: \"\\\\f571\"; }\r\n\r\n.fa-file-medical:before {\r\n content: \"\\\\f477\"; }\r\n\r\n.fa-file-medical-alt:before {\r\n content: \"\\\\f478\"; }\r\n\r\n.fa-file-pdf:before {\r\n content: \"\\\\f1c1\"; }\r\n\r\n.fa-file-powerpoint:before {\r\n content: \"\\\\f1c4\"; }\r\n\r\n.fa-file-prescription:before {\r\n content: \"\\\\f572\"; }\r\n\r\n.fa-file-signature:before {\r\n content: \"\\\\f573\"; }\r\n\r\n.fa-file-upload:before {\r\n content: \"\\\\f574\"; }\r\n\r\n.fa-file-video:before {\r\n content: \"\\\\f1c8\"; }\r\n\r\n.fa-file-word:before {\r\n content: \"\\\\f1c2\"; }\r\n\r\n.fa-fill:before {\r\n content: \"\\\\f575\"; }\r\n\r\n.fa-fill-drip:before {\r\n content: \"\\\\f576\"; }\r\n\r\n.fa-film:before {\r\n content: \"\\\\f008\"; }\r\n\r\n.fa-filter:before {\r\n content: \"\\\\f0b0\"; }\r\n\r\n.fa-fingerprint:before {\r\n content: \"\\\\f577\"; }\r\n\r\n.fa-fire:before {\r\n content: \"\\\\f06d\"; }\r\n\r\n.fa-fire-alt:before {\r\n content: \"\\\\f7e4\"; }\r\n\r\n.fa-fire-extinguisher:before {\r\n content: \"\\\\f134\"; }\r\n\r\n.fa-firefox:before {\r\n content: \"\\\\f269\"; }\r\n\r\n.fa-first-aid:before {\r\n content: \"\\\\f479\"; }\r\n\r\n.fa-first-order:before {\r\n content: \"\\\\f2b0\"; }\r\n\r\n.fa-first-order-alt:before {\r\n content: \"\\\\f50a\"; }\r\n\r\n.fa-firstdraft:before {\r\n content: \"\\\\f3a1\"; }\r\n\r\n.fa-fish:before {\r\n content: \"\\\\f578\"; }\r\n\r\n.fa-fist-raised:before {\r\n content: \"\\\\f6de\"; }\r\n\r\n.fa-flag:before {\r\n content: \"\\\\f024\"; }\r\n\r\n.fa-flag-checkered:before {\r\n content: \"\\\\f11e\"; }\r\n\r\n.fa-flag-usa:before {\r\n content: \"\\\\f74d\"; }\r\n\r\n.fa-flask:before {\r\n content: \"\\\\f0c3\"; }\r\n\r\n.fa-flickr:before {\r\n content: \"\\\\f16e\"; }\r\n\r\n.fa-flipboard:before {\r\n content: \"\\\\f44d\"; }\r\n\r\n.fa-flushed:before {\r\n content: \"\\\\f579\"; }\r\n\r\n.fa-fly:before {\r\n content: \"\\\\f417\"; }\r\n\r\n.fa-folder:before {\r\n content: \"\\\\f07b\"; }\r\n\r\n.fa-folder-minus:before {\r\n content: \"\\\\f65d\"; }\r\n\r\n.fa-folder-open:before {\r\n content: \"\\\\f07c\"; }\r\n\r\n.fa-folder-plus:before {\r\n content: \"\\\\f65e\"; }\r\n\r\n.fa-font:before {\r\n content: \"\\\\f031\"; }\r\n\r\n.fa-font-awesome:before {\r\n content: \"\\\\f2b4\"; }\r\n\r\n.fa-font-awesome-alt:before {\r\n content: \"\\\\f35c\"; }\r\n\r\n.fa-font-awesome-flag:before {\r\n content: \"\\\\f425\"; }\r\n\r\n.fa-font-awesome-logo-full:before {\r\n content: \"\\\\f4e6\"; }\r\n\r\n.fa-fonticons:before {\r\n content: \"\\\\f280\"; }\r\n\r\n.fa-fonticons-fi:before {\r\n content: \"\\\\f3a2\"; }\r\n\r\n.fa-football-ball:before {\r\n content: \"\\\\f44e\"; }\r\n\r\n.fa-fort-awesome:before {\r\n content: \"\\\\f286\"; }\r\n\r\n.fa-fort-awesome-alt:before {\r\n content: \"\\\\f3a3\"; }\r\n\r\n.fa-forumbee:before {\r\n content: \"\\\\f211\"; }\r\n\r\n.fa-forward:before {\r\n content: \"\\\\f04e\"; }\r\n\r\n.fa-foursquare:before {\r\n content: \"\\\\f180\"; }\r\n\r\n.fa-free-code-camp:before {\r\n content: \"\\\\f2c5\"; }\r\n\r\n.fa-freebsd:before {\r\n content: \"\\\\f3a4\"; }\r\n\r\n.fa-frog:before {\r\n content: \"\\\\f52e\"; }\r\n\r\n.fa-frown:before {\r\n content: \"\\\\f119\"; }\r\n\r\n.fa-frown-open:before {\r\n content: \"\\\\f57a\"; }\r\n\r\n.fa-fulcrum:before {\r\n content: \"\\\\f50b\"; }\r\n\r\n.fa-funnel-dollar:before {\r\n content: \"\\\\f662\"; }\r\n\r\n.fa-futbol:before {\r\n content: \"\\\\f1e3\"; }\r\n\r\n.fa-galactic-republic:before {\r\n content: \"\\\\f50c\"; }\r\n\r\n.fa-galactic-senate:before {\r\n content: \"\\\\f50d\"; }\r\n\r\n.fa-gamepad:before {\r\n content: \"\\\\f11b\"; }\r\n\r\n.fa-gas-pump:before {\r\n content: \"\\\\f52f\"; }\r\n\r\n.fa-gavel:before {\r\n content: \"\\\\f0e3\"; }\r\n\r\n.fa-gem:before {\r\n content: \"\\\\f3a5\"; }\r\n\r\n.fa-genderless:before {\r\n content: \"\\\\f22d\"; }\r\n\r\n.fa-get-pocket:before {\r\n content: \"\\\\f265\"; }\r\n\r\n.fa-gg:before {\r\n content: \"\\\\f260\"; }\r\n\r\n.fa-gg-circle:before {\r\n content: \"\\\\f261\"; }\r\n\r\n.fa-ghost:before {\r\n content: \"\\\\f6e2\"; }\r\n\r\n.fa-gift:before {\r\n content: \"\\\\f06b\"; }\r\n\r\n.fa-gifts:before {\r\n content: \"\\\\f79c\"; }\r\n\r\n.fa-git:before {\r\n content: \"\\\\f1d3\"; }\r\n\r\n.fa-git-square:before {\r\n content: \"\\\\f1d2\"; }\r\n\r\n.fa-github:before {\r\n content: \"\\\\f09b\"; }\r\n\r\n.fa-github-alt:before {\r\n content: \"\\\\f113\"; }\r\n\r\n.fa-github-square:before {\r\n content: \"\\\\f092\"; }\r\n\r\n.fa-gitkraken:before {\r\n content: \"\\\\f3a6\"; }\r\n\r\n.fa-gitlab:before {\r\n content: \"\\\\f296\"; }\r\n\r\n.fa-gitter:before {\r\n content: \"\\\\f426\"; }\r\n\r\n.fa-glass-cheers:before {\r\n content: \"\\\\f79f\"; }\r\n\r\n.fa-glass-martini:before {\r\n content: \"\\\\f000\"; }\r\n\r\n.fa-glass-martini-alt:before {\r\n content: \"\\\\f57b\"; }\r\n\r\n.fa-glass-whiskey:before {\r\n content: \"\\\\f7a0\"; }\r\n\r\n.fa-glasses:before {\r\n content: \"\\\\f530\"; }\r\n\r\n.fa-glide:before {\r\n content: \"\\\\f2a5\"; }\r\n\r\n.fa-glide-g:before {\r\n content: \"\\\\f2a6\"; }\r\n\r\n.fa-globe:before {\r\n content: \"\\\\f0ac\"; }\r\n\r\n.fa-globe-africa:before {\r\n content: \"\\\\f57c\"; }\r\n\r\n.fa-globe-americas:before {\r\n content: \"\\\\f57d\"; }\r\n\r\n.fa-globe-asia:before {\r\n content: \"\\\\f57e\"; }\r\n\r\n.fa-globe-europe:before {\r\n content: \"\\\\f7a2\"; }\r\n\r\n.fa-gofore:before {\r\n content: \"\\\\f3a7\"; }\r\n\r\n.fa-golf-ball:before {\r\n content: \"\\\\f450\"; }\r\n\r\n.fa-goodreads:before {\r\n content: \"\\\\f3a8\"; }\r\n\r\n.fa-goodreads-g:before {\r\n content: \"\\\\f3a9\"; }\r\n\r\n.fa-google:before {\r\n content: \"\\\\f1a0\"; }\r\n\r\n.fa-google-drive:before {\r\n content: \"\\\\f3aa\"; }\r\n\r\n.fa-google-play:before {\r\n content: \"\\\\f3ab\"; }\r\n\r\n.fa-google-plus:before {\r\n content: \"\\\\f2b3\"; }\r\n\r\n.fa-google-plus-g:before {\r\n content: \"\\\\f0d5\"; }\r\n\r\n.fa-google-plus-square:before {\r\n content: \"\\\\f0d4\"; }\r\n\r\n.fa-google-wallet:before {\r\n content: \"\\\\f1ee\"; }\r\n\r\n.fa-gopuram:before {\r\n content: \"\\\\f664\"; }\r\n\r\n.fa-graduation-cap:before {\r\n content: \"\\\\f19d\"; }\r\n\r\n.fa-gratipay:before {\r\n content: \"\\\\f184\"; }\r\n\r\n.fa-grav:before {\r\n content: \"\\\\f2d6\"; }\r\n\r\n.fa-greater-than:before {\r\n content: \"\\\\f531\"; }\r\n\r\n.fa-greater-than-equal:before {\r\n content: \"\\\\f532\"; }\r\n\r\n.fa-grimace:before {\r\n content: \"\\\\f57f\"; }\r\n\r\n.fa-grin:before {\r\n content: \"\\\\f580\"; }\r\n\r\n.fa-grin-alt:before {\r\n content: \"\\\\f581\"; }\r\n\r\n.fa-grin-beam:before {\r\n content: \"\\\\f582\"; }\r\n\r\n.fa-grin-beam-sweat:before {\r\n content: \"\\\\f583\"; }\r\n\r\n.fa-grin-hearts:before {\r\n content: \"\\\\f584\"; }\r\n\r\n.fa-grin-squint:before {\r\n content: \"\\\\f585\"; }\r\n\r\n.fa-grin-squint-tears:before {\r\n content: \"\\\\f586\"; }\r\n\r\n.fa-grin-stars:before {\r\n content: \"\\\\f587\"; }\r\n\r\n.fa-grin-tears:before {\r\n content: \"\\\\f588\"; }\r\n\r\n.fa-grin-tongue:before {\r\n content: \"\\\\f589\"; }\r\n\r\n.fa-grin-tongue-squint:before {\r\n content: \"\\\\f58a\"; }\r\n\r\n.fa-grin-tongue-wink:before {\r\n content: \"\\\\f58b\"; }\r\n\r\n.fa-grin-wink:before {\r\n content: \"\\\\f58c\"; }\r\n\r\n.fa-grip-horizontal:before {\r\n content: \"\\\\f58d\"; }\r\n\r\n.fa-grip-lines:before {\r\n content: \"\\\\f7a4\"; }\r\n\r\n.fa-grip-lines-vertical:before {\r\n content: \"\\\\f7a5\"; }\r\n\r\n.fa-grip-vertical:before {\r\n content: \"\\\\f58e\"; }\r\n\r\n.fa-gripfire:before {\r\n content: \"\\\\f3ac\"; }\r\n\r\n.fa-grunt:before {\r\n content: \"\\\\f3ad\"; }\r\n\r\n.fa-guitar:before {\r\n content: \"\\\\f7a6\"; }\r\n\r\n.fa-gulp:before {\r\n content: \"\\\\f3ae\"; }\r\n\r\n.fa-h-square:before {\r\n content: \"\\\\f0fd\"; }\r\n\r\n.fa-hacker-news:before {\r\n content: \"\\\\f1d4\"; }\r\n\r\n.fa-hacker-news-square:before {\r\n content: \"\\\\f3af\"; }\r\n\r\n.fa-hackerrank:before {\r\n content: \"\\\\f5f7\"; }\r\n\r\n.fa-hamburger:before {\r\n content: \"\\\\f805\"; }\r\n\r\n.fa-hammer:before {\r\n content: \"\\\\f6e3\"; }\r\n\r\n.fa-hamsa:before {\r\n content: \"\\\\f665\"; }\r\n\r\n.fa-hand-holding:before {\r\n content: \"\\\\f4bd\"; }\r\n\r\n.fa-hand-holding-heart:before {\r\n content: \"\\\\f4be\"; }\r\n\r\n.fa-hand-holding-usd:before {\r\n content: \"\\\\f4c0\"; }\r\n\r\n.fa-hand-lizard:before {\r\n content: \"\\\\f258\"; }\r\n\r\n.fa-hand-middle-finger:before {\r\n content: \"\\\\f806\"; }\r\n\r\n.fa-hand-paper:before {\r\n content: \"\\\\f256\"; }\r\n\r\n.fa-hand-peace:before {\r\n content: \"\\\\f25b\"; }\r\n\r\n.fa-hand-point-down:before {\r\n content: \"\\\\f0a7\"; }\r\n\r\n.fa-hand-point-left:before {\r\n content: \"\\\\f0a5\"; }\r\n\r\n.fa-hand-point-right:before {\r\n content: \"\\\\f0a4\"; }\r\n\r\n.fa-hand-point-up:before {\r\n content: \"\\\\f0a6\"; }\r\n\r\n.fa-hand-pointer:before {\r\n content: \"\\\\f25a\"; }\r\n\r\n.fa-hand-rock:before {\r\n content: \"\\\\f255\"; }\r\n\r\n.fa-hand-scissors:before {\r\n content: \"\\\\f257\"; }\r\n\r\n.fa-hand-spock:before {\r\n content: \"\\\\f259\"; }\r\n\r\n.fa-hands:before {\r\n content: \"\\\\f4c2\"; }\r\n\r\n.fa-hands-helping:before {\r\n content: \"\\\\f4c4\"; }\r\n\r\n.fa-handshake:before {\r\n content: \"\\\\f2b5\"; }\r\n\r\n.fa-hanukiah:before {\r\n content: \"\\\\f6e6\"; }\r\n\r\n.fa-hard-hat:before {\r\n content: \"\\\\f807\"; }\r\n\r\n.fa-hashtag:before {\r\n content: \"\\\\f292\"; }\r\n\r\n.fa-hat-wizard:before {\r\n content: \"\\\\f6e8\"; }\r\n\r\n.fa-haykal:before {\r\n content: \"\\\\f666\"; }\r\n\r\n.fa-hdd:before {\r\n content: \"\\\\f0a0\"; }\r\n\r\n.fa-heading:before {\r\n content: \"\\\\f1dc\"; }\r\n\r\n.fa-headphones:before {\r\n content: \"\\\\f025\"; }\r\n\r\n.fa-headphones-alt:before {\r\n content: \"\\\\f58f\"; }\r\n\r\n.fa-headset:before {\r\n content: \"\\\\f590\"; }\r\n\r\n.fa-heart:before {\r\n content: \"\\\\f004\"; }\r\n\r\n.fa-heart-broken:before {\r\n content: \"\\\\f7a9\"; }\r\n\r\n.fa-heartbeat:before {\r\n content: \"\\\\f21e\"; }\r\n\r\n.fa-helicopter:before {\r\n content: \"\\\\f533\"; }\r\n\r\n.fa-highlighter:before {\r\n content: \"\\\\f591\"; }\r\n\r\n.fa-hiking:before {\r\n content: \"\\\\f6ec\"; }\r\n\r\n.fa-hippo:before {\r\n content: \"\\\\f6ed\"; }\r\n\r\n.fa-hips:before {\r\n content: \"\\\\f452\"; }\r\n\r\n.fa-hire-a-helper:before {\r\n content: \"\\\\f3b0\"; }\r\n\r\n.fa-history:before {\r\n content: \"\\\\f1da\"; }\r\n\r\n.fa-hockey-puck:before {\r\n content: \"\\\\f453\"; }\r\n\r\n.fa-holly-berry:before {\r\n content: \"\\\\f7aa\"; }\r\n\r\n.fa-home:before {\r\n content: \"\\\\f015\"; }\r\n\r\n.fa-hooli:before {\r\n content: \"\\\\f427\"; }\r\n\r\n.fa-hornbill:before {\r\n content: \"\\\\f592\"; }\r\n\r\n.fa-horse:before {\r\n content: \"\\\\f6f0\"; }\r\n\r\n.fa-horse-head:before {\r\n content: \"\\\\f7ab\"; }\r\n\r\n.fa-hospital:before {\r\n content: \"\\\\f0f8\"; }\r\n\r\n.fa-hospital-alt:before {\r\n content: \"\\\\f47d\"; }\r\n\r\n.fa-hospital-symbol:before {\r\n content: \"\\\\f47e\"; }\r\n\r\n.fa-hot-tub:before {\r\n content: \"\\\\f593\"; }\r\n\r\n.fa-hotdog:before {\r\n content: \"\\\\f80f\"; }\r\n\r\n.fa-hotel:before {\r\n content: \"\\\\f594\"; }\r\n\r\n.fa-hotjar:before {\r\n content: \"\\\\f3b1\"; }\r\n\r\n.fa-hourglass:before {\r\n content: \"\\\\f254\"; }\r\n\r\n.fa-hourglass-end:before {\r\n content: \"\\\\f253\"; }\r\n\r\n.fa-hourglass-half:before {\r\n content: \"\\\\f252\"; }\r\n\r\n.fa-hourglass-start:before {\r\n content: \"\\\\f251\"; }\r\n\r\n.fa-house-damage:before {\r\n content: \"\\\\f6f1\"; }\r\n\r\n.fa-houzz:before {\r\n content: \"\\\\f27c\"; }\r\n\r\n.fa-hryvnia:before {\r\n content: \"\\\\f6f2\"; }\r\n\r\n.fa-html5:before {\r\n content: \"\\\\f13b\"; }\r\n\r\n.fa-hubspot:before {\r\n content: \"\\\\f3b2\"; }\r\n\r\n.fa-i-cursor:before {\r\n content: \"\\\\f246\"; }\r\n\r\n.fa-ice-cream:before {\r\n content: \"\\\\f810\"; }\r\n\r\n.fa-icicles:before {\r\n content: \"\\\\f7ad\"; }\r\n\r\n.fa-id-badge:before {\r\n content: \"\\\\f2c1\"; }\r\n\r\n.fa-id-card:before {\r\n content: \"\\\\f2c2\"; }\r\n\r\n.fa-id-card-alt:before {\r\n content: \"\\\\f47f\"; }\r\n\r\n.fa-igloo:before {\r\n content: \"\\\\f7ae\"; }\r\n\r\n.fa-image:before {\r\n content: \"\\\\f03e\"; }\r\n\r\n.fa-images:before {\r\n content: \"\\\\f302\"; }\r\n\r\n.fa-imdb:before {\r\n content: \"\\\\f2d8\"; }\r\n\r\n.fa-inbox:before {\r\n content: \"\\\\f01c\"; }\r\n\r\n.fa-indent:before {\r\n content: \"\\\\f03c\"; }\r\n\r\n.fa-industry:before {\r\n content: \"\\\\f275\"; }\r\n\r\n.fa-infinity:before {\r\n content: \"\\\\f534\"; }\r\n\r\n.fa-info:before {\r\n content: \"\\\\f129\"; }\r\n\r\n.fa-info-circle:before {\r\n content: \"\\\\f05a\"; }\r\n\r\n.fa-instagram:before {\r\n content: \"\\\\f16d\"; }\r\n\r\n.fa-intercom:before {\r\n content: \"\\\\f7af\"; }\r\n\r\n.fa-internet-explorer:before {\r\n content: \"\\\\f26b\"; }\r\n\r\n.fa-invision:before {\r\n content: \"\\\\f7b0\"; }\r\n\r\n.fa-ioxhost:before {\r\n content: \"\\\\f208\"; }\r\n\r\n.fa-italic:before {\r\n content: \"\\\\f033\"; }\r\n\r\n.fa-itunes:before {\r\n content: \"\\\\f3b4\"; }\r\n\r\n.fa-itunes-note:before {\r\n content: \"\\\\f3b5\"; }\r\n\r\n.fa-java:before {\r\n content: \"\\\\f4e4\"; }\r\n\r\n.fa-jedi:before {\r\n content: \"\\\\f669\"; }\r\n\r\n.fa-jedi-order:before {\r\n content: \"\\\\f50e\"; }\r\n\r\n.fa-jenkins:before {\r\n content: \"\\\\f3b6\"; }\r\n\r\n.fa-jira:before {\r\n content: \"\\\\f7b1\"; }\r\n\r\n.fa-joget:before {\r\n content: \"\\\\f3b7\"; }\r\n\r\n.fa-joint:before {\r\n content: \"\\\\f595\"; }\r\n\r\n.fa-joomla:before {\r\n content: \"\\\\f1aa\"; }\r\n\r\n.fa-journal-whills:before {\r\n content: \"\\\\f66a\"; }\r\n\r\n.fa-js:before {\r\n content: \"\\\\f3b8\"; }\r\n\r\n.fa-js-square:before {\r\n content: \"\\\\f3b9\"; }\r\n\r\n.fa-jsfiddle:before {\r\n content: \"\\\\f1cc\"; }\r\n\r\n.fa-kaaba:before {\r\n content: \"\\\\f66b\"; }\r\n\r\n.fa-kaggle:before {\r\n content: \"\\\\f5fa\"; }\r\n\r\n.fa-key:before {\r\n content: \"\\\\f084\"; }\r\n\r\n.fa-keybase:before {\r\n content: \"\\\\f4f5\"; }\r\n\r\n.fa-keyboard:before {\r\n content: \"\\\\f11c\"; }\r\n\r\n.fa-keycdn:before {\r\n content: \"\\\\f3ba\"; }\r\n\r\n.fa-khanda:before {\r\n content: \"\\\\f66d\"; }\r\n\r\n.fa-kickstarter:before {\r\n content: \"\\\\f3bb\"; }\r\n\r\n.fa-kickstarter-k:before {\r\n content: \"\\\\f3bc\"; }\r\n\r\n.fa-kiss:before {\r\n content: \"\\\\f596\"; }\r\n\r\n.fa-kiss-beam:before {\r\n content: \"\\\\f597\"; }\r\n\r\n.fa-kiss-wink-heart:before {\r\n content: \"\\\\f598\"; }\r\n\r\n.fa-kiwi-bird:before {\r\n content: \"\\\\f535\"; }\r\n\r\n.fa-korvue:before {\r\n content: \"\\\\f42f\"; }\r\n\r\n.fa-landmark:before {\r\n content: \"\\\\f66f\"; }\r\n\r\n.fa-language:before {\r\n content: \"\\\\f1ab\"; }\r\n\r\n.fa-laptop:before {\r\n content: \"\\\\f109\"; }\r\n\r\n.fa-laptop-code:before {\r\n content: \"\\\\f5fc\"; }\r\n\r\n.fa-laptop-medical:before {\r\n content: \"\\\\f812\"; }\r\n\r\n.fa-laravel:before {\r\n content: \"\\\\f3bd\"; }\r\n\r\n.fa-lastfm:before {\r\n content: \"\\\\f202\"; }\r\n\r\n.fa-lastfm-square:before {\r\n content: \"\\\\f203\"; }\r\n\r\n.fa-laugh:before {\r\n content: \"\\\\f599\"; }\r\n\r\n.fa-laugh-beam:before {\r\n content: \"\\\\f59a\"; }\r\n\r\n.fa-laugh-squint:before {\r\n content: \"\\\\f59b\"; }\r\n\r\n.fa-laugh-wink:before {\r\n content: \"\\\\f59c\"; }\r\n\r\n.fa-layer-group:before {\r\n content: \"\\\\f5fd\"; }\r\n\r\n.fa-leaf:before {\r\n content: \"\\\\f06c\"; }\r\n\r\n.fa-leanpub:before {\r\n content: \"\\\\f212\"; }\r\n\r\n.fa-lemon:before {\r\n content: \"\\\\f094\"; }\r\n\r\n.fa-less:before {\r\n content: \"\\\\f41d\"; }\r\n\r\n.fa-less-than:before {\r\n content: \"\\\\f536\"; }\r\n\r\n.fa-less-than-equal:before {\r\n content: \"\\\\f537\"; }\r\n\r\n.fa-level-down-alt:before {\r\n content: \"\\\\f3be\"; }\r\n\r\n.fa-level-up-alt:before {\r\n content: \"\\\\f3bf\"; }\r\n\r\n.fa-life-ring:before {\r\n content: \"\\\\f1cd\"; }\r\n\r\n.fa-lightbulb:before {\r\n content: \"\\\\f0eb\"; }\r\n\r\n.fa-line:before {\r\n content: \"\\\\f3c0\"; }\r\n\r\n.fa-link:before {\r\n content: \"\\\\f0c1\"; }\r\n\r\n.fa-linkedin:before {\r\n content: \"\\\\f08c\"; }\r\n\r\n.fa-linkedin-in:before {\r\n content: \"\\\\f0e1\"; }\r\n\r\n.fa-linode:before {\r\n content: \"\\\\f2b8\"; }\r\n\r\n.fa-linux:before {\r\n content: \"\\\\f17c\"; }\r\n\r\n.fa-lira-sign:before {\r\n content: \"\\\\f195\"; }\r\n\r\n.fa-list:before {\r\n content: \"\\\\f03a\"; }\r\n\r\n.fa-list-alt:before {\r\n content: \"\\\\f022\"; }\r\n\r\n.fa-list-ol:before {\r\n content: \"\\\\f0cb\"; }\r\n\r\n.fa-list-ul:before {\r\n content: \"\\\\f0ca\"; }\r\n\r\n.fa-location-arrow:before {\r\n content: \"\\\\f124\"; }\r\n\r\n.fa-lock:before {\r\n content: \"\\\\f023\"; }\r\n\r\n.fa-lock-open:before {\r\n content: \"\\\\f3c1\"; }\r\n\r\n.fa-long-arrow-alt-down:before {\r\n content: \"\\\\f309\"; }\r\n\r\n.fa-long-arrow-alt-left:before {\r\n content: \"\\\\f30a\"; }\r\n\r\n.fa-long-arrow-alt-right:before {\r\n content: \"\\\\f30b\"; }\r\n\r\n.fa-long-arrow-alt-up:before {\r\n content: \"\\\\f30c\"; }\r\n\r\n.fa-low-vision:before {\r\n content: \"\\\\f2a8\"; }\r\n\r\n.fa-luggage-cart:before {\r\n content: \"\\\\f59d\"; }\r\n\r\n.fa-lyft:before {\r\n content: \"\\\\f3c3\"; }\r\n\r\n.fa-magento:before {\r\n content: \"\\\\f3c4\"; }\r\n\r\n.fa-magic:before {\r\n content: \"\\\\f0d0\"; }\r\n\r\n.fa-magnet:before {\r\n content: \"\\\\f076\"; }\r\n\r\n.fa-mail-bulk:before {\r\n content: \"\\\\f674\"; }\r\n\r\n.fa-mailchimp:before {\r\n content: \"\\\\f59e\"; }\r\n\r\n.fa-male:before {\r\n content: \"\\\\f183\"; }\r\n\r\n.fa-mandalorian:before {\r\n content: \"\\\\f50f\"; }\r\n\r\n.fa-map:before {\r\n content: \"\\\\f279\"; }\r\n\r\n.fa-map-marked:before {\r\n content: \"\\\\f59f\"; }\r\n\r\n.fa-map-marked-alt:before {\r\n content: \"\\\\f5a0\"; }\r\n\r\n.fa-map-marker:before {\r\n content: \"\\\\f041\"; }\r\n\r\n.fa-map-marker-alt:before {\r\n content: \"\\\\f3c5\"; }\r\n\r\n.fa-map-pin:before {\r\n content: \"\\\\f276\"; }\r\n\r\n.fa-map-signs:before {\r\n content: \"\\\\f277\"; }\r\n\r\n.fa-markdown:before {\r\n content: \"\\\\f60f\"; }\r\n\r\n.fa-marker:before {\r\n content: \"\\\\f5a1\"; }\r\n\r\n.fa-mars:before {\r\n content: \"\\\\f222\"; }\r\n\r\n.fa-mars-double:before {\r\n content: \"\\\\f227\"; }\r\n\r\n.fa-mars-stroke:before {\r\n content: \"\\\\f229\"; }\r\n\r\n.fa-mars-stroke-h:before {\r\n content: \"\\\\f22b\"; }\r\n\r\n.fa-mars-stroke-v:before {\r\n content: \"\\\\f22a\"; }\r\n\r\n.fa-mask:before {\r\n content: \"\\\\f6fa\"; }\r\n\r\n.fa-mastodon:before {\r\n content: \"\\\\f4f6\"; }\r\n\r\n.fa-maxcdn:before {\r\n content: \"\\\\f136\"; }\r\n\r\n.fa-medal:before {\r\n content: \"\\\\f5a2\"; }\r\n\r\n.fa-medapps:before {\r\n content: \"\\\\f3c6\"; }\r\n\r\n.fa-medium:before {\r\n content: \"\\\\f23a\"; }\r\n\r\n.fa-medium-m:before {\r\n content: \"\\\\f3c7\"; }\r\n\r\n.fa-medkit:before {\r\n content: \"\\\\f0fa\"; }\r\n\r\n.fa-medrt:before {\r\n content: \"\\\\f3c8\"; }\r\n\r\n.fa-meetup:before {\r\n content: \"\\\\f2e0\"; }\r\n\r\n.fa-megaport:before {\r\n content: \"\\\\f5a3\"; }\r\n\r\n.fa-meh:before {\r\n content: \"\\\\f11a\"; }\r\n\r\n.fa-meh-blank:before {\r\n content: \"\\\\f5a4\"; }\r\n\r\n.fa-meh-rolling-eyes:before {\r\n content: \"\\\\f5a5\"; }\r\n\r\n.fa-memory:before {\r\n content: \"\\\\f538\"; }\r\n\r\n.fa-mendeley:before {\r\n content: \"\\\\f7b3\"; }\r\n\r\n.fa-menorah:before {\r\n content: \"\\\\f676\"; }\r\n\r\n.fa-mercury:before {\r\n content: \"\\\\f223\"; }\r\n\r\n.fa-meteor:before {\r\n content: \"\\\\f753\"; }\r\n\r\n.fa-microchip:before {\r\n content: \"\\\\f2db\"; }\r\n\r\n.fa-microphone:before {\r\n content: \"\\\\f130\"; }\r\n\r\n.fa-microphone-alt:before {\r\n content: \"\\\\f3c9\"; }\r\n\r\n.fa-microphone-alt-slash:before {\r\n content: \"\\\\f539\"; }\r\n\r\n.fa-microphone-slash:before {\r\n content: \"\\\\f131\"; }\r\n\r\n.fa-microscope:before {\r\n content: \"\\\\f610\"; }\r\n\r\n.fa-microsoft:before {\r\n content: \"\\\\f3ca\"; }\r\n\r\n.fa-minus:before {\r\n content: \"\\\\f068\"; }\r\n\r\n.fa-minus-circle:before {\r\n content: \"\\\\f056\"; }\r\n\r\n.fa-minus-square:before {\r\n content: \"\\\\f146\"; }\r\n\r\n.fa-mitten:before {\r\n content: \"\\\\f7b5\"; }\r\n\r\n.fa-mix:before {\r\n content: \"\\\\f3cb\"; }\r\n\r\n.fa-mixcloud:before {\r\n content: \"\\\\f289\"; }\r\n\r\n.fa-mizuni:before {\r\n content: \"\\\\f3cc\"; }\r\n\r\n.fa-mobile:before {\r\n content: \"\\\\f10b\"; }\r\n\r\n.fa-mobile-alt:before {\r\n content: \"\\\\f3cd\"; }\r\n\r\n.fa-modx:before {\r\n content: \"\\\\f285\"; }\r\n\r\n.fa-monero:before {\r\n content: \"\\\\f3d0\"; }\r\n\r\n.fa-money-bill:before {\r\n content: \"\\\\f0d6\"; }\r\n\r\n.fa-money-bill-alt:before {\r\n content: \"\\\\f3d1\"; }\r\n\r\n.fa-money-bill-wave:before {\r\n content: \"\\\\f53a\"; }\r\n\r\n.fa-money-bill-wave-alt:before {\r\n content: \"\\\\f53b\"; }\r\n\r\n.fa-money-check:before {\r\n content: \"\\\\f53c\"; }\r\n\r\n.fa-money-check-alt:before {\r\n content: \"\\\\f53d\"; }\r\n\r\n.fa-monument:before {\r\n content: \"\\\\f5a6\"; }\r\n\r\n.fa-moon:before {\r\n content: \"\\\\f186\"; }\r\n\r\n.fa-mortar-pestle:before {\r\n content: \"\\\\f5a7\"; }\r\n\r\n.fa-mosque:before {\r\n content: \"\\\\f678\"; }\r\n\r\n.fa-motorcycle:before {\r\n content: \"\\\\f21c\"; }\r\n\r\n.fa-mountain:before {\r\n content: \"\\\\f6fc\"; }\r\n\r\n.fa-mouse-pointer:before {\r\n content: \"\\\\f245\"; }\r\n\r\n.fa-mug-hot:before {\r\n content: \"\\\\f7b6\"; }\r\n\r\n.fa-music:before {\r\n content: \"\\\\f001\"; }\r\n\r\n.fa-napster:before {\r\n content: \"\\\\f3d2\"; }\r\n\r\n.fa-neos:before {\r\n content: \"\\\\f612\"; }\r\n\r\n.fa-network-wired:before {\r\n content: \"\\\\f6ff\"; }\r\n\r\n.fa-neuter:before {\r\n content: \"\\\\f22c\"; }\r\n\r\n.fa-newspaper:before {\r\n content: \"\\\\f1ea\"; }\r\n\r\n.fa-nimblr:before {\r\n content: \"\\\\f5a8\"; }\r\n\r\n.fa-nintendo-switch:before {\r\n content: \"\\\\f418\"; }\r\n\r\n.fa-node:before {\r\n content: \"\\\\f419\"; }\r\n\r\n.fa-node-js:before {\r\n content: \"\\\\f3d3\"; }\r\n\r\n.fa-not-equal:before {\r\n content: \"\\\\f53e\"; }\r\n\r\n.fa-notes-medical:before {\r\n content: \"\\\\f481\"; }\r\n\r\n.fa-npm:before {\r\n content: \"\\\\f3d4\"; }\r\n\r\n.fa-ns8:before {\r\n content: \"\\\\f3d5\"; }\r\n\r\n.fa-nutritionix:before {\r\n content: \"\\\\f3d6\"; }\r\n\r\n.fa-object-group:before {\r\n content: \"\\\\f247\"; }\r\n\r\n.fa-object-ungroup:before {\r\n content: \"\\\\f248\"; }\r\n\r\n.fa-odnoklassniki:before {\r\n content: \"\\\\f263\"; }\r\n\r\n.fa-odnoklassniki-square:before {\r\n content: \"\\\\f264\"; }\r\n\r\n.fa-oil-can:before {\r\n content: \"\\\\f613\"; }\r\n\r\n.fa-old-republic:before {\r\n content: \"\\\\f510\"; }\r\n\r\n.fa-om:before {\r\n content: \"\\\\f679\"; }\r\n\r\n.fa-opencart:before {\r\n content: \"\\\\f23d\"; }\r\n\r\n.fa-openid:before {\r\n content: \"\\\\f19b\"; }\r\n\r\n.fa-opera:before {\r\n content: \"\\\\f26a\"; }\r\n\r\n.fa-optin-monster:before {\r\n content: \"\\\\f23c\"; }\r\n\r\n.fa-osi:before {\r\n content: \"\\\\f41a\"; }\r\n\r\n.fa-otter:before {\r\n content: \"\\\\f700\"; }\r\n\r\n.fa-outdent:before {\r\n content: \"\\\\f03b\"; }\r\n\r\n.fa-page4:before {\r\n content: \"\\\\f3d7\"; }\r\n\r\n.fa-pagelines:before {\r\n content: \"\\\\f18c\"; }\r\n\r\n.fa-pager:before {\r\n content: \"\\\\f815\"; }\r\n\r\n.fa-paint-brush:before {\r\n content: \"\\\\f1fc\"; }\r\n\r\n.fa-paint-roller:before {\r\n content: \"\\\\f5aa\"; }\r\n\r\n.fa-palette:before {\r\n content: \"\\\\f53f\"; }\r\n\r\n.fa-palfed:before {\r\n content: \"\\\\f3d8\"; }\r\n\r\n.fa-pallet:before {\r\n content: \"\\\\f482\"; }\r\n\r\n.fa-paper-plane:before {\r\n content: \"\\\\f1d8\"; }\r\n\r\n.fa-paperclip:before {\r\n content: \"\\\\f0c6\"; }\r\n\r\n.fa-parachute-box:before {\r\n content: \"\\\\f4cd\"; }\r\n\r\n.fa-paragraph:before {\r\n content: \"\\\\f1dd\"; }\r\n\r\n.fa-parking:before {\r\n content: \"\\\\f540\"; }\r\n\r\n.fa-passport:before {\r\n content: \"\\\\f5ab\"; }\r\n\r\n.fa-pastafarianism:before {\r\n content: \"\\\\f67b\"; }\r\n\r\n.fa-paste:before {\r\n content: \"\\\\f0ea\"; }\r\n\r\n.fa-patreon:before {\r\n content: \"\\\\f3d9\"; }\r\n\r\n.fa-pause:before {\r\n content: \"\\\\f04c\"; }\r\n\r\n.fa-pause-circle:before {\r\n content: \"\\\\f28b\"; }\r\n\r\n.fa-paw:before {\r\n content: \"\\\\f1b0\"; }\r\n\r\n.fa-paypal:before {\r\n content: \"\\\\f1ed\"; }\r\n\r\n.fa-peace:before {\r\n content: \"\\\\f67c\"; }\r\n\r\n.fa-pen:before {\r\n content: \"\\\\f304\"; }\r\n\r\n.fa-pen-alt:before {\r\n content: \"\\\\f305\"; }\r\n\r\n.fa-pen-fancy:before {\r\n content: \"\\\\f5ac\"; }\r\n\r\n.fa-pen-nib:before {\r\n content: \"\\\\f5ad\"; }\r\n\r\n.fa-pen-square:before {\r\n content: \"\\\\f14b\"; }\r\n\r\n.fa-pencil-alt:before {\r\n content: \"\\\\f303\"; }\r\n\r\n.fa-pencil-ruler:before {\r\n content: \"\\\\f5ae\"; }\r\n\r\n.fa-penny-arcade:before {\r\n content: \"\\\\f704\"; }\r\n\r\n.fa-people-carry:before {\r\n content: \"\\\\f4ce\"; }\r\n\r\n.fa-pepper-hot:before {\r\n content: \"\\\\f816\"; }\r\n\r\n.fa-percent:before {\r\n content: \"\\\\f295\"; }\r\n\r\n.fa-percentage:before {\r\n content: \"\\\\f541\"; }\r\n\r\n.fa-periscope:before {\r\n content: \"\\\\f3da\"; }\r\n\r\n.fa-person-booth:before {\r\n content: \"\\\\f756\"; }\r\n\r\n.fa-phabricator:before {\r\n content: \"\\\\f3db\"; }\r\n\r\n.fa-phoenix-framework:before {\r\n content: \"\\\\f3dc\"; }\r\n\r\n.fa-phoenix-squadron:before {\r\n content: \"\\\\f511\"; }\r\n\r\n.fa-phone:before {\r\n content: \"\\\\f095\"; }\r\n\r\n.fa-phone-slash:before {\r\n content: \"\\\\f3dd\"; }\r\n\r\n.fa-phone-square:before {\r\n content: \"\\\\f098\"; }\r\n\r\n.fa-phone-volume:before {\r\n content: \"\\\\f2a0\"; }\r\n\r\n.fa-php:before {\r\n content: \"\\\\f457\"; }\r\n\r\n.fa-pied-piper:before {\r\n content: \"\\\\f2ae\"; }\r\n\r\n.fa-pied-piper-alt:before {\r\n content: \"\\\\f1a8\"; }\r\n\r\n.fa-pied-piper-hat:before {\r\n content: \"\\\\f4e5\"; }\r\n\r\n.fa-pied-piper-pp:before {\r\n content: \"\\\\f1a7\"; }\r\n\r\n.fa-piggy-bank:before {\r\n content: \"\\\\f4d3\"; }\r\n\r\n.fa-pills:before {\r\n content: \"\\\\f484\"; }\r\n\r\n.fa-pinterest:before {\r\n content: \"\\\\f0d2\"; }\r\n\r\n.fa-pinterest-p:before {\r\n content: \"\\\\f231\"; }\r\n\r\n.fa-pinterest-square:before {\r\n content: \"\\\\f0d3\"; }\r\n\r\n.fa-pizza-slice:before {\r\n content: \"\\\\f818\"; }\r\n\r\n.fa-place-of-worship:before {\r\n content: \"\\\\f67f\"; }\r\n\r\n.fa-plane:before {\r\n content: \"\\\\f072\"; }\r\n\r\n.fa-plane-arrival:before {\r\n content: \"\\\\f5af\"; }\r\n\r\n.fa-plane-departure:before {\r\n content: \"\\\\f5b0\"; }\r\n\r\n.fa-play:before {\r\n content: \"\\\\f04b\"; }\r\n\r\n.fa-play-circle:before {\r\n content: \"\\\\f144\"; }\r\n\r\n.fa-playstation:before {\r\n content: \"\\\\f3df\"; }\r\n\r\n.fa-plug:before {\r\n content: \"\\\\f1e6\"; }\r\n\r\n.fa-plus:before {\r\n content: \"\\\\f067\"; }\r\n\r\n.fa-plus-circle:before {\r\n content: \"\\\\f055\"; }\r\n\r\n.fa-plus-square:before {\r\n content: \"\\\\f0fe\"; }\r\n\r\n.fa-podcast:before {\r\n content: \"\\\\f2ce\"; }\r\n\r\n.fa-poll:before {\r\n content: \"\\\\f681\"; }\r\n\r\n.fa-poll-h:before {\r\n content: \"\\\\f682\"; }\r\n\r\n.fa-poo:before {\r\n content: \"\\\\f2fe\"; }\r\n\r\n.fa-poo-storm:before {\r\n content: \"\\\\f75a\"; }\r\n\r\n.fa-poop:before {\r\n content: \"\\\\f619\"; }\r\n\r\n.fa-portrait:before {\r\n content: \"\\\\f3e0\"; }\r\n\r\n.fa-pound-sign:before {\r\n content: \"\\\\f154\"; }\r\n\r\n.fa-power-off:before {\r\n content: \"\\\\f011\"; }\r\n\r\n.fa-pray:before {\r\n content: \"\\\\f683\"; }\r\n\r\n.fa-praying-hands:before {\r\n content: \"\\\\f684\"; }\r\n\r\n.fa-prescription:before {\r\n content: \"\\\\f5b1\"; }\r\n\r\n.fa-prescription-bottle:before {\r\n content: \"\\\\f485\"; }\r\n\r\n.fa-prescription-bottle-alt:before {\r\n content: \"\\\\f486\"; }\r\n\r\n.fa-print:before {\r\n content: \"\\\\f02f\"; }\r\n\r\n.fa-procedures:before {\r\n content: \"\\\\f487\"; }\r\n\r\n.fa-product-hunt:before {\r\n content: \"\\\\f288\"; }\r\n\r\n.fa-project-diagram:before {\r\n content: \"\\\\f542\"; }\r\n\r\n.fa-pushed:before {\r\n content: \"\\\\f3e1\"; }\r\n\r\n.fa-puzzle-piece:before {\r\n content: \"\\\\f12e\"; }\r\n\r\n.fa-python:before {\r\n content: \"\\\\f3e2\"; }\r\n\r\n.fa-qq:before {\r\n content: \"\\\\f1d6\"; }\r\n\r\n.fa-qrcode:before {\r\n content: \"\\\\f029\"; }\r\n\r\n.fa-question:before {\r\n content: \"\\\\f128\"; }\r\n\r\n.fa-question-circle:before {\r\n content: \"\\\\f059\"; }\r\n\r\n.fa-quidditch:before {\r\n content: \"\\\\f458\"; }\r\n\r\n.fa-quinscape:before {\r\n content: \"\\\\f459\"; }\r\n\r\n.fa-quora:before {\r\n content: \"\\\\f2c4\"; }\r\n\r\n.fa-quote-left:before {\r\n content: \"\\\\f10d\"; }\r\n\r\n.fa-quote-right:before {\r\n content: \"\\\\f10e\"; }\r\n\r\n.fa-quran:before {\r\n content: \"\\\\f687\"; }\r\n\r\n.fa-r-project:before {\r\n content: \"\\\\f4f7\"; }\r\n\r\n.fa-radiation:before {\r\n content: \"\\\\f7b9\"; }\r\n\r\n.fa-radiation-alt:before {\r\n content: \"\\\\f7ba\"; }\r\n\r\n.fa-rainbow:before {\r\n content: \"\\\\f75b\"; }\r\n\r\n.fa-random:before {\r\n content: \"\\\\f074\"; }\r\n\r\n.fa-raspberry-pi:before {\r\n content: \"\\\\f7bb\"; }\r\n\r\n.fa-ravelry:before {\r\n content: \"\\\\f2d9\"; }\r\n\r\n.fa-react:before {\r\n content: \"\\\\f41b\"; }\r\n\r\n.fa-reacteurope:before {\r\n content: \"\\\\f75d\"; }\r\n\r\n.fa-readme:before {\r\n content: \"\\\\f4d5\"; }\r\n\r\n.fa-rebel:before {\r\n content: \"\\\\f1d0\"; }\r\n\r\n.fa-receipt:before {\r\n content: \"\\\\f543\"; }\r\n\r\n.fa-recycle:before {\r\n content: \"\\\\f1b8\"; }\r\n\r\n.fa-red-river:before {\r\n content: \"\\\\f3e3\"; }\r\n\r\n.fa-reddit:before {\r\n content: \"\\\\f1a1\"; }\r\n\r\n.fa-reddit-alien:before {\r\n content: \"\\\\f281\"; }\r\n\r\n.fa-reddit-square:before {\r\n content: \"\\\\f1a2\"; }\r\n\r\n.fa-redhat:before {\r\n content: \"\\\\f7bc\"; }\r\n\r\n.fa-redo:before {\r\n content: \"\\\\f01e\"; }\r\n\r\n.fa-redo-alt:before {\r\n content: \"\\\\f2f9\"; }\r\n\r\n.fa-registered:before {\r\n content: \"\\\\f25d\"; }\r\n\r\n.fa-renren:before {\r\n content: \"\\\\f18b\"; }\r\n\r\n.fa-reply:before {\r\n content: \"\\\\f3e5\"; }\r\n\r\n.fa-reply-all:before {\r\n content: \"\\\\f122\"; }\r\n\r\n.fa-replyd:before {\r\n content: \"\\\\f3e6\"; }\r\n\r\n.fa-republican:before {\r\n content: \"\\\\f75e\"; }\r\n\r\n.fa-researchgate:before {\r\n content: \"\\\\f4f8\"; }\r\n\r\n.fa-resolving:before {\r\n content: \"\\\\f3e7\"; }\r\n\r\n.fa-restroom:before {\r\n content: \"\\\\f7bd\"; }\r\n\r\n.fa-retweet:before {\r\n content: \"\\\\f079\"; }\r\n\r\n.fa-rev:before {\r\n content: \"\\\\f5b2\"; }\r\n\r\n.fa-ribbon:before {\r\n content: \"\\\\f4d6\"; }\r\n\r\n.fa-ring:before {\r\n content: \"\\\\f70b\"; }\r\n\r\n.fa-road:before {\r\n content: \"\\\\f018\"; }\r\n\r\n.fa-robot:before {\r\n content: \"\\\\f544\"; }\r\n\r\n.fa-rocket:before {\r\n content: \"\\\\f135\"; }\r\n\r\n.fa-rocketchat:before {\r\n content: \"\\\\f3e8\"; }\r\n\r\n.fa-rockrms:before {\r\n content: \"\\\\f3e9\"; }\r\n\r\n.fa-route:before {\r\n content: \"\\\\f4d7\"; }\r\n\r\n.fa-rss:before {\r\n content: \"\\\\f09e\"; }\r\n\r\n.fa-rss-square:before {\r\n content: \"\\\\f143\"; }\r\n\r\n.fa-ruble-sign:before {\r\n content: \"\\\\f158\"; }\r\n\r\n.fa-ruler:before {\r\n content: \"\\\\f545\"; }\r\n\r\n.fa-ruler-combined:before {\r\n content: \"\\\\f546\"; }\r\n\r\n.fa-ruler-horizontal:before {\r\n content: \"\\\\f547\"; }\r\n\r\n.fa-ruler-vertical:before {\r\n content: \"\\\\f548\"; }\r\n\r\n.fa-running:before {\r\n content: \"\\\\f70c\"; }\r\n\r\n.fa-rupee-sign:before {\r\n content: \"\\\\f156\"; }\r\n\r\n.fa-sad-cry:before {\r\n content: \"\\\\f5b3\"; }\r\n\r\n.fa-sad-tear:before {\r\n content: \"\\\\f5b4\"; }\r\n\r\n.fa-safari:before {\r\n content: \"\\\\f267\"; }\r\n\r\n.fa-sass:before {\r\n content: \"\\\\f41e\"; }\r\n\r\n.fa-satellite:before {\r\n content: \"\\\\f7bf\"; }\r\n\r\n.fa-satellite-dish:before {\r\n content: \"\\\\f7c0\"; }\r\n\r\n.fa-save:before {\r\n content: \"\\\\f0c7\"; }\r\n\r\n.fa-schlix:before {\r\n content: \"\\\\f3ea\"; }\r\n\r\n.fa-school:before {\r\n content: \"\\\\f549\"; }\r\n\r\n.fa-screwdriver:before {\r\n content: \"\\\\f54a\"; }\r\n\r\n.fa-scribd:before {\r\n content: \"\\\\f28a\"; }\r\n\r\n.fa-scroll:before {\r\n content: \"\\\\f70e\"; }\r\n\r\n.fa-sd-card:before {\r\n content: \"\\\\f7c2\"; }\r\n\r\n.fa-search:before {\r\n content: \"\\\\f002\"; }\r\n\r\n.fa-search-dollar:before {\r\n content: \"\\\\f688\"; }\r\n\r\n.fa-search-location:before {\r\n content: \"\\\\f689\"; }\r\n\r\n.fa-search-minus:before {\r\n content: \"\\\\f010\"; }\r\n\r\n.fa-search-plus:before {\r\n content: \"\\\\f00e\"; }\r\n\r\n.fa-searchengin:before {\r\n content: \"\\\\f3eb\"; }\r\n\r\n.fa-seedling:before {\r\n content: \"\\\\f4d8\"; }\r\n\r\n.fa-sellcast:before {\r\n content: \"\\\\f2da\"; }\r\n\r\n.fa-sellsy:before {\r\n content: \"\\\\f213\"; }\r\n\r\n.fa-server:before {\r\n content: \"\\\\f233\"; }\r\n\r\n.fa-servicestack:before {\r\n content: \"\\\\f3ec\"; }\r\n\r\n.fa-shapes:before {\r\n content: \"\\\\f61f\"; }\r\n\r\n.fa-share:before {\r\n content: \"\\\\f064\"; }\r\n\r\n.fa-share-alt:before {\r\n content: \"\\\\f1e0\"; }\r\n\r\n.fa-share-alt-square:before {\r\n content: \"\\\\f1e1\"; }\r\n\r\n.fa-share-square:before {\r\n content: \"\\\\f14d\"; }\r\n\r\n.fa-shekel-sign:before {\r\n content: \"\\\\f20b\"; }\r\n\r\n.fa-shield-alt:before {\r\n content: \"\\\\f3ed\"; }\r\n\r\n.fa-ship:before {\r\n content: \"\\\\f21a\"; }\r\n\r\n.fa-shipping-fast:before {\r\n content: \"\\\\f48b\"; }\r\n\r\n.fa-shirtsinbulk:before {\r\n content: \"\\\\f214\"; }\r\n\r\n.fa-shoe-prints:before {\r\n content: \"\\\\f54b\"; }\r\n\r\n.fa-shopping-bag:before {\r\n content: \"\\\\f290\"; }\r\n\r\n.fa-shopping-basket:before {\r\n content: \"\\\\f291\"; }\r\n\r\n.fa-shopping-cart:before {\r\n content: \"\\\\f07a\"; }\r\n\r\n.fa-shopware:before {\r\n content: \"\\\\f5b5\"; }\r\n\r\n.fa-shower:before {\r\n content: \"\\\\f2cc\"; }\r\n\r\n.fa-shuttle-van:before {\r\n content: \"\\\\f5b6\"; }\r\n\r\n.fa-sign:before {\r\n content: \"\\\\f4d9\"; }\r\n\r\n.fa-sign-in-alt:before {\r\n content: \"\\\\f2f6\"; }\r\n\r\n.fa-sign-language:before {\r\n content: \"\\\\f2a7\"; }\r\n\r\n.fa-sign-out-alt:before {\r\n content: \"\\\\f2f5\"; }\r\n\r\n.fa-signal:before {\r\n content: \"\\\\f012\"; }\r\n\r\n.fa-signature:before {\r\n content: \"\\\\f5b7\"; }\r\n\r\n.fa-sim-card:before {\r\n content: \"\\\\f7c4\"; }\r\n\r\n.fa-simplybuilt:before {\r\n content: \"\\\\f215\"; }\r\n\r\n.fa-sistrix:before {\r\n content: \"\\\\f3ee\"; }\r\n\r\n.fa-sitemap:before {\r\n content: \"\\\\f0e8\"; }\r\n\r\n.fa-sith:before {\r\n content: \"\\\\f512\"; }\r\n\r\n.fa-skating:before {\r\n content: \"\\\\f7c5\"; }\r\n\r\n.fa-sketch:before {\r\n content: \"\\\\f7c6\"; }\r\n\r\n.fa-skiing:before {\r\n content: \"\\\\f7c9\"; }\r\n\r\n.fa-skiing-nordic:before {\r\n content: \"\\\\f7ca\"; }\r\n\r\n.fa-skull:before {\r\n content: \"\\\\f54c\"; }\r\n\r\n.fa-skull-crossbones:before {\r\n content: \"\\\\f714\"; }\r\n\r\n.fa-skyatlas:before {\r\n content: \"\\\\f216\"; }\r\n\r\n.fa-skype:before {\r\n content: \"\\\\f17e\"; }\r\n\r\n.fa-slack:before {\r\n content: \"\\\\f198\"; }\r\n\r\n.fa-slack-hash:before {\r\n content: \"\\\\f3ef\"; }\r\n\r\n.fa-slash:before {\r\n content: \"\\\\f715\"; }\r\n\r\n.fa-sleigh:before {\r\n content: \"\\\\f7cc\"; }\r\n\r\n.fa-sliders-h:before {\r\n content: \"\\\\f1de\"; }\r\n\r\n.fa-slideshare:before {\r\n content: \"\\\\f1e7\"; }\r\n\r\n.fa-smile:before {\r\n content: \"\\\\f118\"; }\r\n\r\n.fa-smile-beam:before {\r\n content: \"\\\\f5b8\"; }\r\n\r\n.fa-smile-wink:before {\r\n content: \"\\\\f4da\"; }\r\n\r\n.fa-smog:before {\r\n content: \"\\\\f75f\"; }\r\n\r\n.fa-smoking:before {\r\n content: \"\\\\f48d\"; }\r\n\r\n.fa-smoking-ban:before {\r\n content: \"\\\\f54d\"; }\r\n\r\n.fa-sms:before {\r\n content: \"\\\\f7cd\"; }\r\n\r\n.fa-snapchat:before {\r\n content: \"\\\\f2ab\"; }\r\n\r\n.fa-snapchat-ghost:before {\r\n content: \"\\\\f2ac\"; }\r\n\r\n.fa-snapchat-square:before {\r\n content: \"\\\\f2ad\"; }\r\n\r\n.fa-snowboarding:before {\r\n content: \"\\\\f7ce\"; }\r\n\r\n.fa-snowflake:before {\r\n content: \"\\\\f2dc\"; }\r\n\r\n.fa-snowman:before {\r\n content: \"\\\\f7d0\"; }\r\n\r\n.fa-snowplow:before {\r\n content: \"\\\\f7d2\"; }\r\n\r\n.fa-socks:before {\r\n content: \"\\\\f696\"; }\r\n\r\n.fa-solar-panel:before {\r\n content: \"\\\\f5ba\"; }\r\n\r\n.fa-sort:before {\r\n content: \"\\\\f0dc\"; }\r\n\r\n.fa-sort-alpha-down:before {\r\n content: \"\\\\f15d\"; }\r\n\r\n.fa-sort-alpha-up:before {\r\n content: \"\\\\f15e\"; }\r\n\r\n.fa-sort-amount-down:before {\r\n content: \"\\\\f160\"; }\r\n\r\n.fa-sort-amount-up:before {\r\n content: \"\\\\f161\"; }\r\n\r\n.fa-sort-down:before {\r\n content: \"\\\\f0dd\"; }\r\n\r\n.fa-sort-numeric-down:before {\r\n content: \"\\\\f162\"; }\r\n\r\n.fa-sort-numeric-up:before {\r\n content: \"\\\\f163\"; }\r\n\r\n.fa-sort-up:before {\r\n content: \"\\\\f0de\"; }\r\n\r\n.fa-soundcloud:before {\r\n content: \"\\\\f1be\"; }\r\n\r\n.fa-sourcetree:before {\r\n content: \"\\\\f7d3\"; }\r\n\r\n.fa-spa:before {\r\n content: \"\\\\f5bb\"; }\r\n\r\n.fa-space-shuttle:before {\r\n content: \"\\\\f197\"; }\r\n\r\n.fa-speakap:before {\r\n content: \"\\\\f3f3\"; }\r\n\r\n.fa-spider:before {\r\n content: \"\\\\f717\"; }\r\n\r\n.fa-spinner:before {\r\n content: \"\\\\f110\"; }\r\n\r\n.fa-splotch:before {\r\n content: \"\\\\f5bc\"; }\r\n\r\n.fa-spotify:before {\r\n content: \"\\\\f1bc\"; }\r\n\r\n.fa-spray-can:before {\r\n content: \"\\\\f5bd\"; }\r\n\r\n.fa-square:before {\r\n content: \"\\\\f0c8\"; }\r\n\r\n.fa-square-full:before {\r\n content: \"\\\\f45c\"; }\r\n\r\n.fa-square-root-alt:before {\r\n content: \"\\\\f698\"; }\r\n\r\n.fa-squarespace:before {\r\n content: \"\\\\f5be\"; }\r\n\r\n.fa-stack-exchange:before {\r\n content: \"\\\\f18d\"; }\r\n\r\n.fa-stack-overflow:before {\r\n content: \"\\\\f16c\"; }\r\n\r\n.fa-stamp:before {\r\n content: \"\\\\f5bf\"; }\r\n\r\n.fa-star:before {\r\n content: \"\\\\f005\"; }\r\n\r\n.fa-star-and-crescent:before {\r\n content: \"\\\\f699\"; }\r\n\r\n.fa-star-half:before {\r\n content: \"\\\\f089\"; }\r\n\r\n.fa-star-half-alt:before {\r\n content: \"\\\\f5c0\"; }\r\n\r\n.fa-star-of-david:before {\r\n content: \"\\\\f69a\"; }\r\n\r\n.fa-star-of-life:before {\r\n content: \"\\\\f621\"; }\r\n\r\n.fa-staylinked:before {\r\n content: \"\\\\f3f5\"; }\r\n\r\n.fa-steam:before {\r\n content: \"\\\\f1b6\"; }\r\n\r\n.fa-steam-square:before {\r\n content: \"\\\\f1b7\"; }\r\n\r\n.fa-steam-symbol:before {\r\n content: \"\\\\f3f6\"; }\r\n\r\n.fa-step-backward:before {\r\n content: \"\\\\f048\"; }\r\n\r\n.fa-step-forward:before {\r\n content: \"\\\\f051\"; }\r\n\r\n.fa-stethoscope:before {\r\n content: \"\\\\f0f1\"; }\r\n\r\n.fa-sticker-mule:before {\r\n content: \"\\\\f3f7\"; }\r\n\r\n.fa-sticky-note:before {\r\n content: \"\\\\f249\"; }\r\n\r\n.fa-stop:before {\r\n content: \"\\\\f04d\"; }\r\n\r\n.fa-stop-circle:before {\r\n content: \"\\\\f28d\"; }\r\n\r\n.fa-stopwatch:before {\r\n content: \"\\\\f2f2\"; }\r\n\r\n.fa-store:before {\r\n content: \"\\\\f54e\"; }\r\n\r\n.fa-store-alt:before {\r\n content: \"\\\\f54f\"; }\r\n\r\n.fa-strava:before {\r\n content: \"\\\\f428\"; }\r\n\r\n.fa-stream:before {\r\n content: \"\\\\f550\"; }\r\n\r\n.fa-street-view:before {\r\n content: \"\\\\f21d\"; }\r\n\r\n.fa-strikethrough:before {\r\n content: \"\\\\f0cc\"; }\r\n\r\n.fa-stripe:before {\r\n content: \"\\\\f429\"; }\r\n\r\n.fa-stripe-s:before {\r\n content: \"\\\\f42a\"; }\r\n\r\n.fa-stroopwafel:before {\r\n content: \"\\\\f551\"; }\r\n\r\n.fa-studiovinari:before {\r\n content: \"\\\\f3f8\"; }\r\n\r\n.fa-stumbleupon:before {\r\n content: \"\\\\f1a4\"; }\r\n\r\n.fa-stumbleupon-circle:before {\r\n content: \"\\\\f1a3\"; }\r\n\r\n.fa-subscript:before {\r\n content: \"\\\\f12c\"; }\r\n\r\n.fa-subway:before {\r\n content: \"\\\\f239\"; }\r\n\r\n.fa-suitcase:before {\r\n content: \"\\\\f0f2\"; }\r\n\r\n.fa-suitcase-rolling:before {\r\n content: \"\\\\f5c1\"; }\r\n\r\n.fa-sun:before {\r\n content: \"\\\\f185\"; }\r\n\r\n.fa-superpowers:before {\r\n content: \"\\\\f2dd\"; }\r\n\r\n.fa-superscript:before {\r\n content: \"\\\\f12b\"; }\r\n\r\n.fa-supple:before {\r\n content: \"\\\\f3f9\"; }\r\n\r\n.fa-surprise:before {\r\n content: \"\\\\f5c2\"; }\r\n\r\n.fa-suse:before {\r\n content: \"\\\\f7d6\"; }\r\n\r\n.fa-swatchbook:before {\r\n content: \"\\\\f5c3\"; }\r\n\r\n.fa-swimmer:before {\r\n content: \"\\\\f5c4\"; }\r\n\r\n.fa-swimming-pool:before {\r\n content: \"\\\\f5c5\"; }\r\n\r\n.fa-synagogue:before {\r\n content: \"\\\\f69b\"; }\r\n\r\n.fa-sync:before {\r\n content: \"\\\\f021\"; }\r\n\r\n.fa-sync-alt:before {\r\n content: \"\\\\f2f1\"; }\r\n\r\n.fa-syringe:before {\r\n content: \"\\\\f48e\"; }\r\n\r\n.fa-table:before {\r\n content: \"\\\\f0ce\"; }\r\n\r\n.fa-table-tennis:before {\r\n content: \"\\\\f45d\"; }\r\n\r\n.fa-tablet:before {\r\n content: \"\\\\f10a\"; }\r\n\r\n.fa-tablet-alt:before {\r\n content: \"\\\\f3fa\"; }\r\n\r\n.fa-tablets:before {\r\n content: \"\\\\f490\"; }\r\n\r\n.fa-tachometer-alt:before {\r\n content: \"\\\\f3fd\"; }\r\n\r\n.fa-tag:before {\r\n content: \"\\\\f02b\"; }\r\n\r\n.fa-tags:before {\r\n content: \"\\\\f02c\"; }\r\n\r\n.fa-tape:before {\r\n content: \"\\\\f4db\"; }\r\n\r\n.fa-tasks:before {\r\n content: \"\\\\f0ae\"; }\r\n\r\n.fa-taxi:before {\r\n content: \"\\\\f1ba\"; }\r\n\r\n.fa-teamspeak:before {\r\n content: \"\\\\f4f9\"; }\r\n\r\n.fa-teeth:before {\r\n content: \"\\\\f62e\"; }\r\n\r\n.fa-teeth-open:before {\r\n content: \"\\\\f62f\"; }\r\n\r\n.fa-telegram:before {\r\n content: \"\\\\f2c6\"; }\r\n\r\n.fa-telegram-plane:before {\r\n content: \"\\\\f3fe\"; }\r\n\r\n.fa-temperature-high:before {\r\n content: \"\\\\f769\"; }\r\n\r\n.fa-temperature-low:before {\r\n content: \"\\\\f76b\"; }\r\n\r\n.fa-tencent-weibo:before {\r\n content: \"\\\\f1d5\"; }\r\n\r\n.fa-tenge:before {\r\n content: \"\\\\f7d7\"; }\r\n\r\n.fa-terminal:before {\r\n content: \"\\\\f120\"; }\r\n\r\n.fa-text-height:before {\r\n content: \"\\\\f034\"; }\r\n\r\n.fa-text-width:before {\r\n content: \"\\\\f035\"; }\r\n\r\n.fa-th:before {\r\n content: \"\\\\f00a\"; }\r\n\r\n.fa-th-large:before {\r\n content: \"\\\\f009\"; }\r\n\r\n.fa-th-list:before {\r\n content: \"\\\\f00b\"; }\r\n\r\n.fa-the-red-yeti:before {\r\n content: \"\\\\f69d\"; }\r\n\r\n.fa-theater-masks:before {\r\n content: \"\\\\f630\"; }\r\n\r\n.fa-themeco:before {\r\n content: \"\\\\f5c6\"; }\r\n\r\n.fa-themeisle:before {\r\n content: \"\\\\f2b2\"; }\r\n\r\n.fa-thermometer:before {\r\n content: \"\\\\f491\"; }\r\n\r\n.fa-thermometer-empty:before {\r\n content: \"\\\\f2cb\"; }\r\n\r\n.fa-thermometer-full:before {\r\n content: \"\\\\f2c7\"; }\r\n\r\n.fa-thermometer-half:before {\r\n content: \"\\\\f2c9\"; }\r\n\r\n.fa-thermometer-quarter:before {\r\n content: \"\\\\f2ca\"; }\r\n\r\n.fa-thermometer-three-quarters:before {\r\n content: \"\\\\f2c8\"; }\r\n\r\n.fa-think-peaks:before {\r\n content: \"\\\\f731\"; }\r\n\r\n.fa-thumbs-down:before {\r\n content: \"\\\\f165\"; }\r\n\r\n.fa-thumbs-up:before {\r\n content: \"\\\\f164\"; }\r\n\r\n.fa-thumbtack:before {\r\n content: \"\\\\f08d\"; }\r\n\r\n.fa-ticket-alt:before {\r\n content: \"\\\\f3ff\"; }\r\n\r\n.fa-times:before {\r\n content: \"\\\\f00d\"; }\r\n\r\n.fa-times-circle:before {\r\n content: \"\\\\f057\"; }\r\n\r\n.fa-tint:before {\r\n content: \"\\\\f043\"; }\r\n\r\n.fa-tint-slash:before {\r\n content: \"\\\\f5c7\"; }\r\n\r\n.fa-tired:before {\r\n content: \"\\\\f5c8\"; }\r\n\r\n.fa-toggle-off:before {\r\n content: \"\\\\f204\"; }\r\n\r\n.fa-toggle-on:before {\r\n content: \"\\\\f205\"; }\r\n\r\n.fa-toilet:before {\r\n content: \"\\\\f7d8\"; }\r\n\r\n.fa-toilet-paper:before {\r\n content: \"\\\\f71e\"; }\r\n\r\n.fa-toolbox:before {\r\n content: \"\\\\f552\"; }\r\n\r\n.fa-tools:before {\r\n content: \"\\\\f7d9\"; }\r\n\r\n.fa-tooth:before {\r\n content: \"\\\\f5c9\"; }\r\n\r\n.fa-torah:before {\r\n content: \"\\\\f6a0\"; }\r\n\r\n.fa-torii-gate:before {\r\n content: \"\\\\f6a1\"; }\r\n\r\n.fa-tractor:before {\r\n content: \"\\\\f722\"; }\r\n\r\n.fa-trade-federation:before {\r\n content: \"\\\\f513\"; }\r\n\r\n.fa-trademark:before {\r\n content: \"\\\\f25c\"; }\r\n\r\n.fa-traffic-light:before {\r\n content: \"\\\\f637\"; }\r\n\r\n.fa-train:before {\r\n content: \"\\\\f238\"; }\r\n\r\n.fa-tram:before {\r\n content: \"\\\\f7da\"; }\r\n\r\n.fa-transgender:before {\r\n content: \"\\\\f224\"; }\r\n\r\n.fa-transgender-alt:before {\r\n content: \"\\\\f225\"; }\r\n\r\n.fa-trash:before {\r\n content: \"\\\\f1f8\"; }\r\n\r\n.fa-trash-alt:before {\r\n content: \"\\\\f2ed\"; }\r\n\r\n.fa-trash-restore:before {\r\n content: \"\\\\f829\"; }\r\n\r\n.fa-trash-restore-alt:before {\r\n content: \"\\\\f82a\"; }\r\n\r\n.fa-tree:before {\r\n content: \"\\\\f1bb\"; }\r\n\r\n.fa-trello:before {\r\n content: \"\\\\f181\"; }\r\n\r\n.fa-tripadvisor:before {\r\n content: \"\\\\f262\"; }\r\n\r\n.fa-trophy:before {\r\n content: \"\\\\f091\"; }\r\n\r\n.fa-truck:before {\r\n content: \"\\\\f0d1\"; }\r\n\r\n.fa-truck-loading:before {\r\n content: \"\\\\f4de\"; }\r\n\r\n.fa-truck-monster:before {\r\n content: \"\\\\f63b\"; }\r\n\r\n.fa-truck-moving:before {\r\n content: \"\\\\f4df\"; }\r\n\r\n.fa-truck-pickup:before {\r\n content: \"\\\\f63c\"; }\r\n\r\n.fa-tshirt:before {\r\n content: \"\\\\f553\"; }\r\n\r\n.fa-tty:before {\r\n content: \"\\\\f1e4\"; }\r\n\r\n.fa-tumblr:before {\r\n content: \"\\\\f173\"; }\r\n\r\n.fa-tumblr-square:before {\r\n content: \"\\\\f174\"; }\r\n\r\n.fa-tv:before {\r\n content: \"\\\\f26c\"; }\r\n\r\n.fa-twitch:before {\r\n content: \"\\\\f1e8\"; }\r\n\r\n.fa-twitter:before {\r\n content: \"\\\\f099\"; }\r\n\r\n.fa-twitter-square:before {\r\n content: \"\\\\f081\"; }\r\n\r\n.fa-typo3:before {\r\n content: \"\\\\f42b\"; }\r\n\r\n.fa-uber:before {\r\n content: \"\\\\f402\"; }\r\n\r\n.fa-ubuntu:before {\r\n content: \"\\\\f7df\"; }\r\n\r\n.fa-uikit:before {\r\n content: \"\\\\f403\"; }\r\n\r\n.fa-umbrella:before {\r\n content: \"\\\\f0e9\"; }\r\n\r\n.fa-umbrella-beach:before {\r\n content: \"\\\\f5ca\"; }\r\n\r\n.fa-underline:before {\r\n content: \"\\\\f0cd\"; }\r\n\r\n.fa-undo:before {\r\n content: \"\\\\f0e2\"; }\r\n\r\n.fa-undo-alt:before {\r\n content: \"\\\\f2ea\"; }\r\n\r\n.fa-uniregistry:before {\r\n content: \"\\\\f404\"; }\r\n\r\n.fa-universal-access:before {\r\n content: \"\\\\f29a\"; }\r\n\r\n.fa-university:before {\r\n content: \"\\\\f19c\"; }\r\n\r\n.fa-unlink:before {\r\n content: \"\\\\f127\"; }\r\n\r\n.fa-unlock:before {\r\n content: \"\\\\f09c\"; }\r\n\r\n.fa-unlock-alt:before {\r\n content: \"\\\\f13e\"; }\r\n\r\n.fa-untappd:before {\r\n content: \"\\\\f405\"; }\r\n\r\n.fa-upload:before {\r\n content: \"\\\\f093\"; }\r\n\r\n.fa-ups:before {\r\n content: \"\\\\f7e0\"; }\r\n\r\n.fa-usb:before {\r\n content: \"\\\\f287\"; }\r\n\r\n.fa-user:before {\r\n content: \"\\\\f007\"; }\r\n\r\n.fa-user-alt:before {\r\n content: \"\\\\f406\"; }\r\n\r\n.fa-user-alt-slash:before {\r\n content: \"\\\\f4fa\"; }\r\n\r\n.fa-user-astronaut:before {\r\n content: \"\\\\f4fb\"; }\r\n\r\n.fa-user-check:before {\r\n content: \"\\\\f4fc\"; }\r\n\r\n.fa-user-circle:before {\r\n content: \"\\\\f2bd\"; }\r\n\r\n.fa-user-clock:before {\r\n content: \"\\\\f4fd\"; }\r\n\r\n.fa-user-cog:before {\r\n content: \"\\\\f4fe\"; }\r\n\r\n.fa-user-edit:before {\r\n content: \"\\\\f4ff\"; }\r\n\r\n.fa-user-friends:before {\r\n content: \"\\\\f500\"; }\r\n\r\n.fa-user-graduate:before {\r\n content: \"\\\\f501\"; }\r\n\r\n.fa-user-injured:before {\r\n content: \"\\\\f728\"; }\r\n\r\n.fa-user-lock:before {\r\n content: \"\\\\f502\"; }\r\n\r\n.fa-user-md:before {\r\n content: \"\\\\f0f0\"; }\r\n\r\n.fa-user-minus:before {\r\n content: \"\\\\f503\"; }\r\n\r\n.fa-user-ninja:before {\r\n content: \"\\\\f504\"; }\r\n\r\n.fa-user-nurse:before {\r\n content: \"\\\\f82f\"; }\r\n\r\n.fa-user-plus:before {\r\n content: \"\\\\f234\"; }\r\n\r\n.fa-user-secret:before {\r\n content: \"\\\\f21b\"; }\r\n\r\n.fa-user-shield:before {\r\n content: \"\\\\f505\"; }\r\n\r\n.fa-user-slash:before {\r\n content: \"\\\\f506\"; }\r\n\r\n.fa-user-tag:before {\r\n content: \"\\\\f507\"; }\r\n\r\n.fa-user-tie:before {\r\n content: \"\\\\f508\"; }\r\n\r\n.fa-user-times:before {\r\n content: \"\\\\f235\"; }\r\n\r\n.fa-users:before {\r\n content: \"\\\\f0c0\"; }\r\n\r\n.fa-users-cog:before {\r\n content: \"\\\\f509\"; }\r\n\r\n.fa-usps:before {\r\n content: \"\\\\f7e1\"; }\r\n\r\n.fa-ussunnah:before {\r\n content: \"\\\\f407\"; }\r\n\r\n.fa-utensil-spoon:before {\r\n content: \"\\\\f2e5\"; }\r\n\r\n.fa-utensils:before {\r\n content: \"\\\\f2e7\"; }\r\n\r\n.fa-vaadin:before {\r\n content: \"\\\\f408\"; }\r\n\r\n.fa-vector-square:before {\r\n content: \"\\\\f5cb\"; }\r\n\r\n.fa-venus:before {\r\n content: \"\\\\f221\"; }\r\n\r\n.fa-venus-double:before {\r\n content: \"\\\\f226\"; }\r\n\r\n.fa-venus-mars:before {\r\n content: \"\\\\f228\"; }\r\n\r\n.fa-viacoin:before {\r\n content: \"\\\\f237\"; }\r\n\r\n.fa-viadeo:before {\r\n content: \"\\\\f2a9\"; }\r\n\r\n.fa-viadeo-square:before {\r\n content: \"\\\\f2aa\"; }\r\n\r\n.fa-vial:before {\r\n content: \"\\\\f492\"; }\r\n\r\n.fa-vials:before {\r\n content: \"\\\\f493\"; }\r\n\r\n.fa-viber:before {\r\n content: \"\\\\f409\"; }\r\n\r\n.fa-video:before {\r\n content: \"\\\\f03d\"; }\r\n\r\n.fa-video-slash:before {\r\n content: \"\\\\f4e2\"; }\r\n\r\n.fa-vihara:before {\r\n content: \"\\\\f6a7\"; }\r\n\r\n.fa-vimeo:before {\r\n content: \"\\\\f40a\"; }\r\n\r\n.fa-vimeo-square:before {\r\n content: \"\\\\f194\"; }\r\n\r\n.fa-vimeo-v:before {\r\n content: \"\\\\f27d\"; }\r\n\r\n.fa-vine:before {\r\n content: \"\\\\f1ca\"; }\r\n\r\n.fa-vk:before {\r\n content: \"\\\\f189\"; }\r\n\r\n.fa-vnv:before {\r\n content: \"\\\\f40b\"; }\r\n\r\n.fa-volleyball-ball:before {\r\n content: \"\\\\f45f\"; }\r\n\r\n.fa-volume-down:before {\r\n content: \"\\\\f027\"; }\r\n\r\n.fa-volume-mute:before {\r\n content: \"\\\\f6a9\"; }\r\n\r\n.fa-volume-off:before {\r\n content: \"\\\\f026\"; }\r\n\r\n.fa-volume-up:before {\r\n content: \"\\\\f028\"; }\r\n\r\n.fa-vote-yea:before {\r\n content: \"\\\\f772\"; }\r\n\r\n.fa-vr-cardboard:before {\r\n content: \"\\\\f729\"; }\r\n\r\n.fa-vuejs:before {\r\n content: \"\\\\f41f\"; }\r\n\r\n.fa-walking:before {\r\n content: \"\\\\f554\"; }\r\n\r\n.fa-wallet:before {\r\n content: \"\\\\f555\"; }\r\n\r\n.fa-warehouse:before {\r\n content: \"\\\\f494\"; }\r\n\r\n.fa-water:before {\r\n content: \"\\\\f773\"; }\r\n\r\n.fa-weebly:before {\r\n content: \"\\\\f5cc\"; }\r\n\r\n.fa-weibo:before {\r\n content: \"\\\\f18a\"; }\r\n\r\n.fa-weight:before {\r\n content: \"\\\\f496\"; }\r\n\r\n.fa-weight-hanging:before {\r\n content: \"\\\\f5cd\"; }\r\n\r\n.fa-weixin:before {\r\n content: \"\\\\f1d7\"; }\r\n\r\n.fa-whatsapp:before {\r\n content: \"\\\\f232\"; }\r\n\r\n.fa-whatsapp-square:before {\r\n content: \"\\\\f40c\"; }\r\n\r\n.fa-wheelchair:before {\r\n content: \"\\\\f193\"; }\r\n\r\n.fa-whmcs:before {\r\n content: \"\\\\f40d\"; }\r\n\r\n.fa-wifi:before {\r\n content: \"\\\\f1eb\"; }\r\n\r\n.fa-wikipedia-w:before {\r\n content: \"\\\\f266\"; }\r\n\r\n.fa-wind:before {\r\n content: \"\\\\f72e\"; }\r\n\r\n.fa-window-close:before {\r\n content: \"\\\\f410\"; }\r\n\r\n.fa-window-maximize:before {\r\n content: \"\\\\f2d0\"; }\r\n\r\n.fa-window-minimize:before {\r\n content: \"\\\\f2d1\"; }\r\n\r\n.fa-window-restore:before {\r\n content: \"\\\\f2d2\"; }\r\n\r\n.fa-windows:before {\r\n content: \"\\\\f17a\"; }\r\n\r\n.fa-wine-bottle:before {\r\n content: \"\\\\f72f\"; }\r\n\r\n.fa-wine-glass:before {\r\n content: \"\\\\f4e3\"; }\r\n\r\n.fa-wine-glass-alt:before {\r\n content: \"\\\\f5ce\"; }\r\n\r\n.fa-wix:before {\r\n content: \"\\\\f5cf\"; }\r\n\r\n.fa-wizards-of-the-coast:before {\r\n content: \"\\\\f730\"; }\r\n\r\n.fa-wolf-pack-battalion:before {\r\n content: \"\\\\f514\"; }\r\n\r\n.fa-won-sign:before {\r\n content: \"\\\\f159\"; }\r\n\r\n.fa-wordpress:before {\r\n content: \"\\\\f19a\"; }\r\n\r\n.fa-wordpress-simple:before {\r\n content: \"\\\\f411\"; }\r\n\r\n.fa-wpbeginner:before {\r\n content: \"\\\\f297\"; }\r\n\r\n.fa-wpexplorer:before {\r\n content: \"\\\\f2de\"; }\r\n\r\n.fa-wpforms:before {\r\n content: \"\\\\f298\"; }\r\n\r\n.fa-wpressr:before {\r\n content: \"\\\\f3e4\"; }\r\n\r\n.fa-wrench:before {\r\n content: \"\\\\f0ad\"; }\r\n\r\n.fa-x-ray:before {\r\n content: \"\\\\f497\"; }\r\n\r\n.fa-xbox:before {\r\n content: \"\\\\f412\"; }\r\n\r\n.fa-xing:before {\r\n content: \"\\\\f168\"; }\r\n\r\n.fa-xing-square:before {\r\n content: \"\\\\f169\"; }\r\n\r\n.fa-y-combinator:before {\r\n content: \"\\\\f23b\"; }\r\n\r\n.fa-yahoo:before {\r\n content: \"\\\\f19e\"; }\r\n\r\n.fa-yandex:before {\r\n content: \"\\\\f413\"; }\r\n\r\n.fa-yandex-international:before {\r\n content: \"\\\\f414\"; }\r\n\r\n.fa-yarn:before {\r\n content: \"\\\\f7e3\"; }\r\n\r\n.fa-yelp:before {\r\n content: \"\\\\f1e9\"; }\r\n\r\n.fa-yen-sign:before {\r\n content: \"\\\\f157\"; }\r\n\r\n.fa-yin-yang:before {\r\n content: \"\\\\f6ad\"; }\r\n\r\n.fa-yoast:before {\r\n content: \"\\\\f2b1\"; }\r\n\r\n.fa-youtube:before {\r\n content: \"\\\\f167\"; }\r\n\r\n.fa-youtube-square:before {\r\n content: \"\\\\f431\"; }\r\n\r\n.fa-zhihu:before {\r\n content: \"\\\\f63f\"; }\r\n\r\n.sr-only {\r\n border: 0;\r\n clip: rect(0, 0, 0, 0);\r\n height: 1px;\r\n margin: -1px;\r\n overflow: hidden;\r\n padding: 0;\r\n position: absolute;\r\n width: 1px; }\r\n\r\n.sr-only-focusable:active, .sr-only-focusable:focus {\r\n clip: auto;\r\n height: auto;\r\n margin: 0;\r\n overflow: visible;\r\n position: static;\r\n width: auto; }\r\n@font-face {\r\n font-family: 'Font Awesome 5 Brands';\r\n font-style: normal;\r\n font-weight: normal;\r\n font-display: auto;\r\n src: url(\"../modules/webfonts/fa-brands-400.eot\");\r\n src: url(\"../modules/webfonts/fa-brands-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../modules/webfonts/fa-brands-400.woff2\") format(\"woff2\"), url(\"../modules/webfonts/fa-brands-400.woff\") format(\"woff\"), url(\"../modules/webfonts/fa-brands-400.ttf\") format(\"truetype\"), url(\"../modules/webfonts/fa-brands-400.svg#fontawesome\") format(\"svg\"); }\r\n\r\n.fab {\r\n font-family: 'Font Awesome 5 Brands'; }\r\n@font-face {\r\n font-family: 'Font Awesome 5 Free';\r\n font-style: normal;\r\n font-weight: 400;\r\n font-display: auto;\r\n src: url(\"../modules/webfonts/fa-regular-400.eot\");\r\n src: url(\"../modules/webfonts/fa-regular-400.eot?#iefix\") format(\"embedded-opentype\"), url(\"../modules/webfonts/fa-regular-400.woff2\") format(\"woff2\"), url(\"../modules/webfonts/fa-regular-400.woff\") format(\"woff\"), url(\"../modules/webfonts/fa-regular-400.ttf\") format(\"truetype\"), url(\"../modules/webfonts/fa-regular-400.svg#fontawesome\") format(\"svg\"); }\r\n\r\n.far {\r\n font-family: 'Font Awesome 5 Free';\r\n font-weight: 400; }\r\n@font-face {\r\n font-family: 'Font Awesome 5 Free';\r\n font-style: normal;\r\n font-weight: 900;\r\n font-display: auto;\r\n src: url(\"../modules/webfonts/fa-solid-900.eot\");\r\n src: url(\"../modules/webfonts/fa-solid-900.eot?#iefix\") format(\"embedded-opentype\"), url(\"../modules/webfonts/fa-solid-900.woff2\") format(\"woff2\"), url(\"../modules/webfonts/fa-solid-900.woff\") format(\"woff\"), url(\"../modules/webfonts/fa-solid-900.ttf\") format(\"truetype\"), url(\"../modules/webfonts/fa-solid-900.svg#fontawesome\") format(\"svg\"); }\r\n\r\n.fa,\r\n.fas {\r\n font-family: 'Font Awesome 5 Free';\r\n font-weight: 900; }\r\n`;","export const ALGO_APP_ACTION_FAIL = 'ALGO_APP_ACTION_FAIL';\r\nexport const ALGO_APP_ACTION_BEGIN = 'ALGO_APP_ACTION_BEGIN';\r\nexport const ALGO_APP_NAVIGATE_SUCCESS = 'ALGO_APP_NAVIGATE_SUCCESS';\r\nexport const ALGO_APP_NAVIGATE_BACK = 'ALGO_APP_NAVIGATE_BACK';\r\nexport const ALGO_APP_SHOW_TOAST_SUCCESS = 'ALGO_APP_SHOW_TOAST_SUCCESS';\r\nexport const ALGO_APP_RESET_TOAST_SUCCESS = 'ALGO_APP_RESET_TOAST_SUCCESS';\r\nexport const ALGO_APP_TOGGLE_SIDEBAR_SUCCESS = 'ALGO_APP_TOGGLE_SIDEBAR_SUCCESS';\r\nexport const ALGO_APP_SET_PROJEKT_ID_SUCCESS = 'ALGO_APP_SET_PROJEKT_ID_SUCCESS';\r\n\r\nconst appInsights = window.Algo.appInsights;\r\n\r\nexport const resetToast = () => (dispatch) => {\r\n dispatch({ type: ALGO_APP_RESET_TOAST_SUCCESS });\r\n};\r\n\r\nexport const navigate = (data, type = ALGO_APP_NAVIGATE_SUCCESS) => (dispatch) => {\r\n window.onbeforeunload = null;\r\n appInsights.startTrackPage(data.view);\r\n if(type !== ALGO_APP_NAVIGATE_BACK) {\r\n window.history.pushState(data, 'Algo');\r\n }\r\n\r\n dispatch({ type: ALGO_APP_NAVIGATE_SUCCESS, payload: data });\r\n appInsights.stopTrackPage(data.view);\r\n};\r\n\r\nexport const toggleSidebar = () => (dispatch) => {\r\n dispatch({ type: ALGO_APP_TOGGLE_SIDEBAR_SUCCESS });\r\n appInsights.trackEvent({ name: 'toggleSidebar' });\r\n};\r\n\r\nexport const showToast = (data) => (dispatch) => {\r\n dispatch({ type: ALGO_APP_SHOW_TOAST_SUCCESS, payload: data });\r\n appInsights.trackEvent({ name: 'showToast' });\r\n};\r\n\r\nexport const setProjektId = (projektId) => (dispatch) => {\r\n dispatch({ type: ALGO_APP_SET_PROJEKT_ID_SUCCESS, payload: projektId });\r\n appInsights.trackEvent({ name: 'setProjektId' });\r\n};","export const TRANSLATIONS_EN = {\r\n ALLE: \"All\",\r\n ANMELDEN: {\r\n ANGEMELDET_BLEIBEN: \"Remain logged in\",\r\n ANMELDEN: \"Login\",\r\n IMPRESSUM: \"Imprint\",\r\n PASSWORT: \"Password\",\r\n PASSWORT_VERGESSEN: \"Forgot password\",\r\n REGISTRIEREN: \"Register\",\r\n WILLKOMMEN: \"Welcome\",\r\n },\r\n DATEN_LADEN: \"Data loading...\",\r\n DATUM: \"Date\",\r\n ERROR: \"Error\",\r\n ERROR_HANDLER: {\r\n FEHLER_AUFGETRETEN: \"An error has occurred\",\r\n FOLGENDE_FEHLER: \"The following errors occurred\",\r\n NICHT_ANGEMELDET: \"You are no longer logged in.\",\r\n NICHT_GEFUNDEN: \"Request couldn't found.\",\r\n SERVER_ERROR: \"Server error\",\r\n SERVER_NICHT_ERREICHBAR: \"Server currently unavailable\",\r\n ZEITUEBERSCHREITUNG: \"The operation timed out, please try again later.\",\r\n },\r\n EXCEL_EXPORT: \"Export Excel table\",\r\n ES_IST_EIN_FEHLER_AUFGETRETEN: \"An error has occurred\",\r\n FIRMA: \"Company\",\r\n GESAMT: \"Total\",\r\n IMPRESSUM: {\r\n ANGABEN: \"Entries referred to § 5 TMG\",\r\n ANGABEN_BERUFSHAFTPFLICHT:\r\n \"Name and registered office of the corporation\",\r\n EINTRAGUNG: \"Registration in the commercial register\",\r\n GELTUNGSRAUM: \"Scope of insurance\",\r\n KONTAKT: \"Contact\",\r\n REGISTEREINTRAG: \"Registration entry\",\r\n REGISTERGERICHT: \"Registration court\",\r\n REGISTERNUMMER: \"Registration number\",\r\n TITEL_ANGABEN_BERUFSHAFTPFLICHT:\r\n \"Information on professional liability insurance\",\r\n UMSATZSTEUER_ID: \"Sales tax ID\",\r\n UMSATZSTEUER_IDENTIFIKATIONSNUMMER:\r\n \"Sales tax ID according to §27 a sales tax law\",\r\n VERTRETEN: \"Represented by\",\r\n },\r\n INFO: \"Info\",\r\n LANGUAGE: {\r\n MODAL_TITLE: \"Update language in ALGO\",\r\n MODAL_BODY: \"Do you want to reload ALGO to apply language?\",\r\n },\r\n MAILADRESSE: \"E-mail address\",\r\n MEINE: \"My\",\r\n MEINE_PROJEKTE: {\r\n DSGVO: \"Data protection consent\",\r\n ERSTELLEN: \"Create projects\",\r\n JETZT_ZUSTIMMEN: \"Agree now\",\r\n KEINE_DSGVO_VORHANDEN:\r\n \"No project-specific data protection consent available\",\r\n PROJEKT: \"Project\",\r\n PROJEKTBETEILIGTE: \"Project participants\",\r\n PROJEKTROLLE: \"Project role\",\r\n TITEL: \"Projects\",\r\n ZUSTIMMUNG_WIDERRUFEN: \"Revoke consent\",\r\n },\r\n NACHNAME: \"Surname\",\r\n NAVIGATIONS_ELEMENTE: {\r\n AVISIERUNG: \"Notification\",\r\n ABBRECHEN: \"Cancel\",\r\n ABMELDEN: \"Logout\",\r\n ABSCHICKEN: \"Send\",\r\n ANMELDEN: \"Login\",\r\n ARCHIV: \"Archive\",\r\n BAUSTELLE: \"Construction site\",\r\n BUCHUNGEN: \"Bookings\",\r\n CONTAINER: \"Shipping management\",\r\n CONTAINER: \"Shipping\",\r\n DASHBOARD: \"Dashboard\",\r\n DATENSCHUTZINFORMATION: \"Information on data privacy and GTC\",\r\n EINSTELLUNGEN: \"Settings\",\r\n FIRMEN: \"Companies\",\r\n HANDBUCH_AG: \"Manualbook for clients\",\r\n HANDBUCH_ANMELDUNG_UND_REGISTRATION:\r\n \"Manualbook for login & registration\",\r\n HANDBUCH_FIRMEN: \"Manualbook for companies\",\r\n IMPRESSUM: \"Imprint\",\r\n INFORMATION: \"Information\",\r\n JA: \"Yes\",\r\n LOESCHEN: \"Delete\",\r\n MEINE_PROJEKTE: \"My projects\",\r\n MITARBEITER: \"Employees\",\r\n NEWS: \"News\",\r\n ORGANISATION: \"Organization\",\r\n PASSWORT_VERGESSEN: \"Forgot password\",\r\n PROJEKTBETEILIGTE: \"Project participants\",\r\n PROJEKTROLLEN: \"Project roles\",\r\n REGISTRIEREN: \"Register\",\r\n RELOAD: \"Reload\",\r\n SCHLIESSEN: \"Close\",\r\n TRANSPORTE: \"Transports\",\r\n UEBERSICHT: \"Overview\",\r\n UNTERLAGEN: \"Documents\",\r\n WEITER: \"Next\",\r\n ZUKO_SERVER: \"ZuKo server\",\r\n ZURUECK: \"Back\",\r\n ZURUECK_ZU_PROJEKTEN: \"Back to Projects\",\r\n ZURUECKSETZEN: \"Reset\",\r\n ZUTRITTSKONTROLLE: \"Access control\",\r\n ZUTRITTSPUNKTE: \"Entry points\",\r\n },\r\n PASSWORT_VERGESSEN: {\r\n PASSWORT: \"Password\",\r\n PASSWORT_VERGESSEN_TITEL: \"Forgot password?\",\r\n PASSWORT_WIEDERHOLEN: \"Repeat password\",\r\n PASSWORT_ZURUECKSETZEN: \"Reset password:\",\r\n SCHLÜSSEL: \"Key\",\r\n SCHLÜSSEL_TITEL: \"Please enter the key sent to you:\",\r\n },\r\n PDF_EXPORT: \"Export PDF list\",\r\n REGISTRIEREN: {\r\n DATENSCHUTZ_TEIL1: \"Information on data processing can be found in our\",\r\n DATENSCHUTZ_TEIL2: \"Privacy policy\",\r\n DATENSCHUTZ_TEIL3: \"\",\r\n DATENSCHUTZ_AKZEPTIEREN_TEIL1: \"I agree to the\",\r\n DATENSCHUTZ_AKZEPTIEREN_TEIL2:\r\n \"general terms and conditions\",\r\n DATENSCHUTZ_AKZEPTIEREN_TEIL3: \"\",\r\n PASSWORT: \"Password\",\r\n PASSWORT_WIEDERHOLEN: \"Repeat password\",\r\n REGISTRIEREN: \"Register\",\r\n UNTERNEHMEN: \"Company\",\r\n },\r\n TOPBAR: {\r\n ABMELDUNG_ERFOLGREICH: \"You have been successfully logged out\",\r\n MODAL_BODY:\r\n \"Select 'Log Out' below when you're ready to end your current session.\",\r\n MODAL_TITLE: \"Are you sure you want to log out?\",\r\n },\r\n VORNAME: \"Firstname\",\r\n SPALTEN_FILTERN: \"Filter columns\",\r\n SUCCESS: \"Successful\",\r\n SUPPORT_NUMMER_KOPIERT:\r\n \"The phonenummber of support was successfully copied\",\r\n};\r\n\r\nexport default TRANSLATIONS_EN;\r\n","export const TRANSLATIONS_DE = {\r\n ALLE: \"Alle\",\r\n ANMELDEN: {\r\n ANGEMELDET_BLEIBEN: \"Angemeldet bleiben\",\r\n PASSWORT: \"Passwort\",\r\n WILLKOMMEN: \"Willkommen\",\r\n },\r\n DATEN_LADEN: \"Daten werden geladen...\",\r\n DATUM: \"Datum\",\r\n DE: \"Deutsch\",\r\n EN: \"Englisch\",\r\n ERROR: \"Fehler\",\r\n ERROR_HANDLER: {\r\n ES_IST_EIN_FEHLER_AUFGETRETEN: \"Es ist ein Fehler aufgetreten\",\r\n FEHLER_AUFGETRETEN: \"Es ist ein Fehler aufgetreten\",\r\n FOLGENDE_FEHLER: \"Folgende Fehler sind aufgetreten\",\r\n NICHT_ANGEMELDET: \"Sie sind nicht mehr angemeldet.\",\r\n NICHT_GEFUNDEN: \"Anfrage konnte nicht gefunden werden\",\r\n SERVER_ERROR: \"Server Fehler\",\r\n SERVER_NICHT_ERREICHBAR: \"Server aktuell nicht erreichbar\",\r\n ZEITUEBERSCHREITUNG:\r\n \"Der Vorgang wurde wegen Zeitüberschreitung abgebrochen, bitte versuchen Sie es später erneut.\",\r\n },\r\n EXCEL_EXPORT: \"Excel-Tabelle exportieren\",\r\n FIRMA: \"Firma\",\r\n GESAMT: \"Gesamtes\",\r\n IMPRESSUM: {\r\n ANGABEN: \"Angaben gemäß § 5 TMG\",\r\n ANGABEN_BERUFSHAFTPFLICHT: \"Name und Sitz der Gesellschaft\",\r\n EINTRAGUNG: \"Eintragung im Handelsregister\",\r\n GELTUNGSRAUM: \"Geltungsraum der Versicherung\",\r\n KONTAKT: \"Kontakt\",\r\n REGISTEREINTRAG: \"Registereintrag\",\r\n REGISTERGERICHT: \"Registergericht\",\r\n REGISTERNUMMER: \"Registernummer\",\r\n TITEL_ANGABEN_BERUFSHAFTPFLICHT:\r\n \" Angaben zur Berufshaftpflichtversicherung\",\r\n UMSATZSTEUER_ID: \"Umsatzsteuer-ID\",\r\n UMSATZSTEUER_IDENTIFIKATIONSNUMMER:\r\n \" Umsatzsteuer-Identifikationsnummer gemäß §27 a Umsatzsteuergesetz\",\r\n VERTRETEN: \"Vertreten durch\",\r\n },\r\n INFO: \"Info\",\r\n LANGUAGE: {\r\n MODAL_TITLE: \"Sprache in ALGO aktualisieren\",\r\n MODAL_BODY:\r\n \"Möchten Sie in ALGO neuladen um die Sprache vollständig anzuwenden?\",\r\n },\r\n MAILADRESSE: \"E-Mailadresse\",\r\n MEINE: \"Meine\",\r\n MEINE_PROJEKTE: {\r\n DSGVO: \"Datenschutzeinwilligung\",\r\n ERSTELLEN: \"Projekte erstellen\",\r\n JETZT_ZUSTIMMEN: \"Jetzt zustimmen\",\r\n KEINE_DSGVO_VORHANDEN:\r\n \"Keine projektspezifische Datenschutzeinwilligung vorhanden\",\r\n PROJEKT: \"Projekt\",\r\n PROJEKTBETEILIGTE: \"Projektbeteiligte\",\r\n PROJEKTROLLE: \"Projektrolle\",\r\n SCHNELLZUGRIFF: \"Schnellzugriff\",\r\n TITEL: \"Projekte\",\r\n ZUSTIMMUNG_WIDERRUFEN: \"Zustimmung widerrufen\",\r\n },\r\n NACHNAME: \"Nachname\",\r\n NAVIGATIONS_ELEMENTE: {\r\n AVISIERUNG: \"Avisierung\",\r\n ABBRECHEN: \"Abbrechen\",\r\n ABMELDEN: \"Abmelden\",\r\n ABSCHICKEN: \"Abschicken\",\r\n ANMELDEN: \"Anmelden\",\r\n ARCHIV: \"Archiv\",\r\n BAUSTELLE: \"Baustelle\",\r\n BUCHUNGEN: \"Buchungen\",\r\n CONTAINER: \"Container\",\r\n CONTAINER_BUCHUNGEN:\r\n \"Container - Buchungen (Hier kann die Containerbuchung angefragt werden)\",\r\n CONTAINER_TOGGLE: \"Container\",\r\n DASHBOARD: \"Dashboard\",\r\n DASHBOARD_AUSWERTUNGEN: \"Dashboard - Auswertungen\",\r\n DATENSCHUTZINFORMATION: \"Datenschutzinformation und AGB\",\r\n EINSTELLUNGEN: \"Einstellungen\",\r\n FIRMEN: \"Firmen\",\r\n HANDBUCH_AG: \"Handbuch für Auftraggeber\",\r\n HANDBUCH_ANMELDUNG_UND_REGISTRATION:\r\n \"Handbuch für Anmeldung & Registration\",\r\n HANDBUCH_FIRMEN: \"Handbuch für Firmen\",\r\n IMPRESSUM: \"Impressum\",\r\n INFORMATION: \"Information\",\r\n JA: \"Ja\",\r\n LOESCHEN: \"Löschen\",\r\n MEINE_PROJEKTE: \"Meine Projekte\",\r\n MITARBEITER: \"Mitarbeitende\",\r\n NEWS: \"News\",\r\n NEWS_UEBERSICHT: \"Übersicht - News-Modul\",\r\n ORGANISATION: \"Organisation\",\r\n PASSWORT_VERGESSEN: \"Passwort vergessen\",\r\n PROJEKTBETEILIGTE: \"Projektbeteiligte\",\r\n PROJEKT_PROJEKTBETEILIGTE: \"Projekt - Projektbeteiligte\",\r\n PROJEKTROLLEN: \"Projektrollen\",\r\n REGISTRIEREN: \"Registrieren\",\r\n RELOAD: \"Neuladen\",\r\n SCHLIESSEN: \"Schließen\",\r\n TRANSPORTE: \"Transporte\",\r\n TRANSPORTE_AVISIERUNG:\r\n \"Avisierung - Transporte (Hier können Anlieferungen & Abholungen angemeldet werden)\",\r\n UEBERSICHT: \"Übersicht\",\r\n UNTERLAGEN: \"Unterlagen\",\r\n WEITER: \"Weiter\",\r\n ZUKO_ORGANSIATION:\r\n \"Zutrittskontrolle - Organisation (Hier kann die Personal- & Firmenerstellung erfolgen)\",\r\n ZUKO_SERVER: \"Zuko Server\",\r\n ZURUECK_ZU_PROJEKTEN: \"Zurück zu Projekte\",\r\n ZURUECK: \"Zurück\",\r\n ZURUECKSETZEN: \"Zurücksetzen\",\r\n ZUTRITTSKONTROLLE: \"Zutrittskontrolle\",\r\n ZUTRITTSPUNKTE: \"Zutrittspunkte\",\r\n },\r\n PASSWORT_VERGESSEN: {\r\n PASSWORT: \"Passwort\",\r\n PASSWORT_VERGESSEN_TITEL: \"Haben Sie Ihr Passwort vergessen?\",\r\n PASSWORT_WIEDERHOLEN: \"Passwort wiederholen\",\r\n PASSWORT_ZURUECKSETZEN: \"Passwort zurücksetzen:\",\r\n SCHLÜSSEL: \"Schlüssel\",\r\n SCHLÜSSEL_TITEL: \"Bitte geben Sie den zugeschickten Schlüssel ein:\",\r\n ERFOLGREICH_ZURUECKGESETZT: \"Passwort wurde erfolgreich zurückgesetzt.\",\r\n },\r\n PDF_EXPORT: \"Pdf-Liste exportieren\",\r\n REGISTRIEREN: {\r\n DATENSCHUTZ_TEIL1: \"Informationen zur Datenverarbeitung können Sie unserer\",\r\n DATENSCHUTZ_TEIL2: \"Datenschutzerklärung\",\r\n DATENSCHUTZ_TEIL3: \"entnehmen.\",\r\n DATENSCHUTZ_AKZEPTIEREN_TEIL1: \"Ich stimme den\",\r\n DATENSCHUTZ_AKZEPTIEREN_TEIL2:\r\n \"allgemeinen Nutzungsbedingungen\",\r\n DATENSCHUTZ_AKZEPTIEREN_TEIL3: \"zu\",\r\n PASSWORT: \"Passwort\",\r\n PASSWORT_WIEDERHOLEN: \"Passwort wiederholen\",\r\n REGISTRIEREN: \"Registrieren\",\r\n UNTERNEHMEN: \"Unternehmen\",\r\n },\r\n TOPBAR: {\r\n ABMELDUNG_ERFOLGREICH: \"Sie wurden erfolgreich abgemeldet\",\r\n MODAL_BODY:\r\n \"Wählen Sie unten 'Abmelden', wenn Sie bereit sind, Ihre aktuelle Sitzung zu beenden.\",\r\n MODAL_TITLE: \"Wollen Sie sich wirklich abmelden?\",\r\n },\r\n VORNAME: \"Vorname\",\r\n SPALTEN_FILTERN: \"Spalten filtern\",\r\n SUCCESS: \"Erfolgreich\",\r\n SUPPORT_NUMMER_KOPIERT: \"Die Telefonnummer des Supports wurde kopiert\",\r\n};\r\n\r\nexport default TRANSLATIONS_DE;\r\n","export const TRANSLATIONS_DE_ZUKO = {\r\n ABGELAUFEN_AM: \"Abgelaufen am\",\r\n ABGELAUFENE_UNTERLAGEN: \"Abgelaufene Unterlagen\",\r\n A1_PFLICHT_GETRENNT: \"A1
Pflicht\",\r\n A1_PFLICHT_UNTERLAGEN: \"A1-Pflicht-Unterlagen\",\r\n A1_PFLICHT_UNTERLAGEN_NICHT_VOLLSTAENDIG:\r\n \"A1-Pflicht Unterlagen sind nicht vollständig\",\r\n ABFRAGE_DRUCK_MODAL_BODY:\r\n \"Möchten Sie den Baustellenausweis drucken? Dann wählen Sie im Dropdown einen Druckvorlage aus und klicken auf Baustellenausweis drucken.\",\r\n A1_UNTERLAGEN: \"A1 Unterlagen\",\r\n ADMINISTRATION: \"Administration\",\r\n AKTION: \"Aktion\",\r\n AKTIONEN: \"Aktionen\",\r\n AKTIONSNACHRICHT: \"Aktionsnachricht\",\r\n AKTIV: \"aktiv\",\r\n AKTIVIERT: \"Aktiviert\",\r\n AKTUALISIEREN: \"Aktualisieren\",\r\n AKTUELLE_BESETZUNG: \"Aktuelle Besetzung\",\r\n AKTUELLE_BESETZUNG_DOWNLOAD: \"Aktuelle Besetzung herunterladen\",\r\n AKTUELLE_BESETZUNG_TEIL1: \"Aktuelle\",\r\n AKTUELLE_BESETZUNG_TEIL2: \"Besetzung\",\r\n ALLE_FIRMEN_UNTERLAGEN_GEPRUEFT:\r\n \"Aktuell sind alle Firmenunterlagen geprüft\",\r\n ALLE_MINDESTLOHNERKLAERUNGEN_GEPRUEFT:\r\n \"Aktuell sind alle Mindestlohnerklärungen geprüft\",\r\n ALLE_PERSONAL_UNTERLAGEN_GEPRUEFT:\r\n \"Aktuell sind alle Personalunterlagen geprüft\",\r\n ALLERERSTER_EINTRITT_GETRENNT: \"Allererstes
Eintrittsereignis\",\r\n AM: \"am\",\r\n ANTIPASSBACK: \"Antipassback\",\r\n ANTIPASSBACK_AKTIVIEREN: \"Antipassback aktivieren\",\r\n ANWESENDE_FIRMEN_GESAMT: \"Anwesende Firmen\",\r\n ANWESENDE_FIRMEN_TOP_5: \"Anwesende Firmen (Top 5)\",\r\n ANWESENDE_MITARBEITER_GES: \"Anwesendes Personal (gesamt)\",\r\n ANWESENDE_MITARBEITER_LIVE: \"Anwesende Personal (live)\",\r\n ANWESENDES_PERSONAL: \"Anwesendes Personal\",\r\n ANWESENDES_PERSONAL_GESAMT: \"Anwesendes Personal (gesamt)\",\r\n ANZAHL: \"Anzahl\",\r\n ANZAHL_AUFTRAGGEBER: \"Anzahl Auftraggeber\",\r\n ANZAHL_AUSWEISGUELTIGKEIT_KONFIGURATOR: \"Anzahl Tage der Ausweisgültikgeit\",\r\n ANZAHL_FIRMEN: \"Anzahl Firmen\",\r\n ANZAHL_GEWERKE: \"Anzahl Gewerke\",\r\n ANZAHL_MITARBEITER: \"Anzahl Personal\",\r\n ANZAHL_NACHUNTERNEHMER: \"Anzahl Nachunternehmer\",\r\n ANZAHL_ERSTHELFER: \"Anzahl Ersthelfer*in\",\r\n ANZAHL_SANITAETER: \"Anzahl Sanitäter*in\",\r\n ANZAHL_BRANDSCHUTZBEAUFTRAGTER: \"Anzahl Brandschutzbeauftragter*in\",\r\n ANZAHL_TAGE: \"Anzahl Tage\",\r\n ANZAHL_TAGE_ABLAUF_GUELTIGKEIT: \"Anzahl der Tage vor Ablauf der Gültigkeit\",\r\n ANZAHL_TAGE_TITLE: \"z.B. 5 Tage nach Erstellung\",\r\n ARBEITSERLAUBNIS: \"Arbeitserlaubnis\",\r\n ARBEITSVERHAELTNIS: \"Arbeitsverhältnis\",\r\n ARBEITSVERHAELTNIS_ART: {\r\n VOLLZEIT: \"Vollzeit\",\r\n TEILZEIT: \"Teilzeit\",\r\n AUSBILDUNG: \"Ausbildung\",\r\n SELBSTSTÄNDIG: \"Selbstständig\",\r\n ALTERSTEILZEIT: \"Altersteilzeit\",\r\n FREIE_MITARBEIT: \"Freie Mitarbeit\",\r\n GERINGFÜGIGE_BESCHÄFTIGUNG: \"Geringfügige Beschäftigung\",\r\n KETTENARBEITSVERHÄLTNIS: \"Kettenarbeitsverhältnis\",\r\n LEIHARBEIT: \"Leiharbeit\",\r\n ZEITARBEIT: \"Zeitarbeit\",\r\n PRAKTIKUM: \"Praktikum\",\r\n STUDENTENJOB: \"Studentenjob\",\r\n AUSHILFSTÄTIGKEITEN: \"Aushilfstätigkeiten\",\r\n SAISONJOB: \"Saisonjob\",\r\n SONSTIGE: \"Sonstige\",\r\n },\r\n ARBEITSVERHAELTNIS_AUSWAEHLEN: \"Arbeitsverhältnis auswählen\",\r\n ARBEITSZEITEN: \"Arbeitszeiten\",\r\n ARCHIV: \"Archiv\",\r\n AUFENTHALTSERLAUBNIS: \"Aufenthaltserlaubnis\",\r\n AUFENTHALTSTITEL: \"Aufenthaltstitel\",\r\n AUTOMATISCHE_SPERRUNG: \"Automatische Sperrung\",\r\n AUFTRAGGEBER: \"Auftraggeber*in\",\r\n AUFTRAGGEBER_GELOESCHT: \"Auftraggeber*in gelöscht\",\r\n AUFTRAGGEBER_HINZUFUEGEN: \"Auftraggeber*in hinzufügen\",\r\n AUFTRAGGEBER_HINZUGEFUEGT: \"Auftraggeber*in hinzugefügt\",\r\n AUFTRAGGEBER_LOESCHEN: \"Auftraggeber*in löschen\",\r\n AUFTRAGGEBER_MODAL_LOESCHEN:\r\n \"Wollen Sie den/die Auftraggeber*in wirklich löschen?\",\r\n AUFTRAGGEBER_MUSS_HINZUGEFUEGT_WERDEN:\r\n \"Fügen Sie einen Auftraggeber hinzu.\",\r\n AUSGENOMMEN_FIRMEN: \"Ausgenommene Firmen\",\r\n AUSGENOMMEN_FIRMEN_HELP_1:\r\n \"Möchten Sie das eine Firma von der Systemgültigkeit unberührt bleibt, \" +\r\n \"dann fügen Sie eine geben Sie auf der linken Seite eine Firma ein und klicken auf den Pfeil um Sie der WhiteList hinzufügen.\",\r\n AUSGEWAEHLTE_UNTERLAGEN: \"Ausgewählte Unterlagen\",\r\n AUSTRITT: \"Austritt\",\r\n AUSWEISE: \"ausweise\",\r\n AUSWEIS_GUELTIGKEIT_KONFIGURATOR: \"Ausweisgültigkeit-Konfigurator\",\r\n AUSWEIS_GUELTIGKEIT_NICHT_EINGESTELLT:\r\n \"Ausweisgültigkeit noch nicht aktiviert.\",\r\n AUSWEIS_INFO_MODAL: {\r\n TITEL: \"Erste Schritte\",\r\n VERSCHIEDENE_VORLAGE:\r\n \"Hier können verschiedene Vorlagen ausgewählt werden\",\r\n DESIGN_ERSTELLEN: \"Ausweisdesign erstellen\",\r\n BUTTON_FUER_SYSTEMVORLAGE:\r\n \"Mit diesem Button kann man eine Systemvorlage erstellen\",\r\n DESIGN_LOESCHEN: \"Ausweisvorlage löschen\",\r\n BUTTON_FUER_LOESCHEN:\r\n \"Ist eine Vorlage ausgewählt, kann mit diesem Button die Vorlage gelöscht werden\",\r\n TEXT_VORDERSEITE:\r\n \"Die Bilder und der Text im Kopfbereich anklicken, um \" +\r\n \"diese zu bearbeiten. Klicken Sie den Kopf/Fußbalken \" +\r\n \"an um die Farbe zu ändern. Im Fußbereich lässt sich \" +\r\n \"die Farbe der Texte ändern, die Texte allerdings \" +\r\n \"nicht, die werden beim Druck automatisch gefüllt.\",\r\n TEXT_RUECKSEITE:\r\n \" Mit Klick auf die Texte, sowie auf die Symbole \" +\r\n \"lassen sich diese ändern. Mit Klick auf das Bild im \" +\r\n \"Kopfbereich lässt sich dieses bearbeiten.\",\r\n },\r\n AUSWEIS_KONFIGURIEREN: \"Ausweisgültigkeit konfigurieren\",\r\n AUSWEIS_VORLAGE: \"Ausweisvorlage designen\",\r\n AUSWEIS_VORLAGEN: \"Ausweis-Vorlagen\",\r\n AUSWEISBILD: \"Ausweisbild\",\r\n AUSWEISE_ERFOLGREICH_GESPERRT: \"Ausweise wurden erfolgreich gesperrt\",\r\n AUSWERTUNGEN_AKTUALISIEREN: \"Auswertungen aktualisieren\",\r\n AUSWERTUNGEN_ZUTRITTSEREIGNISSE: \"Auswertungen Zutrittsereignisse\",\r\n AUSWERTUNGEN_ZUTRITTSEREIGNISSE_TEIL1: \"Auswertungen\",\r\n AUSWERTUNGEN_ZUTRITTSEREIGNISSE_TEIL2: \"Zutrittsereignisse\",\r\n AUSWIRKUNGEN_AUF_AUSWEISGUELTIGKEIT:\r\n \"Auswirkungen
auf
Ausweisgültigkeit\",\r\n BAUSTELLE: \"Baustelle\",\r\n BAUSTELLEN: \"Baustellen-\",\r\n BAUSTELLENAUSWEISANZAHL: \"Baustellenausweisanzahl\",\r\n BAUSTELLENAUSWEISE: \"Baustellenausweise\",\r\n BAUSTELLENAUSWEISE_GESAMT: \"Baustellenausweise gesamt\",\r\n BAUSTELLENAUSWEISE_GETRENNT: \"Baustellen-
ausweise\",\r\n BAUSTELLENAUSWEISE_GESPERRT: \"Gesperrte Baustellenausweise\",\r\n BAUSTELLENAUSWEIS_ANZAHL: \"Anzahl Baustellenausweise\",\r\n BAUSTELLENAUSWEIS_AKTIV_ANZAHL: \"Anzahl aktiver Baustellenausweise\",\r\n BAUSTELLENAUSWEIS_AUSWAEHLEN: \"Bitte einen Baustellenausweis auswählen\",\r\n BAUSTELLENAUSWEIS_DRUCKEN: \"Baustellenausweis drucken\",\r\n BAUSTELLENAUSWEIS_ENTSPERREN: \"Baustellenausweis entsperren\",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN: \"Baustellenausweis-Einstellungen\",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN_AKTUALISIEREN_UND:\r\n \"Einstellungen aktualisieren und \",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN_NICHT_SYNCHRONISIERT:\r\n \"Baustellenweis Einstellungen sind nicht synchronisiert\",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN_SETZEN:\r\n \"Baustellenausweis-Einstellungen müssen erst gesetzt werden.\",\r\n BAUSTELLENAUSWEIS_ENTSPERREN: \"Baustellenausweis entsperren\",\r\n BAUSTELLENAUSWEIS_ENTSPERREN_MODAL:\r\n \"Möchten Sie den Baustellenausweis wirklich entsperren?\",\r\n BAUSTELLENAUSWEIS_ERFOLGREICH_ERSTELLT:\r\n \"Baustellenausweis erfolgreich erstellt\",\r\n BAUSTELLENAUSWEIS_ERFOLGREICH_GESPERRT:\r\n \"Baustellenausweis wurde erfolgreich gesperrt\",\r\n BAUSTELLENAUSWEIS_ERFOLGREICH_SYNCHRONISIERT:\r\n \"Baustellenausweis erfolgreich synchronisiert.\",\r\n BAUSTELLENAUSWEIS_ERSTELLEN: \"Baustellenausweis erstellen\",\r\n BAUSTELLENAUSWEIS_ERSTELLEN_DRUCKEN: \"Baustellenausweis erstellen/drucken\",\r\n BAUSTELLENAUSWEIS_ERSTELLT_WERDEN:\r\n \"Es muss erst ein Baustellenausweis erstellt werden.\",\r\n BAUSTELLENAUSWEIS_EXISTIERT: \"Baustellenausweis existiert bereits!\",\r\n BAUSTELLENAUSWEIS_GESPERRT: \"Baustellenausweis ist gesperrt\",\r\n BAUSTELLENAUSWEIS_GUELTIG_AB: \"Baustellenausweise gültig ab\",\r\n BAUSTELLENAUSWEIS_GUELTIG_BIS: \"Baustellenausweise gültig bis\",\r\n BAUSTELLENAUSWEIS_GRUND_AUSWAEHLEN: \"Löschgrund auswählen\",\r\n BAUSTELLENAUSWEIS_LOESCHEN: \"Baustellenausweis löschen\",\r\n BAUSTELLENAUSWEIS_LOESCHEN_SONSITGE_GRUND: \"Sonstige Grund\",\r\n BAUSTELLENAUSWEIS_LOESCHGRUND_FEHLDRUCK: \"Fehldruck\",\r\n BAUSTELLENAUSWEIS_LOESCHEN_LOESCHGRUND: \"Löschgrund\",\r\n BAUSTELLENAUSWEIS_LOESCHGRUND_SONSTIGE: \"Sonstige\",\r\n BAUSTELLENAUSWEIS_LOESCHGRUND_VERLASSEN: \"Baustelle verlassen\",\r\n BAUSTELLENAUSWEIS_LOESCHGRUND_VERWEIS: \"Baustellenverweis\",\r\n BAUSTELLENAUSWEIS_LOESCHEN_BODY:\r\n \"Wollen Sie den Baustellenausweis wirklich löschen\",\r\n BAUSTELLENAUSWEIS_LOESCHEN_LOESCHGRUNG: \"Löschgrund\",\r\n BAUSTELLENAUSWEIS_NICHT_MEHR_GUELTIG:\r\n \"Baustellenweis ist nicht mehr gültig\",\r\n BAUSTELLENAUSWEIS_NICHT_SYNCRONISIERT:\r\n \"Baustellenausweis ist nicht synchronisiert\",\r\n BAUSTELLENAUSWEIS_NOCH_NICHT_GUELTIG:\r\n \"Baustellenweis ist noch nicht gültig\",\r\n BAUSTELLENAUSWEIS_OHNE_BILD_TEIL1:\r\n \"Wollen Sie den Baustellenausweis wirklich\",\r\n BAUSTELLENAUSWEIS_OHNE_BILD_TEIL2: \"ohne Bild\",\r\n BAUSTELLENAUSWEIS_OHNE_BILD_TEIL3: \"drucken?\",\r\n BAUSTELLENAUSWEIS_SPERREN: \"Baustellenausweis sperren\",\r\n BAUSTELLENAUSWEIS_SCANNEN: \"Baustellenausweis/Name scannen/eingeben\",\r\n BAUSTELLENAUSWEIS_SUCHEN: \"Baustellenausweis suchen\",\r\n BAUSTELLENAUSWEIS_SYNCHRONISIEREN: \"Baustellenausweise synchronisieren\",\r\n BAUSTELLENAUSWEIS_WURDE_GEDRUCKT:\r\n \"Baustellenausweis mit der Kartennummer {{kartennummer}} wurde gedruckt\",\r\n BAUSTELLENAUSWEIS_VERLAENGERN: \"Baustellenausweis verlängern\",\r\n BAUSTELLENAUSWEIS_VERLAENGERN_MODAL:\r\n \"Möchten Sie den Baustellenausweis wirklich verlängern?\",\r\n BEDINGUNG_STARTZEIT:\r\n \" Die Startzeit darf nicht größer oder gleich der Endzeit sein!\",\r\n BENACHRICHTIGUNGEN: \"Benachrichtigungen\",\r\n BENACHRICHTIUNG_FIRMENVERWALTER:\r\n \"Benachrichtung an Firmenverwaltung (Tage vor Ablauf)\",\r\n BENACHRICHTIGUNGEN_HELP_1:\r\n \"Bei Aktivierung der E-Mail an die Firmenverwaltung, erhält diese eine Informationsmail, \" +\r\n \"dass die Gültigkeit des Baustellenausweises wegen fehlender Unterlagen, in der von Ihnen \" +\r\n \"gesetzten Anzahl an Tagen, abläuft.\",\r\n BENACHRICHTIGUNGEN_HELP_2:\r\n \"Bei Aktivierung der E-Mail an Prüfverwaltung bekommt eine E-Mail, erhält diese eine Informationsmail, \" +\r\n \"dass die Gültigkeit des Baustellenausweises wegen fehlender Unterlagen, in der von Ihnen gesetzten Anzahl an Tagen, abläuft. \",\r\n BENACHRICHTIUNG_PRUEFVERWALTUNG:\r\n \"Benachrichtung an Prüfverwaltung (Tage vor Ablauf)\",\r\n BERECHTIGUNGEN: \"Berechtigungen\",\r\n BERECHTIGUNGSGRUPPE: \"Berechtigungsgruppe\",\r\n BERECHTIGUNGSGRUPPE_ERFOLGREICH_HINZUGEFÜGT:\r\n \"Berechtigungsgruppe wurde erfolgreich hinzugefügt\",\r\n BERECHTIGUNGSGRUPPE_HINZUFUEGEN: \"Berechtigungsgruppe hinzufügen\",\r\n BERECHTIGUNGSGRUPPEN_ID_KOPIEREN: \"Berechtigungsgruppen-ID kopieren\",\r\n BERECHTIGUNGSGRUPPEN: \"Berechtigungsgruppen\",\r\n BERECHTIGUNGSGRUPPEN_VERWALTEN: \"Berechtigungsgruppen verwalten\",\r\n BERECHTIGUNGSGRUPPEN_TEIL1: \"Berechtigungs-\",\r\n BERECHTIGUNGSGRUPPEN_TEIL2: \"gruppen\",\r\n BERECHTIGUNGSGRUPPEN_VERWALTEN_TEIL1: \"Berechtigungs-\",\r\n BERECHTIGUNGSGRUPPEN_VERWALTEN_TEIL2: \"gruppen verwalten\",\r\n BERECHTIGUNGSGRUPPEN_SYNCHRONISIEREN: \"Berechtigunsgruppen synchronisieren\",\r\n BERECHTIGUNGSGRUPPE_AKTUALISIEREN: \"Berechtigungsgruppe aktualisieren\",\r\n BERECHTIGUNGSGRUPPE_AUSWAEHLEN: \"Berechtigungsgruppe auswählen\",\r\n BERECHTIGUNGSGRUPPE_GETRENNT: \"Berechtigungs-
gruppe\",\r\n BERECHTIGUNGSGRUPPE_LOESCHEN: \"Berechtigungsgruppe löschen\",\r\n BERECHTIGUNGSGRUPPE_NICHT_ZUGEWIESEN:\r\n \"Berechtigungsgruppe ist nicht zugewiesen\",\r\n BESCHREIBUNG: \"Beschreibung\",\r\n BETRIEBSSANITAETER: \"Betriebssanitäter*in\",\r\n BETRIEBSSANITAETER_GETRENNT: \"Betriebs-
sanitäter*in\",\r\n BEZEICHNUNG: \"Bezeichnung\",\r\n BILD_MODAL: {\r\n TITEL: \"Bild hinzufügen/entfernen\",\r\n BODY: \"Möchten Sie ein Bild hinzufügen oder entfernen?\",\r\n BILD_HINZUFUEGEN: \"Bild hinzufügen\",\r\n ENTFERNE_BILD: \"Entferne Bild\",\r\n },\r\n BILDVERIFIZIERUNG: \"Bildverifizierung\",\r\n BILDVERIFIZIERUNG_AKTIVIEREN: \"Bildverifizierung aktivieren\",\r\n BILDVERIFIZIERUNG_DEAKTIVIEREN: \"Bildverifizierung deaktivieren\",\r\n BIS: \"bis\",\r\n BODY_ZUTRITTSPUNKT_LOESCHEN:\r\n \"Wollen Sie den Zutrittspunkt wirklich löschen?\",\r\n BRANDSCHUTZBEAUFTRAGTER: \"Brandschutzbeauftragter*in\",\r\n BRANDSCHUTZBEAUFTRAGTE_PERSONEN: \"Brandschutzbeauftragte Personen\",\r\n DATEI: \"Datei\",\r\n DATEI_AUSWAEHLEN: \"Wählen Sie eine Datei aus\",\r\n DATEI_TYPEN: {\r\n ERFORDERLICHE_UNTERLAGEN: \"Erforderliche Unterlagen\",\r\n WEITERE_UNTERLAGEN: \"Weitere Unterlagen\",\r\n NICHT_EU_BÜRGER_UNTERLAGEN: \"Nicht EU-Bürger Unterlagen\",\r\n A1_UNTERLAGEN: \"A1 Unterlagen\",\r\n WERKVERTRAGSARBEITNEHMERKARTE_UNTERLAGEN:\r\n \"Werkvertragsarbeitnehmerkarte Unterlagen\",\r\n },\r\n DATEI_VORHANDEN: \"Datei vorhanden?\",\r\n DATUM_AUSWAEHLEN: \"Datum auswählen\",\r\n DAVON_AKTIV: \"davon {{anzahl}} aktiv \",\r\n DEAKTIVIERT: \"Deaktiviert\",\r\n DIENSTAG: \"Dienstag\",\r\n DOKUMENT_ENTPRUEFEN: \"Prüfung Dokument widerrufen\",\r\n DOKUMENT_ERSETZEN: \"Dokument ersetzen\",\r\n DOKUMENT_ERFOLGREICH_ERSETZT: \"Dokument erfolgreich ersetzt.\",\r\n DOKUMENT_GELOESCHT: \"Dokument gelöscht\",\r\n DOKUMENT_LOESCHEN: \"Dokument löschen\",\r\n DOKUMENT_MODAL_ENTPRUEFEN:\r\n \"Wollen Sie dieses Dokument wirklich als nicht mehr geprüft markieren?\",\r\n DOKUMENT_MODAL_LOESCHEN: \"Wollen Sie dieses Dokument wirklich löschen?\",\r\n DOKUMENT_MODAL_PRUEFEN:\r\n \"Wollen Sie dieses Dokument wirklich als geprüft markieren?\",\r\n DOKUMENT_PRUEFEN: \"Dokument prüfen\",\r\n DOKUMENT_WIRD_GELADEN: \"Dokument wird geladen\",\r\n DONNERSTAG: \"Donnerstag\",\r\n DOWNLOAD_NAME: \"Downloadname\",\r\n DREHKREUZ: \"Drehkreuz XY Container\",\r\n DRUCKEN: \"Drucken\",\r\n DRUCKVORLAGE: \"Druckvorlage\",\r\n DRUCKVORSCHAU: \"Druckvorschau\",\r\n DURCHGEFUEHRT_AM: \"Durchgeführt am\",\r\n DURCHGEFUEHRT_VON: \"Durchgeführt von\",\r\n EINGABE_ENDPOINT: \"Hier Endpoint eingeben\",\r\n EINSTELLUNGEN: \"Einstellungen\",\r\n EINSTELLUNGEN_ERFOLGREICH_GESETZT:\r\n \"Die Einstellungen für die Baustellenausweise wurden erfolgreich gesetzt.\",\r\n EINSTELLUNGEN_GESETZT_WERDEN:\r\n \"Die Einstellungen für die Baustellenausweise müssen gesetzt sein.\",\r\n EINSTELLUNGEN_SETZEN: \"Einstellungen setzen\",\r\n EINSTELLUNGEN_SYNCHRONISIEREN: \"Einstellungen synchronisieren\",\r\n EINTRITT: \"Eintritt\",\r\n ENDDATUM: \"Enddatum\",\r\n ENDPUNKT: \"Endpunkt\",\r\n ENDPUNKT_FEHLT: \"Bitte geben Sie einen Endpunkt ein.\",\r\n ENDPUNKT_VERBINDUNG_ERFOLGREICH: \"Endpunkt wurde erfolgreich angesprochen.\",\r\n ENTNPRUEFE_MINDESTLOHNERKLAERUNG_MODAL: {\r\n BODY: \"Wollen Sie diese Mindestlohnerklärung wirklich als nicht geprüft markieren?\",\r\n BUTTON: \"Als nicht geprüft markieren\",\r\n TITEL: \"Mindestlohnerklärung Prüfung widerrufen\",\r\n },\r\n ENTPRUEFT_MARKIEREN: \"Als nicht geprüft markieren\",\r\n ENTSPERREN: \"Entsperren\",\r\n ENTSPERRGRUND: \"Grund der Entsperrung\",\r\n ERFORDERLICH: \"Erforderlich\",\r\n ERFORDERLICHE_UNTERLAGEN: \"Erforderliche Unterlagen\",\r\n ERREICHBAR: \"erreichbar\",\r\n ERREICHBARKEIT_LOG: \"Erreichbarkeit Log\",\r\n ERST_MIT_SERVER_VERBINDEN:\r\n \"Stellen Sie erst eine Verbindung zum Server her.\",\r\n ERSTELLT_SYNCHRONISIERT_BERECHTUNGSGRUPPELIMIT:\r\n \"Erstellt/Synchronisiert/Berechtigungsgruppenlimit\",\r\n ERSTELLT_SYNCHRONISIERT_ZEITZONENLIMIT:\r\n \"Erstellt/Synchronisiert/Zeitzonenlimit\",\r\n ERSTELLUNGSDATUM: \"Erstellungsdatum\",\r\n ERSTES_EINTRITTS_EREIGNIS: \"Erstes Eintritts Ereignis\",\r\n ERSTHELFER: \"Ersthelfende Person\",\r\n ERSTHELFER_GETRENNT: \"Erst-
helfende\",\r\n ERSTHELFER_MEHRZAHL: \"Ersthelfende Personen\",\r\n EU_BUERGER: \"EU-Bürger*in\",\r\n EU_BUERGER_GETRENNT: \"EU
Bürger*in\",\r\n EU_MITGLIEDSSTAATEN: \"EU-Mitgliedstaaten inkl. 4 EFTA-Staaten\",\r\n FEHLENDE_RECHTE: \"Fehlende Berechtigungen\",\r\n FEHLENDE_RECHTE_WÄHLE_PERSONAL:\r\n \"Fehlende Berechtigung. Wählen Sie ein Personal aus.\",\r\n FIRMA_AKTIVIEREN: \"Firma aktivieren\",\r\n FIRMA_AKTIVIEREN_MODAL: {\r\n BODY: \"Wollen Sie die ausgewählte Firma wirklich aktivieren?\",\r\n },\r\n FIRMA_AUSWAEHLEN: \"Firma auswählen\",\r\n FIRMA_EINGEBEN: \"Bitte Firmenname eingeben\",\r\n FIRMA_ERFOLGREICH_ERSTELLT: {\r\n BODY: \"Was möchten Sie als Nächstes tun?\",\r\n NAVIGATIONS_TEIL1: \"Weitere Firma erstellen\",\r\n NAVIGATIONS_TEIL2: \"Personal erstellen\",\r\n NAVIGATIONS_TEIL3: \"Erstellte Firma betrachten\",\r\n NAVIGATIONS_TEIL4: \"Firmenübersicht\",\r\n TITEL: \"Firma erfolgreich erstellt\",\r\n },\r\n FIRMA_ERFOLGREICH_GELOESCHT: {\r\n BODY: \"Was möchten Sie als Nächstes tun?\",\r\n NAVIGATIONS_TEIL1: \"Neue Firma erstellen\",\r\n NAVIGATIONS_TEIL2: \"Firmenübersicht\",\r\n NAVIGATIONS_TEIL3: \"Organisations-Dashboard\",\r\n NAVIGATIONS_TEIL4: \"Unterlagen-Dashboard\",\r\n NAVIGATIONS_TEIL5: \"Baustellen-Dashboard\",\r\n NAVIGATIONS_TEIL6: \"Zurück\",\r\n TITEL: \"Firma wurde erfolgreich gelöscht\",\r\n },\r\n FIRMA_ERSTELLEN: \"Firma erstellen\",\r\n FIRMA_EXISTIERT: \"Firma existiert bereits!\",\r\n FIRMA_DEAKTIVIEREN: \"Firma deaktivieren\",\r\n FIRMA_DEAKTIVIEREN_MODAL: {\r\n BODY: \"Die gesamten Baustellenausweise des Personals weden gelöscht. Wollen Sie die ausgewählte Firma wirklich deaktivieren?\",\r\n },\r\n FIRMA_DOKUMENT_FILTERN: \"Nach Firma bzw. Dokument filtern\",\r\n FIRMA_LOESCHEN: \"Firma löschen\",\r\n FIRMA: \"Firmenname\",\r\n FIRMANAMEN: \"Firmennamen\",\r\n FIRMA_WURDE_ERFOLGREICH_AKTIVIERT: \"Firma wurde erfolgreich aktiviert\",\r\n FIRMA_WURDE_ERFOLGREICH_DEAKTIVIERT: \"Firma wurde erfolgreich deaktiviert\",\r\n FIRMEN: \"Firmen\",\r\n FIRMEN_AUSWERTUNGEN: \"Firmen-Auswertungen\",\r\n FIRMEN_DATEN: \"Firmendaten\",\r\n FIRMEN_FILTERN: \"Nach Firmennamen filtern\",\r\n FIRMEN_UEBERSICHT_DOWNLOAD: \"Firmenübersicht herunterladen\",\r\n FIRMEN_ZUTRITTSEREIGNISSE_AUSWERTUNGEN:\r\n \"Auswertungen Firmenzutrittsereignisse\",\r\n FIRMENBEZIEHUNGEN: \"Firmenbeziehungen\",\r\n FIRMENHIERACHIE: \"Firmenhierarchie\",\r\n FIRMENNAME: \"Firmenname\",\r\n FIRMENVERWALTER: \"Firmenverwaltung\",\r\n FIRMENVERWALTER_BEREITS_HINZUGEFUEGT:\r\n \"Firmenverwaltung wurde bereits hinzugefügt\",\r\n FIRMENVERWALTER_GELOESCHT: \"Firmenverwaltung gelöscht\",\r\n FIRMENVERWALTER_HINZUFUEGEN: \"Firmenverwaltung hinzufügen\",\r\n FIRMENVERWALTER_HINZUGEFUEGT: \"Firmenverwaltung hinzugefügt\",\r\n FIRMENVERWALTER_LOESCHEN: \"Firmenverwaltung löschen\",\r\n FIRMENVERWALTER_MODAL_LOESCHEN:\r\n \"Wollen Sie die Firmenverwaltung wirklich löschen?\",\r\n FIRMEN_UNTERLAGEN: \"Firmen-Unterlagen\",\r\n FIRMEN_UNTERLAGEN_AUSWERTUNGEN: \"Firmen-Auswertungen\",\r\n FIRMEN_UNTERLAGEN_AUSWERTUNGEN_DOWNLOAD:\r\n \"Auswertung der Firmenunterlagen als PDF-Datei herunterladen\",\r\n FIRMEN_UNTERLAGEN_HOCHLADEN: \"Firmenunterlage hochladen\",\r\n FIRMEN_UNTERLAGEN_HINZUFUEGEN: \"Firmenunterlage hinzufügen\",\r\n FIRMEN_UNTERLAGEN_KONFIGURIEREN: \"Firmenunterlagen konfigurieren\",\r\n FIRMEN_UNTERLAGEN_MODAL_AKTUALISIEREN: {\r\n TITEL: \"Firmenunterlagen aktualisieren\",\r\n BODY: \"Wollen Sie die Firmenunterlagen wirklich aktualisieren?\",\r\n CARD_HEADER:\r\n \"Achtung: Bei Änderungen an den Eigenschaften der Unterlagen, bleiben bereits hochgeladenen Dateien bei den Firmen hinterlegt.\",\r\n },\r\n FIRMEN_UNTERLAGEN_MODAL_LOESCHEN: {\r\n TITEL: \"Firmenunterlagen löschen\",\r\n BODY: \"Wollen Sie die Firmenunterlagen wirklich löschen?\",\r\n CARD_HEADER: \"Warnung: Es exisiteren bereits hochgeladene Dateien\",\r\n },\r\n FIRMEN_UNTERLAGEN_PRUEFEN: \"Firmen-Unterlagen prüfen\",\r\n FOTO_AUFNEHMEN: \"Foto aufnehmen\",\r\n FOTO_BENUTZEN: \"Foto benutzen\",\r\n FOTO_HOCHLADEN: \"Foto hochladen\",\r\n FOTO_MACHEN: \"Foto machen\",\r\n FUNKTION_IN_ARBEIT:\r\n \"Aktuell ist die Angabe des Gültigkeitsdatums noch nicht möglich.\",\r\n FREITAG: \"Freitag\",\r\n GEBURTSTAG: \"Geburtstag\",\r\n GELOESCHT: \"Gelöscht\",\r\n GEPRUEFT: \"Geprüft\",\r\n GEPRUEFT_GUELTIG: \"Geprüft/Gültig\",\r\n GEPRUEFT_HOCHGELADEN: \"Geprüft/Hochgeladen\",\r\n GEPRUEFT_HOCHGELADEN_SOLL_ABGELAUFEN:\r\n \"Geprüft/Hochgeladen/Soll-Anzahl/Abgelaufen\",\r\n GEPRUEFT_MARKIEREN: \"Als geprüft markieren\",\r\n GESAMT_HOCHGELADEN_GEPRUEFT_SOLL: \"Gesamt(Geprüft/Hochgeladen/Soll-Anzahl)\",\r\n GESAMT_GEPRUEFT_HOCHGELADEN_SOLL_ABGELAUFEN:\r\n \"Gesamt(Geprüft/Hochgeladen/Soll-Anzahl/Abgelaufen)\",\r\n GESCANNTE_KARTENNUMMER_STIMMT_NICHT:\r\n \"Gescannte Kartennummer {{eingegebeneKartennummer}} ist nicht korrekt\",\r\n GESPERRT: \"Gesperrt\",\r\n GEWERBLICHER_MITARBEITER: \"Gewerbliches Personal\",\r\n GEWERK: \"Gewerk\",\r\n GEWERK_AUSWAEHLEN: \"Gewerke auswählen\",\r\n GUELTIG_BIS: \"gültig bis\",\r\n GUELTIG_VON: \"gültig von\",\r\n GUELTIGKEIT: \"Gültigkeit\",\r\n GUELTIGKEIT_DOKUMENT: \"Gültigkeit des Dokuments\",\r\n GUELTIGKEITSDATUM: \"Gültigkeitsdatum\",\r\n GUELTIGKEIT_FEHLENDER_UNTLERAGEN: \"Gültigkeit bei fehlender Unterlagen\",\r\n GUELTIGKEIT_FEHLENDER_UNTLERAGEN_HELP:\r\n \"Wählen Sie nach wie vielen Tagen die Gültigkeit des Ausweis abläuft, \" +\r\n \"wenn Unterlagen fehlen. Geben Sie dazu eine Zahl in das Eingebefeld ein. \",\r\n GUELTIGKEIT_HINZUFUEGEN: \"Gültigkeitsdatum angeben\",\r\n GUELTIGKEIT_VERLAENGERN: \"Gültigkeit verlängern\",\r\n HAEUFIG: \"Häufig\",\r\n HAT_GUELTIKEIT: \"Gültigkeit aktiviert\",\r\n HIERACHIE: \"hierachie\",\r\n HIERACHISCHES_LAYOUT: \"Hierarchisches Layout\",\r\n HISTORIE: \"Historie\",\r\n HOCHGELADEN: \"Hochgeladen\",\r\n HOCHGELADEN_GEPRUEFT: \"Hochgeladen/Geprüft\",\r\n HOCHGELADEN_GEPRUEFT_GUELTIGKEIT_ABGELAUFENE:\r\n \"Hochgeladen/Geprüft/Gültigkeit/Abgelaufen\",\r\n HOCHGELADEN_GEPRUEFT_SOLL: \"Hochgeladen/Geprüft/Soll-Anzahl\",\r\n HOCHGELADEN_GEPRUEFT_SOLL_ABGELAUFENE:\r\n \"Hochgeladen/Geprüft/Soll-Anzahl/Abgelaufene\",\r\n HOCHGELADEN_GEPRUEFT_SOLL_ABGELAUFENE_GUELTIGKEIT:\r\n \"Hochgeladen/Geprüft/Soll-Anzahl/Abgelaufene/Gültigkeit\",\r\n HOCHGELADENE_UNTERLAGEN: \"Anzahl
hochgeladene
Unterlagen\",\r\n HORIZONTAL_ANORDNEN: \"Horizontal anordnen\",\r\n ID_KOPIEREN: \"ID kopieren\",\r\n ID_KOPIERT: \"ID kopiert\",\r\n INAKTIV: \"inaktiv\",\r\n INFO_ABGELAUFENE_UNTERLAGEN: \"Es sind Unterlagen abgelaufen\",\r\n INFO_BA_GESPERRT: \"Es gibt gesperrte Baustellenausweise \\n\",\r\n INFO_BA_NICHT_SYNCHRONISIERT:\r\n \"Es sind nicht alle Baustellenausweise synchronisiert \\n\",\r\n INFO_KEIN_EFTA_LAND:\r\n \"Das Herkunftsland dieser Firma oder die Staatsangehörigkeit der \" +\r\n \"mitarbeitenden Person ist kein EU-Mitgliedsstaat oder eines der 4 \" +\r\n \"EFTA-Länder. Nehmen Sie bitte Kontakt mit der zuständigen \" +\r\n \"Bauleitung auf, bevor Sie den Baustellenausweis erstellen.\",\r\n INFO_UNTERLAGEN_NICHT_VOLLSTAENDIG:\r\n \"Erforderliche Unterlagen sind nicht vollständig \\n\",\r\n INFO_UNTERLAGEN_NICHT_VOLLSTAENDIG_GEPRUEFT:\r\n \"Erforderliche Unterlagen sind nicht vollständig geprüft \\n\",\r\n INFO_WEITERE_UNTERLAGEN_NICHT_VOLLSTAENDIG:\r\n \"Erforderliche Unterlagen sind nicht vollständig \\n\",\r\n IN_RAUMZONE: \"Geht in Raumzone\",\r\n INFO_ZUTRITTSPUNKTE_OFFLINE: \"Zutrittspunkte {{name}} offline\",\r\n ISTAKTIV: \"Ist Aktiv?\",\r\n IST_SYNCHRONISIERT_GETRENNT: \"Ist
Synchronisiert\",\r\n JA: \"Ja\",\r\n KARTENNUMMER: \"Kartennummer\",\r\n KARTENNUMMER_PERSONAL: \"Kartennummer des Personals\",\r\n KEIN_AUFTRAGGEBER: \"Kein*e Auftraggeber*in ausgewählt\",\r\n KEIN_AUSWEIS_VORHANDEN: \"Kein Ausweis vorhanden\",\r\n KEIN_BAUSTELLENAUSWEIS_GEWAEHLT: \"Kein Baustellenausweis ausgewählt\",\r\n KEIN_NACHUNTERNEHMER: \"Kein*e Nachunternehmer*in ausgewählt\",\r\n KEIN_PERSONAL_GEWAEHLT: \"Kein Personal ausgewählt\",\r\n KEIN_PDF_FORMAT: \"Datei-Format ist kein PDF.\",\r\n KEIN_RECHT_BAUSTELLENAUSWEIS_ERSTELLEN:\r\n \"Sie haben nicht das Recht einen Baustellenausweis zu erstellen.\",\r\n KEIN_VERWALTER: \"Kein*e Verwalter*in ausgewählt\",\r\n KEINE_AKTION_VORHANDEN: \"Keine Aktion vorhanden\",\r\n KEINE_BAUSTELLENAUSWEISE_ABGELAUFEN: \"Keine Baustellenausweise abgelaufen\",\r\n KEINE_BAUSTELLENAUSWEISEINSTELLUNGEN_ABGELAUFEN:\r\n \"Keine Baustellenausweiseinstellungen abgelaufen\",\r\n KEINE_BERECHTIGUNSGRUPPEN_KONFIGURIERT:\r\n \"Es wurden keine Berechtigungsgruppen konfiguriert\",\r\n KEINE_ERGEBNISSE_GEFUNDEN:\r\n \"Es tut uns Leid, für die Eingabe wurden keine Ergebnisse gefunden...\",\r\n KEINE_FIRMA_WHITELIST:\r\n \"Wähle eine Firma aus, um sie der Whitelist hinzufügen.\",\r\n KEINE_FIRMENUNTERLAGEN_ANGEFORDERT:\r\n \"Es werden keine Firmenunterlagen angefordert\",\r\n KEINE_FIRMEN_UNTERLAGEN_KONFIGURIERT:\r\n \"Es wurden keine Firmenunterlagen konfiguriert\",\r\n KEINE_GESPERRTEN_BAUSTELLENAUSWEISE_VORHANDEN:\r\n \"Keine gesperrten Baustellenausweise vorhanden\",\r\n KEIN_GUELTIGKEITSDATUM: \"Kein Gültigkeitsdatum\",\r\n KEINE_MAIL_HINZUGEFUEGT: \"Es wurde keine E-Mail hinzugefügt\",\r\n KEINE_MITARBEITERUNTERLAGEN_ANGEFORDERT:\r\n \"Es werden keine Unterlagen des Personals angefordert\",\r\n KEINE_LESEEINHEIT_GEWAEHLT: \"Es wurde noch keine Leseeinheit ausgewählt.\",\r\n KEINE_PERSONAL_UNTERLAGEN_KONFIGURIERT:\r\n \"Es wurden keine Personalunterlagen konfiguriert\",\r\n KEINE_RAUMZONE: \"Sie müssen zuerst einen Zutrittspunkt konfiguieren.\",\r\n KEINE_VORHANDEN: \"Keine vorhanden\",\r\n KEINE_VORLAGE_VORHANDEN: \"Keine Vorlage konfiguriert\",\r\n KEINE_ZUGEWIESEN: \"Keine zugewiesen\",\r\n KEINE_SERVER_VERBINDUNG: \"Keine Verbindung mit dem Server\",\r\n KEINER_AM_DREHKREUZ:\r\n \"Es wurde noch kein Personal am Drehkreuz registriert.\",\r\n KEINER_VORHANDEN: \"Keiner vorhanden\",\r\n KONFIGURATION_AKTUALISIEREN: \"Konfiguration aktualisieren\",\r\n KONFIGURATION_ERFOLGREICH_AKTUALSIIERT:\r\n \"Konfiguration erfolgreich aktualisiert\",\r\n KONFIGURATION_ERFOLGREICH_GESPEICHERT:\r\n \"Konfiguration erfolgreich gespeichert\",\r\n KONFIGURATION_ERSTELLEN: \"Konfiguration erstellen\",\r\n LAND: \"Land\",\r\n LAND_AUSWAEHLEN: \"Land auswählen\",\r\n LAUFT_IN_DER_MONAT_AB: \"Läuft in diesem Monat ab\",\r\n LEEREN: \"Leeren\",\r\n LESEEINHEIT: \"Leseeinheit\",\r\n LESEEINHEIT_AUSTRITT: \"Leseeinheit Austritt\",\r\n LESEEINHEIT_EINTRITT: \"Leseeinheit Eintritt\",\r\n LESEEINHEITEN: \"Leseeinheiten\",\r\n LESEEINHEIT_AUSWAEHLEN: \"Leseeinheit auswählen\",\r\n LETZTE_AENDERUNG_GETRENNT: \"Letzte
Änderung\",\r\n LETZTE_SYNCRONISIERUNG_GETRENNT: \"Letzte
Synchronisierung\",\r\n LETZTER_AUSTRITT_GETRENNT: \"Letztes
Austrittsereignis\",\r\n LETZTER_EINTRITT_GETRENNT: \"Letztes
Eintrittsereignis\",\r\n LETZTER_FEHLENDER_MONAT: \"Letzter fehlender Monat\",\r\n LETZTES_AUSTRITTS_EREIGNIS: \"Erstes Austritts Ereignis\",\r\n LETZTES_EINTRITTS_EREIGNIS: \"Letztes Eintritts Ereignis\",\r\n LOESCHE_FIRMENUNTERLAGE: \"Firmenunterlage löschen\",\r\n LOESCHE_FIRMENUNTERLAGE_BODY:\r\n \"Sind Sie sicher, dass Sie diese Firmenunterlage löschen möchten?\",\r\n LOESCHE_MINDESTLOHNERKLAERUNG_MODAL: {\r\n BODY: \"Wollen Sie diese Mindestlohnerklärung wirklich löschen?\",\r\n TITEL: \"Mindestlohnerklärung löschen\",\r\n },\r\n LOESCHEN: \"Löschen\",\r\n MAIL_AN_FIRMENVERWALTUNG: \"E-Mail an Firmenverwaltung\",\r\n MAIL_AN_PRUEFVERANTWORTLICHEN: \"E-Mail an Prüfverwaltung\",\r\n MAIL_INFO_FIRMENVERWALTER:\r\n \"Die E-Mailadresse der Firmenverwaltung wird in den \" +\r\n \"Stammdaten der Firma konfiguriert.\",\r\n MAIL_PRUEFVERANWORTLICHEN: \"E-Mail der Prüfverwaltung\",\r\n MINDESTLOHN: \"Mindestlohn\",\r\n MINDESTLOHN_KONFIGURATION: \"Mindestlohn konfigurieren\",\r\n MINDESTLOHNERKLAERUNG_DOWNLOAD: \"Mindestlohnerklärung herunterladen\",\r\n MINDESTLOHNERKLAERUNG_ERFOLGREICH_GEPRUEFT:\r\n \"Mindestlohnerklaerung wurde erfolgreich geprüft\",\r\n MINDESTLOHNERKLAERUNG_EROLGREICH_GELOESCHT:\r\n \"Mindestlohnerklaerung wurde erfolgreich gelöscht\",\r\n MINDESTLOHNERKLAERUNG_ERFOLGREICH_HOCHGELADEN:\r\n \"Mindestlohnerklärung erfolgreich hochgeladen\",\r\n MINDESTLOHNERKLAERUNG_VOM_MONAT: \"Mindestlohnerklärung vom Monat\",\r\n MINDESTLOHNERKLAERUNGEN: \"Mindestlohnerklärungen\",\r\n MINDESTLOHNERKLAERUNGEN_FILTERN:\r\n \"Mindestlohnerklärungen oder Personal filtern\",\r\n MINDESTLOHNERKLAERUNGEN_GESAMT: \"Mindestlohnerklärungen (gesamt)\",\r\n MINDESTLOHNERKLAERUNGEN_GETRENNT: \"Mindestlohn-erklärungen\",\r\n MINDESTLOHNERKLAERUNGEN_PRUEFEN: \"Mindestlohnerklärungen prüfen\",\r\n MINDESTLOHNKONFIGURATOR: \"Mindestlohnkonfigurator\",\r\n MINDESTLOHNKONFIGURATOR_NICHT_EINGESTELLT:\r\n \"Mindestlohnkonfigurator wurde noch nicht eingestellt\",\r\n MINDESTLOHNPFLICHTIG: \"Mindestlohnpflichtig\",\r\n MITARBEITER: \"Personal\",\r\n MITARBEITER_AKTIVIEREN: \"Personal aktivieren\",\r\n MITARBEITER_AKTIVIEREN_MODAL: {\r\n BODY: \"Wollen Sie das ausgewählte Personal wirklich aktivieren?\",\r\n },\r\n MITARBEITER_DEAKTIVIEREN: \"Personal deaktivieren\",\r\n MITARBEITER_DEAKTIVIEREN_MODAL: {\r\n BODY: \"Baustellenausweis des Personals wird gelöscht. Wollen Sie wirklich deaktivieren?\",\r\n },\r\n MITARBEITER_ERSTELLT_MODAL: {\r\n AUSWAHL_1: \"Weiteres Personal erstellen\",\r\n AUSWAHL_2: \"Erstelltes Personal betrachten\",\r\n AUSWAHL_3: \"Zugehörige Firma betrachten\",\r\n AUSWAHL_4: \"Übersicht des Personals\",\r\n AUSWAHL_5: \"Organsisation\",\r\n AUSWAHL_6: \"Baustelle\",\r\n BODY: \"Was möchten Sie als Nächstes tun?\",\r\n TITEL: \"Personal erfolgreich erstellt\",\r\n },\r\n MITARBEITER_GELOESCHT: \"Personal wurde gelöscht\",\r\n MITARBEITER_LOESCHEN: \"Personal löschen\",\r\n MITARBEITER_LOESCHEN_MODAL: {\r\n BODY: \"Wollen Sie das ausgewählte Personal wirklich löschen?\",\r\n },\r\n MITARBEITER_UNTERLAGEN: \"Personalunterlagen\",\r\n MITARBEITER_UNTERLAGEN_HINZUFUEGEN: \"Personalunterlage hinzufügen\",\r\n MITARBEITER_UNTERLAGEN_HOCHLADEN: \"Personalunterlagen hochladen\",\r\n MITARBEITER_UNTERLAGEN_MODAL_AKTUALISIEREN: {\r\n TITEL: \"Personalunterlagen aktualisieren\",\r\n BODY: \"Wollen Sie die Personalunterlagen wirklich aktualisieren?\",\r\n CARD_HEADER:\r\n \"Achtung: Bei Änderungen an den Eigenschaften der Unterlagen, bleiben bereits hochgeladenen Dateien bei dem Personal hinterlegt.\",\r\n },\r\n MITARBEITER_UNTERLAGEN_MODAL_HINZUFUEGEN: {\r\n DATEI_HINZUFUEGEN: \"Datei hinzufügen\",\r\n NAME_EINGEBEN: \"Name eingeben\",\r\n A1PFLICHT: \"A1-Pflicht\",\r\n GUELTIGKEIT: \"Gültigkeit\",\r\n AUSWIRKUNGEN_AUF_AUSWEISGUELTIGKEIT:\r\n \"Auswirkungen auf Ausweisgültigkeit\",\r\n },\r\n MITARBEITER_UNTERLAGEN_MODAL_LOESCHEN: {\r\n TITEL: \"Personalunterlage löschen\",\r\n BODY: \"Wollen Sie die Personalunterlage wirklich löschen?\",\r\n CARD_HEADER: \"Warnung: Es exisiteren bereits hochgeladene Dateien\",\r\n },\r\n MITTWOCH: \"Mittwoch\",\r\n MODAL_AUSWEIS_LOESCHEN: {\r\n TITEL: \"Ausweisvorlage löschen\",\r\n BODY: \" Wollen Sie die Ausweisvorlage wirklich löschen?\",\r\n INFO_CARD_HEADER: \"Warnung\",\r\n INFO_CARD_CONTENT:\r\n \"Nachdem Löschen der Vorlage steht diese nicht mehr als Druckvorlage für Baustellenausweise zur Verfügung.\",\r\n PLACEHOLDER: \"Name der Vorlage eingeben\",\r\n },\r\n MODAL_BODY_FIRMA_LOESCHEN: \"Wollen Sie die Firma wirklich löschen?\",\r\n MODAL_TEXT: {\r\n TITEL: \"Text bearbeiten\",\r\n SCHRIFTFARBE: \"Schriftfarbe\",\r\n SCHRIFT_FETT: \"Schrift in Fett\",\r\n TEXT_AUSBLENDEN: \"Text ausblenden\",\r\n AENDERN: \"Ändern\",\r\n },\r\n MODAL_VORLAGE_HOCHLADEN: {\r\n TITEL: \"Vorlage hochladen\",\r\n VORLAGE_ERSTELLEN: \"Vorlage erstellen\",\r\n },\r\n MONAT_FILTERN: \"Monat filtern\",\r\n MONATLICH: \"Monatlich\",\r\n MONTAG: \"Montag\",\r\n MUSTERFIRMA: \"Musterfirma\",\r\n MUSTERMANN: \"Mustermann\",\r\n MUSTERSTADT: \"Musterstadt\",\r\n MUSTERSTRASSE: \"Musterstraße 123\",\r\n MUSTERTITEL: \"Mustertitel\",\r\n NACHNAME: \"Nachname\",\r\n NACHREICHEN: \"Nachreichen\",\r\n NACHUNTERNEHMER: \"Nachunternehmer*in\",\r\n NACHUNTERNEHMER_GELOESCHT: \"Nachunternehmer*in gelöscht\",\r\n NACHUNTERNEHMER_HINZUFUEGEN: \"Nachunternehmer*in hinzufügen\",\r\n NACHUNTERNEHMER_HINZUGEFUEGT: \"Nachunternehmer*in hinzugefügt\",\r\n NACHUNTERNEHMER_LOESCHEN: \"Nachunternehmer*in löschen\",\r\n NACHUNTERNEHMER_MODAL_LOESCHEN:\r\n \"Wollen Sie den/die Nachunternehmer*in wirklich löschen?\",\r\n NAME: \"Name\",\r\n NEIN: \"Nein\",\r\n NEUE_VORLAGE: \"Neue Vorlage\",\r\n NEUE_VORLAGE_ERSTELLEN: \"Neue Vorlage erstellen\",\r\n NICHT_ERFORDERLICH: \"Nicht erforderlich\",\r\n NICHT_EU: \"Nicht EU\",\r\n NICHT_EU_BUERGER: \"Nicht-EU-Bürger\",\r\n NICHT_EU_BUERGERUNTERLAGEN_UNVOLLSTAENDIG:\r\n \"Unterlagen der Nicht EU-Bürger*innen sind nicht vollständig\",\r\n NICHT_EU_BUERGER_UNTERLAGEN: \"Nicht EU-Unterlagen\",\r\n NICHT_HOCHGELADEN: \"Nicht Hochgeladen\",\r\n NICHT_GEPRUEFT: \"Nicht geprüft\",\r\n NICHT_VORHANDEN: \"nicht vorhanden\",\r\n NOCH_NICHT_GEPRUEFT: \"Noch nicht geprüft\",\r\n NOCH_NICHT_HOCHGELADEN: \"Noch nicht hochgeladen\",\r\n OEFFNE_BILDVERIFIZIERUNG: \"Bildverifizierung öffnen\",\r\n OFFLINE: \"offline\",\r\n OHNE_BILD_DRUCKEN: \"Ohne Bild drucken\",\r\n OHNE_DRUCKEN_FORTFAHREN: \"Ohne drucken fortfahren\",\r\n OHNE_SYNCRONISIERUNG: \"Ohne Synchronisierung\",\r\n ONLINE: \"online\",\r\n OPTION_AUSWEIS_KONFIGURATION: {\r\n TITEL: \"Warnung! Bereits bestehendes Personal.\",\r\n BODY: \"Möchten Sie Ihre Einstellungen für bereits existierendes Personal übernehmen?\",\r\n AUSWAHL_MOEGLICHKEIT_1: \"Ja, auch für existierende Personal.\",\r\n AUSWAHL_MOEGLICHKEIT_2: \"Nein, nur für neu erstelltes Personal\",\r\n },\r\n ORGANISATION: \"Organisation\",\r\n ORT: \"Ort\",\r\n PERSONAL: \"Personal\",\r\n PERSONAL_AKTIVIEREN: \"Personal aktivieren\",\r\n PERSONALANZAHL: \"Personalanzahl\",\r\n PERSONAL_AUSWERTUNGEN: \"Personal-Auswertungen\",\r\n PERSONAL_AUSWERTUNGEN_DOWNLOAD: \"Personalauswertungen herunterladen\",\r\n PERSONAL_DATEN: \"Personaldaten\",\r\n PERSONAL_DEAKTIVIEREN: \"Personal deaktivieren\",\r\n PERSONAL_DOKUMENT_FILTERN: \"Nach Personal oder Dokument filtern\",\r\n PERSONAL_ERSTELLEN: \"Personal erstellen\",\r\n PERSONAL_EINGEBEN: \"Bitte Personalname eingeben\",\r\n PERSONAL_ERFOLGREICH_GELOESCHT: {\r\n BODY: \"Was möchten Sie als Nächstes tun?\",\r\n NAVIGATIONS_TEIL1: \"Neues Personal erstellen\",\r\n NAVIGATIONS_TEIL2: \"Personalübersicht\",\r\n NAVIGATIONS_TEIL3: \"Organisations-Dashboard\",\r\n NAVIGATIONS_TEIL4: \"Unterlagen-Dashboard\",\r\n NAVIGATIONS_TEIL5: \"Baustellen-Dashboard\",\r\n NAVIGATIONS_TEIL6: \"Zurück\",\r\n TITEL: \"Personal wurde erfolgreich gelöscht\",\r\n },\r\n PERSONAL_FILTERN: \"Nach Personal filtern\",\r\n PERSONAL_WURDE_ERFOLGREICH_AKTIVIERT: \"Personal wurde erfolgreich aktiviert\",\r\n PERSONAL_WURDE_ERFOLGREICH_DEAKTIVIERT: \"Personal wurde erfolgreich deaktiviert\",\r\n PERSONAL_WURDE_ERFOLGREICH_VERWARNT: \"Personal wurde erfolgreich verwarnt\",\r\n PERSONAL_VERWARNEN: \"Personal verwarnen\",\r\n PERSONAL_VERWARNEN_MODAL: \"Möchten Sie das Personal wirklich verwarnen?\",\r\n PERSONAL_UEBERSICHT_DOWNLOAD: \"Personalübersicht herunterladen\",\r\n PERSONAL_UNTERLAGEN: \"Personal-Unterlagen\",\r\n PERSONAL_UNTERLAGEN_AUSWERTUNGEN: \"Personal-Auswertungen\",\r\n PERSONAL_UNTERLAGEN_AUSWERTUNGEN_DOWNLOAD:\r\n \"Auswertung der Personalunterlagen als PDF-Datei herunterladen\",\r\n PERSONAL_UNTERLAGEN_KONFIGURIEREN: \"Personalunterlagen konfigurieren\",\r\n PERSONAL_UNTERLAGEN_PRUEFEN: \"Personal-Unterlagen prüfen\",\r\n PERSONAL_ZUTRITTSEREIGNISSE_AUSWERTUNGEN:\r\n \"Auswertungen Personalzutrittsereignisse\",\r\n PERSONALNAME: \"Personalname\",\r\n PDF_BESTAETIGUNG_WIDERRUFEN: \"PDF-Datei Bestätigung widerrufen\",\r\n PDF_DATEI: \"PDF-Datei\",\r\n PDF_DATEI_ANZEIGEN: \"PDF-Datei anzeigen\",\r\n PDF_DATEI_ARCHIVIEREN: \"PDF-Datei archivieren\",\r\n PDF_DATEI_HOCHLADEN: \"PDF-Datei hochladen\",\r\n PDF_DATEI_LOESCHEN: \"PDF-Datei endgültig löschen\",\r\n PDF_DATEI_VORLAGE_HERUNTERLADEN: \"PDF-Datei Vorlage herunterladen\",\r\n PDF_ECHTHEIT_BESTAETIGEN: \"PDF-Datei Echtheit bestätigen\",\r\n PLZ: \"Postleitzahl\",\r\n PROFILBILD_ERFOLGREICH_HOCHGELADEN: \"Profilbild erfolgreich hochgeladen\",\r\n PROFILBILD_WIRD_HOCHGELADEN: \"Profilbild wird hochgeladen\",\r\n PROJEKTZEITEN_AKTIVIEREN: \"Projektzeiten aktivieren\",\r\n PROJEKTZEITEN_DEAKTIVIEREN: \"Projektzeiten deaktivieren\",\r\n PRUEFE_MINDESTLOHNERKLAERUNG_MODAL: {\r\n BODY: \"Wollen Sie diese Mindestlohnerklärung wirklich als geprüft markieren?\",\r\n BUTTON: \"Als geprüft markieren\",\r\n TITEL: \"Mindestlohnerklärung prüfen\",\r\n },\r\n PRUEFER: \"Prüfer\",\r\n PRUEFUNG_WIEDERRUFEN: \"Prüfung widerrufen\",\r\n PRUEFVERANTWORTLICHE: \"Prüfverantwortliche Person\",\r\n PRUEFVERWALTUNG_MAIL: \"Mail der Prüfverwaltung\",\r\n RAUMZONEN: \"Raumzonen\",\r\n RESTLICHE_LAENDER: \"Restliche Länder\",\r\n RICHTUNG: \"Richtung\",\r\n SAMSTAG: \"Samstag\",\r\n SANITAETER: \"Sanitäter*in\",\r\n SIDEBAR: {\r\n PROJEKTROLLEN: \"Projektrollen erstellen, verwalten und zuweisen\",\r\n PROJEKTBETEILIGTE: \"Projektbeteiligte einladen und verwalten\",\r\n AUSWERTUNGEN: \"Projektauswertungen betrachten und exportieren\",\r\n AUSWERTUNGEN_EINSTELLUNGEN:\r\n \"Automatischen Mailversand von Auswertungen verwalten\",\r\n ORGANISATION: \"Firmen,- und Personal erstellen und verwalten\",\r\n UNTERLAGEN: \"Firmen,- Personal und Mindestlohnunterlagen verwalten\",\r\n BAUSTELLE:\r\n \"Baustellenausweise, Drehkreuze und Zutrittspunkte verwalten\",\r\n ZUKO_EINSTELLUNGEN:\r\n \"Adminstrative Einstellungen der Zutrittskontrolle verwalten\",\r\n },\r\n SONNTAG: \"Sonntag\",\r\n SPEICHERN: \"Speichern\",\r\n SPERRE_MODAL: {\r\n BODY: \"Wollen Sie wirklich alle Baustellenausweise der mitarbeitenden Person sperren?\",\r\n BUTTON: \"Alle Baustellenausweise sperren\",\r\n EINGABE_SPERRGRUND: \"Hier Sperrgrund eingeben\",\r\n SPERRGRUND: \"Sperrgrund\",\r\n TITEL: \"Baustellenausweise sperren\",\r\n },\r\n SPERREN: \"Sperren\",\r\n SPERRUNG_AM: \", Sperrung jeden Monat am {{stichtag}}.\",\r\n SPRACHE: \"Sprache\",\r\n STAATSANGEHOERIGKEIT: \"Staatsangehörigkeit\",\r\n STAATSANGEHOERIGKEIT_AUSWAEHLEN: \"Staatsangehörigkeit auswählen\",\r\n STAMMDATEN: \"Stammdaten\",\r\n STAMMDATEN_AKTUALISIEREN: \"Stammdaten aktualisieren\",\r\n STAMMDATEN_AKTUALISIERT: \"Stammdaten aktualisiert\",\r\n STAMMDATEN_ERFOLGREICH_AKTUALISIERT: \"Stammdaten erfolgreich aktualisiert\",\r\n STARTDATUM: \"Startdatum\",\r\n STARTDATUM_VOR_ENDDATUM:\r\n \"Das Startdatum darf nicht über dem Enddatum liegen\",\r\n STATUS: \"Status\",\r\n STICHTAG_AM: \"Stichtag am\",\r\n STRASSE: \"Straße\",\r\n SYNCHRONISIERE_ZUTRITTSEREIGNISSE: \"Synchronisiere Zutrittsereignisse\",\r\n SYNCHRONISIERT: \"Synchronisiert\",\r\n SYSTEMGUELTIGKEIT: \"Systemgültigkeit gültig bis\",\r\n SYSTEMVORLAGE: \"Systemvorlage\",\r\n TAG: \"Tag\",\r\n TOAST_NEUER_STATUS_ZUTRITTSZEITEN_AKTIVIERT:\r\n \"Status der Zutrittszeiten wurden erforlgreich geändert. Neuer Status: aktiviert\",\r\n TOAST_NEUER_STATUS_ZUTRITTSZEITEN_DEAKTIVIERT:\r\n \"Status der Zutrittszeiten wurden erforlgreich geändert. Neuer Status: deaktiviert\",\r\n TOAST_NEUER_STATUS_BILDVERIFIZIERUNG_AKTIVIERT: \"Status der Bildverifizierung wurden erforlgreich geändert. Neuer Status: aktiviert\",\r\n TOAST_NEUER_STATUS_BILDVERIFIZIERUNG_DEAKTIVIERT: \"Status der Bildverifizierung wurden erforlgreich geändert. Neuer Status: deaktiviert\",\r\n TOOLTIP_BAUSTELLENAUSWEISE: \"Synchronisiert/Gesperrt/Gesamtanzahl\",\r\n TRENNEN: \"Trennen\",\r\n TYP: \"Typ\",\r\n UEBERSICHT: \"Übersicht\",\r\n UEBERSICHT_EINGEBENER_DATEN: \"Übersicht Ihrer eingegeben Daten\",\r\n UHRZEIT: \"Uhrzeit\",\r\n UNBEFRISTET: \"unbefristet\",\r\n UNBEGRENZT: \"unbegrenzt\",\r\n UNERREICHBAR: \"unerreichbar\",\r\n UNTERLAGEN: \"Unterlagen\",\r\n UNTERLAGEN_AUSWERTUNGEN: \"Auswertungen Unterlagen\",\r\n UNTERLAGEN_AUSWERTUNGEN_TEIL1: \"Auswertungen\",\r\n UNTERLAGEN_AUSWERTUNGEN_TEIL2: \"Unterlagen\",\r\n UNTERLAGEN_DATEN: \"Unterlagendaten\",\r\n UNTERLAGEN_HINZUFUEGEN: \"Unterlagen hinzufügen\",\r\n UNTERLAGEN_NAME: \"Unterlagenname\",\r\n UNTERLAGE_ENTPRUEFT_MARKIEREN: \"Unterlage als nicht geprüft markiert\",\r\n UNTERLAGE_ERFOLGREICH_ENTPRUEFT:\r\n \"Prüfung für Unterlage wurde erfolgreich widerrufen\",\r\n UNTERLAGE_ERFOLGREICH_GELOESCHT: \"Unterlage erfolgreich gelöscht\",\r\n UNTERLAGE_GEPRUEFT_MARKIEREN: \"Unterlage als geprüft markiert\",\r\n UNTERLAGE_HINZUFUEGEN: \"Unterlage hinzufügen\",\r\n UNTERLAGE_HINZUGEFUEGT: \"Unterlage hinzugefügt\",\r\n UNTERLAGE_ERFOLGREICH_WIEDERHERGESTELLT:\r\n \"Unterlage erfolgreich wiederhergestellt\",\r\n UNTERLAGEN_MODAL_HINZUFUEGEN: {\r\n DATEI_HINZUFUEGEN: \"Datei hinzufügen\",\r\n GUELTIGKEIT: \"Gültigkeit\",\r\n NAME_EINGEBEN: \"Bitte Namen eingeben\",\r\n AUSWIRKUNGEN_AUF_AUSWEISGUELTIGKEIT:\r\n \"Auswirkungen auf Ausweisgültigkeit\",\r\n },\r\n VERBINDEN: \"Verbinden\",\r\n VERBINDUNG: \"Verbindung\",\r\n VERBINDUNG_MIT_DEM_SERVER: \"Mit dem Server verbunden\",\r\n VERBINDUNG_TESTEN: \"Verbindung testen\",\r\n VERLAENGERUNGSGRUND: \"Verlängerungsgrund\",\r\n VERWALTER: \"Verwaltung\",\r\n VERWALTER_HINZUFUEGEN: \"Verwaltung hinzufügen\",\r\n VERWENDUNG_IN_BERECHTIGUNGSGRUPPEN: \"Verwendung in Berechtigunsgruppen\",\r\n VON: \"von\",\r\n VORNAME: \"Vorname\",\r\n VORHANDEN: \"Vorhanden\",\r\n VORLAGE: \"Vorlage\",\r\n VORLAGE_ANZEIEGEN: \"Vorlage anzeigen\",\r\n VORLAGE_AKTUALISIEREN: \"Vorlage aktualisieren\",\r\n VORLAGE_AUSWAEHLEN: \"Vorlage auswählen\",\r\n VORLAGE_BEARBEITEN: \"Vorlage bearbeiten\",\r\n VORLAGE_LOESCHEN: \"Vorlage loeschen\",\r\n VORLAGE_EROFLGREICH_AKTUALISIERT: \"Vorlage wurde erfolgreich aktualisiert\",\r\n VORLAGE_EROFLGREICH_ERSTELLT: \"Vorlage wurde erfolgreich erstellt\",\r\n VORLAGE_EROFLGREICH_GELOESCHT: \"Vorlage wurde erfolgreich gelöscht\",\r\n VORLAGE_SPEICHERN: \"Vorlage speichern\",\r\n VORLAGE_VORHANDEN: \"Vorlage
vorhanden?\",\r\n VORLAGEN: \"Vorlagen\",\r\n VORLAGENNAME: \"Vorlagenname\",\r\n WEITERE_MITARBEITERUNTERLAGE_HINZUGEFUEGT:\r\n \"Weitere Unterlage dem Personal wurde erfolgreich hinzugefügt.\",\r\n WEITERE_UNTERLAGE_NAME_EXISITIERT:\r\n \"Weiter Unterlagenname existiert bereits.\",\r\n WEITERE_UNTERLAGEN: \"Weitere Unterlagen\",\r\n WEITERE_UNTERLAGEN_GETRENNT: \"Weitere
Unterlagen\",\r\n WEITERE_UNTERLAGEN_HINZUFUEGEN: \"Weitere Unterlagen hinzufügen\",\r\n WEITERE_UNTERLAGE_HINZUFUEGEN: \"Weitere Unterlage hinzufügen\",\r\n WERKVERTRAGSARBEITNEHMERKARTE:\r\n \"Karte der Werkvertragsarbeitnehmenden Person\",\r\n WERKVERTRAGSARBEITNEHMERKARTE_NICHT_VOLLSTAENDIG:\r\n \"Karte der Werkvertragsarbeitnehmenden Person ist nicht vollständig\",\r\n WEVAK_PFLICHT: \"WeVAK-Pflicht\",\r\n WEVAK_UNTERLAGEN: \"WeVAK-Unterlagen\",\r\n WHITELIST: \"Whitelist\",\r\n WIEDERHERSTELLEN: \"Unterlage wiederherstellen\",\r\n WIRD_NACHGEREICHT: \"wird nachgereicht\",\r\n WURDE_NICHT_GEPRUEFT: \"wurde nicht geprüft\",\r\n WURDE_NICHT_HOCHGELADEN: \"wurde nicht hochgeladen\",\r\n ZEITABSCHNITTE: \"Zeitabschnitte\",\r\n ZEITINTERVALL: \"Zeitintervall\",\r\n ZEITSTEMPEL: \"Zeitstempel\",\r\n ZEITZONE_AKTUALISIEREN: \"Zeitzone aktualisieren\",\r\n ZEITZONE_AKTUALISIERT: \"Zeitzone wurde erfolgreich aktualisiert\",\r\n ZEITZONE_AUSWAEHLEN: \"Zeitzone auswählen\",\r\n ZEITZONE_HINZUFUEGEN: \"Zeitzone hinzufügen\",\r\n ZEITZONE_HINZUGEFUEGT: \"Zeitzone wurde erfolgreich hinzugefügt\",\r\n ZEITZONE_GELOESCHT: \"Zeitzone wurde erfolgreich gelöscht\",\r\n ZEITZONE_ID: \"Zeitzone Id\",\r\n ZEITZONE_LOESCHEN: \"Zeitzone löschen\",\r\n ZEITZONE_SYNCHRONISIERT: \"Zeitzonen synchronisieren\",\r\n ZEITZONE_WIRKLICH_LOESCHEN: \"Wollen Sie die Zeitzone wirklich löschen?\",\r\n ZEITZONEN: \"Zeitzonen\",\r\n ZEITZONEN_ERFOLGREICH_SYNCHRONISIERT:\r\n \"Zeitzonen wurden erfolgreich synchronisiert\",\r\n ZEITZONEN_LEER: \"Keine Zeitzonen vorhanden\",\r\n ZEITZONEN_NAME_SYNCHRONISIERT: \"Zeitzonenname existiert bereits!\",\r\n ZEITZONEN_VERWALTEN: \"Zeitzonen verwalten\",\r\n ZEITZONEN_VERWALTEN_TEIL1: \"Zeitzonen\",\r\n ZEITZONEN_VERWALTEN_TEIL2: \"verwalten\",\r\n ZU_DEM_BAUSTELLENAUSWEIS: \"Zu dem Baustellenausweis ({{mitarbeiter}})\",\r\n ZU_DEM_PERSONAL: \"Zu dem Personal\",\r\n ZU_DEM_AUSWEIS_DESIGNER: \"Zu dem Ausweis-Desingner\",\r\n ZU_DEM_AUSWEISGUELTIGKEIT_KONFIGURATOR:\r\n \"Zu dem Ausweisgültigkeit-Konfigurator\",\r\n ZU_DEM_MINDESTLOHNKONFIGURATOR: \"Zu dem Mindestlohnkonfigurator\",\r\n ZU_DEN_BAUSTELLENAUSWEISEN: \"Zu den Baustellenausweisen\",\r\n ZU_DEN_BERECHTIGUNGSGRUPPEN: \"Zu den Berechtigungsgruppen\",\r\n ZU_DEN_FIRMEN: \"Zu den Firmen\",\r\n ZU_DEN_FIRMEN_AUSWERTUNGEN: \"Zu den Firmen-Auswertungen\",\r\n ZU_DEN_FIRMEN_UNTERLAGEN: \"Zu den Firmen-Unterlagen {{firma}}\",\r\n ZU_DEN_FIRMENBEZIEHUNGEN: \"Zu den Firmenbeziehungen\",\r\n ZU_DEN_MINDESTLOHNERKLAERUNGEN: \"Zu den Mindestlohnerklärungen\",\r\n ZU_DEN_MITARBEITERN: \"Zu dem Personal\",\r\n ZU_DEN_PERSONAL_UNTERLAGEN: \"Zu den Personal-Unterlagen {{mitarbeiter}}\",\r\n ZU_DEN_PERSONALAUSWERTUNGEN: \"Zu den Personal-Auswertungen\",\r\n ZU_DEN_STAMMDATEN: \"Zu den Stammdaten\",\r\n ZU_DEN_UNTERLAGEN: \"Zu den Unterlagen\",\r\n ZU_DEN_VERWALTERN: \"Zu der Verwaltung\",\r\n ZU_DEN_ZEITZONEN: \"Zu den Zeitzonen\",\r\n ZU_DEN_ZUKO_SERVERN: \"Zu den Zuko-Server\",\r\n ZU_DEN_ZUTRITTSEREIGNIS_AUSWERTUNGEN:\r\n \"Zu den Auswertungen der Zutrittsereignisse\",\r\n ZU_DEN_ZUTRITTSPUNKTEN: \"Zu den Zutrittspunkten\",\r\n ZU_DER_AKTUELLEN_BESETZUNG: \"Zu der aktuellen Besetzung\",\r\n ZU_DER_BILDVERIFIZIERUNG: \"Zu der Bildverifizierung\",\r\n ZU_DER_FIRMA: \"Zu der Firma {{firma}}\",\r\n ZU_DER_FIRMENHIERACHIE: \"Zu der Firmenhierarchie\",\r\n ZUKO_KONFIGURIEREN: \"Zuko konfigurieren\",\r\n ZUKO_SERVER: \"Zuko Server\",\r\n ZUKO_SERVER_AUSWAEHLEN: \"Zuko Server auswählen\",\r\n ZUKO_SERVER_ERFOLGREICH_HINZUGEFUEGT:\r\n \"Zuko Server wurde erfolgreich hinzugefügt\",\r\n ZUKO_SERVER_ERFOLGREICH_KONFIGURIERT: \"Zuko wurde erfolgreich konfiguriert\",\r\n ZUKO_SERVER_HINZUFUEGEN: \"Zuko Server hinzufügen\",\r\n ZUKO_SERVER_KONFIGURIEREN: \"Zuko Server konfigurieren\",\r\n ZUTRITTSEREIGNISSE: \"Zutrittsereignisse\",\r\n ZUTRITTSEREIGNISSE_SYNCHRONISIERT:\r\n \"Es wurden {{input}} Zutrittsereignisse synchronisiert.\",\r\n ZUTRITTSPUNKT: \"Zutrittspunkt\",\r\n ZUTRITTSPUNKT_AKTUALISIEREN: \" Zutrittspunkt aktualisieren\",\r\n ZUTRITTSPUNKT_AKTUALISIERT: \"Zutrittspunkt wurde erfolgreich hinzugefügt\",\r\n ZUTRITTSPUNKT_GELOESCHT: \"Zutrittspunkt wurde erfolgreich gelöscht\",\r\n ZUTRITTSPUNKT_HINZUFUEGEN: \"Zutrittspunkt hinzufügen\",\r\n ZUTRITTSPUNKT_RICHTUNG: \"Zutrittspunkt - Richtung\",\r\n ZUTRITTSPUNKTE_LEER: \"Keine Zutrittspunkte vorhanden\",\r\n ZUTRITTSPUNKT_LOESCHEN: \"Zutrittspunkt löschen\",\r\n ZUTRITTSPUNKT_NAME_AKTUALISIEREN: \"Zutrittspunktname aktualisieren\",\r\n ZUTRITTSPUNKT_NAME_AKTUALISIERT:\r\n \"Zutrittspunktname wurde erfolgreich aktualisiert\",\r\n ZUTRITTSPUNKTE: \"Zutrittspunkte\",\r\n ZUTRITTSPUNKTE_VERWALTEN: \"Zutrittspunkte verwalten\",\r\n};\r\nexport default TRANSLATIONS_DE_ZUKO;\r\n","export const TRANSLATIONS_EN_ZUKO = {\r\n ABGELAUFEN_AM: \"Expired on\",\r\n ABGELAUFENE_UNTERLAGEN: \"Expired documents\",\r\n A1_PFLICHT_GETRENNT: \"A1
compulsory\",\r\n A1_PFLICHT_UNTERLAGEN: \"A1 compulsory documents\",\r\n A1_PFLICHT_UNTERLAGEN_NICHT_VOLLSTAENDIG:\r\n \"A1 compulsory documents incomplete\",\r\n ABFRAGE_DRUCK_MODAL_BODY:\r\n \"Would you like to print the construction site pass? Then select a print template from the dropdown and click on Print construction site pass. \" +\r\n \"A1 compulsory documents incomplete\",\r\n A1_UNTERLAGEN: \"A1 documents\",\r\n ADMINISTRATION: \"Administration\",\r\n AKTION: \"Action\",\r\n AKTIONEN: \"Actions\",\r\n AKTIONSNACHRICHT: \"Action message\",\r\n AKTIV: \"Active\",\r\n AKTIVIERT: \"Activated\",\r\n AKTUALISIEREN: \"Update\",\r\n AKTUELLE_BESETZUNG: \"Current occupation\",\r\n AKTUELLE_BESETZUNG_DOWNLOAD: \"Download current occupation\",\r\n AKTUELLE_BESETZUNG_TEIL1: \"Current\",\r\n AKTUELLE_BESETZUNG_TEIL2: \"construction site\",\r\n ALLE_FIRMEN_UNTERLAGEN_GEPRUEFT: \"All companies documents checked\",\r\n ALLE_MINDESTLOHNERKLAERUNGEN_GEPRUEFT:\r\n \"All minimum wage declarations checked\",\r\n ALLE_PERSONAL_UNTERLAGEN_GEPRUEFT: \"All companies documents checked\",\r\n ALLERERSTER_EINTRITT_GETRENNT: \"First
event of entry\",\r\n AM: \"on\",\r\n ANTIPASSBACK: \"Antipassback\",\r\n ANTIPASSBACK_AKTIVIEREN: \"Activate antipassback\",\r\n ANWESENDE_FIRMEN_GESAMT: \"Present companies (total)\",\r\n ANWESENDE_FIRMEN_TOP_5: \"Present companies (Top 5)\",\r\n ANWESENDE_MITARBEITER_GES: \"Employees present (total)\",\r\n ANWESENDE_MITARBEITER_LIVE: \"Employees present (live)\",\r\n ANWESENDES_PERSONAL: \"Present employees\",\r\n ANWESENDES_PERSONAL_GESAMT: \"Present employees (total)\",\r\n ANZAHL: \"Quantity\",\r\n ANZAHL_AUFTRAGGEBER: \"Quantity of client\",\r\n ANZAHL_AUSWEISGUELTIGKEIT_KONFIGURATOR: \"Count of days Id card validity\",\r\n ANZAHL_FIRMEN: \"Quantity of Companies\",\r\n ANZAHL_GEWERKE: \"Quantity of trades\",\r\n ANZAHL_MITARBEITER: \"Quantity of employees\",\r\n ANZAHL_NACHUNTERNEHMER: \"Quantity of subcontractor\",\r\n ANZAHL_ERSTHELFER: \"Quantity of first responder\",\r\n ANZAHL_SANITAETER: \"Quantity of paramedic\",\r\n ANZAHL_BRANDSCHUTZBEAUFTRAGTER: \"Quantity of fire protection officer\",\r\n ANZAHL_TAGE: \"Quantity of days\",\r\n ANZAHL_TAGE_ABLAUF_GUELTIGKEIT: \"Number of days of validity of the cycle\",\r\n ANZAHL_TAGE_TITLE: \"For example. 5 days after creation.\",\r\n ARBEITSERLAUBNIS: \"Work permit\",\r\n ARBEITSVERHAELTNIS: \"Employment relationship\",\r\n ARBEITSVERHAELTNIS_ART: {\r\n VOLLZEIT: \"Full-time\",\r\n TEILZEIT: \"Part-time\",\r\n AUSBILDUNG: \"Education\",\r\n SELBSTSTÄNDIG: \"Self-employed\",\r\n ALTERSTEILZEIT: \"Partial retirement\",\r\n FREIE_MITARBEIT: \"Freelance\",\r\n GERINGFÜGIGE_BESCHÄFTIGUNG: \"Marginal employment\",\r\n KETTENARBEITSVERHÄLTNIS: \"Chain employment relationship\",\r\n LEIHARBEIT: \"Contract work\",\r\n ZEITARBEIT: \"Time-work\",\r\n PRAKTIKUM: \"Internship\",\r\n STUDENTENJOB: \"Student job\",\r\n AUSHILFSTÄTIGKEITEN: \"Temporary jobs\",\r\n SAISONJOB: \"Seasonal job\",\r\n SONSTIGE: \"Other\",\r\n },\r\n ARBEITSVERHAELTNIS_AUSWAEHLEN: \"Select employment relationship\",\r\n ARBEITSZEITEN: \"Working hours\",\r\n ARCHIV: \"Archive\",\r\n AUFENTHALTSERLAUBNIS: \"Residence permit\",\r\n AUFENTHALTSTITEL: \"Residence permit\",\r\n AUTOMATISCHE_SPERRUNG: \"Automatical block\",\r\n AUFTRAGGEBER: \"Client\",\r\n AUFTRAGGEBER_GELOESCHT: \"Client deleted\",\r\n AUFTRAGGEBER_HINZUFUEGEN: \"Add client\",\r\n AUFTRAGGEBER_HINZUGEFUEGT: \"Client added\",\r\n AUFTRAGGEBER_LOESCHEN: \"Delete client\",\r\n AUFTRAGGEBER_MODAL_LOESCHEN: \"Do you really want to delete this client?\",\r\n AUFTRAGGEBER_MUSS_HINZUGEFUEGT_WERDEN: \"Add a client.\",\r\n AUSGEWAEHLTE_UNTERLAGEN: \"Selected documents\",\r\n AUSTRITT: \"Exit\",\r\n AUSWEISE: \"ID cards\",\r\n AUSWEIS_GUELTIGKEIT_KONFIGURATOR: \"Id card validity configurator\",\r\n AUSWEIS_GUELTIGKEIT_NICHT_EINGESTELLT: \"Id card validity not configured.\",\r\n AUSWEIS_INFO_MODAL: {\r\n TITEL: \"First steps\",\r\n VERSCHIEDENE_VORLAGE: \"Various templates can be selected here\",\r\n DESIGN_ERSTELLEN: \"Create ID card design\",\r\n BUTTON_FUER_SYSTEMVORLAGE:\r\n \"With this button you can create a system template\",\r\n DESIGN_LOESCHEN: \"Delete ID card template\",\r\n BUTTON_FUER_LOESCHEN:\r\n \"If a template is selected, the template can be deleted with this button\",\r\n TEXT_VORDERSEITE:\r\n \"Click on the images and text in the header to edit them. Click the header or footer to change the color. \" +\r\n \"The color of the texts can be changed in the footer area, but not the texts, which are automatically filled when printing\",\r\n TEXT_RUECKSEITE:\r\n \"By clicking on the texts and on the symbols \" +\r\n \"can these be changed. By clicking on the picture in \" +\r\n \"This header area can be edited.\",\r\n },\r\n AUSWEIS_KONFIGURIEREN: \"Configure ID card validity\",\r\n AUSWEIS_VORLAGE: \"Design ID card\",\r\n AUSWEIS_VORLAGEN: \"ID cards\",\r\n AUSWEISBILD: \"ID picture\",\r\n AUSWEISE_ERFOLGREICH_GESPERRT:\r\n \"Construction site permits have been successfully disabled\",\r\n AUSWERTUNGEN_AKTUALISIEREN: \"Update evaluations\",\r\n AUSWERTUNGEN_ZUTRITTSEREIGNISSE: \"Evaluation of access events\",\r\n AUSWERTUNGEN_ZUTRITTSEREIGNISSE_TEIL1: \"Evaluations of\",\r\n AUSWERTUNGEN_ZUTRITTSEREIGNISSE_TEIL2: \"access events\",\r\n AUSWIRKUNGEN_AUF_AUSWEISGUELTIGKEIT: \"Effects on ID
card validity\",\r\n BAUSTELLE: \"Construction site\",\r\n BAUSTELLEN: \"Construction sites\",\r\n BAUSTELLENAUSWEISANZAHL: \"Construction site permits count\",\r\n BAUSTELLENAUSWEISE: \"Construction site permits\",\r\n BAUSTELLENAUSWEISE_GESAMT: \"Total permits\",\r\n BAUSTELLENAUSWEISE_GETRENNT: \"Construction
site permits\",\r\n BAUSTELLENAUSWEISE_GESPERRT: \"Construction site permits disabled\",\r\n BAUSTELLENAUSWEIS_ANZAHL: \"Count of construction site permits\",\r\n BAUSTELLENAUSWEIS_AKTIV_ANZAHL: \"Count of active contruction site permits\",\r\n BAUSTELLENAUSWEIS_AUSWAEHLEN: \"Select construction site permit\",\r\n BAUSTELLENAUSWEIS_DRUCKEN: \"Print construction site permit\",\r\n BAUSTELLENAUSWEIS_ENTSPERREN: \"Unlock construction site permit\",\r\n BAUSTELLENAUSWEIS_ENTSPERREN_MODAL:\r\n \"Do you really want to unlock this construction site permit?\",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN: \"Construction site permit settings\",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN_NICHT_SYNCHRONISIERT:\r\n \"Construction site permit settings are not synchronized\",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN_AKTUALISIEREN_UND: \"Update settings and \",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN_SETZEN:\r\n \"Construction site permit settings must first be set.\",\r\n BAUSTELLENAUSWEIS_ENTSPERREN: \"Unlock Construction site permit\",\r\n BAUSTELLENAUSWEIS_ERFOLGREICH_ERSTELLT:\r\n \"Construction site permit successfully created\",\r\n BAUSTELLENAUSWEIS_ERFOLGREICH_GESPERRT:\r\n \"Construction site permit has been blocked successfully\",\r\n BAUSTELLENAUSWEIS_ERFOLGREICH_SYNCHRONISIERT:\r\n \"Construction site permit successfully synchronized.\",\r\n BAUSTELLENAUSWEIS_ERSTELLEN: \"Create a construction site permit\",\r\n BAUSTELLENAUSWEIS_ERSTELLEN_DRUCKEN:\r\n \"Create/print a construction site permit\",\r\n BAUSTELLENAUSWEIS_ERSTELLT_WERDEN:\r\n \"A construction site permit must first be issued.\",\r\n BAUSTELLENAUSWEIS_EXISTIERT: \"Construction site permit already exists!\",\r\n BAUSTELLENAUSWEIS_GESPERRT: \"Construction site permit is blocked\",\r\n BAUSTELLENAUSWEIS_GUELTIG_AB: \"Construction site permit valid from\",\r\n BAUSTELLENAUSWEIS_GUELTIG_BIS: \"Construction site permit valid until\",\r\n BAUSTELLENAUSWEIS_GRUND_AUSWAEHLEN: \"Choose reason on construction site\",\r\n BAUSTELLENAUSWEIS_LOESCHEN: \"Delete construction site permit\",\r\n BAUSTELLENAUSWEIS_LOESCHEN_SONSITGE_GRUND: \"Other reason\",\r\n BAUSTELLENAUSWEIS_LOESCHGRUND_FEHLDRUCK: \"Fail print\",\r\n BAUSTELLENAUSWEIS_LOESCHEN_LOESCHGRUND: \"Reason of delete\",\r\n BAUSTELLENAUSWEIS_LOESCHGRUND_SONSTIGE: \"Other\",\r\n BAUSTELLENAUSWEIS_LOESCHGRUND_VERLASSEN: \"Leave the construction site\",\r\n BAUSTELLENAUSWEIS_LOESCHGRUND_VERWEIS: \"Construction site banned\",\r\n BAUSTELLENAUSWEIS_LOESCHEN_BODY:\r\n \"Do you really want to delete the construction site permit\",\r\n BAUSTELLENAUSWEIS_LOESCHEN_LOESCHGRUNG: \"Deletion reason\",\r\n BAUSTELLENAUSWEIS_NICHT_MEHR_GUELTIG:\r\n \"Construction site permit isn't valid\",\r\n BAUSTELLENAUSWEIS_NICHT_SYNCRONISIERT:\r\n \"Construction site permit isn't synced\",\r\n BAUSTELLENAUSWEIS_NOCH_NICHT_GUELTIG:\r\n \"Construction site permit not valid yet\",\r\n BAUSTELLENAUSWEIS_OHNE_BILD_TEIL1:\r\n \"Do you really want to print the construction site permit\",\r\n BAUSTELLENAUSWEIS_OHNE_BILD_TEIL2: \"without a picture\",\r\n BAUSTELLENAUSWEIS_OHNE_BILD_TEIL3: \"\",\r\n BAUSTELLENAUSWEIS_SCANNEN: \"Scan/write construction site permit/name\",\r\n BAUSTELLENAUSWEIS_SPERREN: \"Block construction site permit\",\r\n BAUSTELLENAUSWEIS_SUCHEN: \"Search construction site permit\",\r\n BAUSTELLENAUSWEIS_SYNCHRONISIEREN: \"Synchronize construction site permits\",\r\n BAUSTELLENAUSWEIS_WURDE_GEDRUCKT:\r\n \"Construction site permit with card number {{kartennummer}} was printed\",\r\n BAUSTELLENAUSWEIS_VERLAENGERN: \"Extend construction site permit\",\r\n BAUSTELLENAUSWEIS_VERLAENGERN_MODAL:\r\n \"Do you really want to extend the construction site permit?\",\r\n BEDINGUNG_STARTZEIT:\r\n \"The start time cannot be greater than or equal to the end time!\",\r\n BENACHRICHTIGUNGEN: \"Notifications\",\r\n BENACHRICHTIUNG_FIRMENVERWALTER:\r\n \"Notifications of company administration (days of expiry)\",\r\n BENACHRICHTIGUNGEN_HELP_1:\r\n \"When activating the e-mail to the company administration, this will receive a reminder e-mail that the construction site pass validity \" +\r\n \"expires. \",\r\n BENACHRICHTIGUNGEN_HELP_2:\r\n \"When the e-mail is activated, the test administration receives an e-mail which informs about the validity of the construction site ID \" +\r\n \"informed.\",\r\n BENACHRICHTIUNG_PRUEFVERWALTUNG:\r\n \"Notifications of management of test (days of expiry)\",\r\n BERECHTIGUNGEN: \"Permissions\",\r\n BERECHTIGUNGSGRUPPE: \"Authorization group\",\r\n BERECHTIGUNGSGRUPPE_ERFOLGREICH_HINZUGEFÜGT:\r\n \"The authorization group add successfully\",\r\n BERECHTIGUNGSGRUPPE_HINZUFUEGEN: \"Add authorization group\",\r\n BERECHTIGUNGSGRUPPEN: \"Authorization groups\",\r\n BERECHTIGUNGSGRUPPEN_ID_KOPIEREN: \"Copy authorization groups\",\r\n BERECHTIGUNGSGRUPPEN_VERWALTEN: \"Manage authorization groups\",\r\n BERECHTIGUNGSGRUPPEN_TEIL1: \"Authorization\",\r\n BERECHTIGUNGSGRUPPEN_TEIL2: \"groups\",\r\n BERECHTIGUNGSGRUPPEN_VERWALTEN_TEIL1: \"Manage \",\r\n BERECHTIGUNGSGRUPPEN_VERWALTEN_TEIL2: \"authorization groups\",\r\n BERECHTIGUNGSGRUPPEN_SYNCHRONISIEREN: \"Refresh authorization groups\",\r\n BERECHTIGUNGSGRUPPE_AKTUALISIEREN: \"Update authorization group\",\r\n BERECHTIGUNGSGRUPPE_AUSWAEHLEN: \"Select authorization group\",\r\n BERECHTIGUNGSGRUPPE_GETRENNT: \"Authorization-
group\",\r\n BERECHTIGUNGSGRUPPE_LOESCHEN: \"Delete authorization group\",\r\n BERECHTIGUNGSGRUPPE_NICHT_ZUGEWIESEN: \"Authorization group isn't assigned\",\r\n BESCHREIBUNG: \"Description\",\r\n BETRIEBSSANITAETER: \"Company paramedic\",\r\n BETRIEBSSANITAETER_GETRENNT: \"Company
paramedic\",\r\n BEZEICHNUNG: \"Designation\",\r\n BILD_MODAL: {\r\n TITEL: \"Add/remove image\",\r\n BODY: \"Would you like to add or remove an image?\",\r\n BILD_HINZUFUEGEN: \"Add a picture\",\r\n ENTFERNE_BILD: \"Remove image\",\r\n },\r\n BILDVERIFIZIERUNG: \"Image verification\",\r\n BILDVERIFIZIERUNG_AKTIVIEREN: \"Activate image verification\",\r\n BILDVERIFIZIERUNG_DEAKTIVIEREN: \"Deactivate image verification\",\r\n BIS: \"till\",\r\n BODY_ZUTRITTSPUNKT_LOESCHEN:\r\n \"Do you really want to delete the access point?\",\r\n BRANDSCHUTZBEAUFTRAGTER: \"Fire protection officer\",\r\n BRANDSCHUTZBEAUFTRAGTE_PERSONEN: \"Fire protection officers\",\r\n DATEI: \"File\",\r\n DATEI_AUSWAEHLEN: \"Choose a file\",\r\n DATEI_TYPEN: {\r\n ERFORDERLICHE_UNTERLAGEN: \"Required documents\",\r\n WEITERE_UNTERLAGEN: \"Other documents\",\r\n NICHT_EU_BÜRGER_UNTERLAGEN: \"Non EU citizen documents\",\r\n A1_UNTERLAGEN: \"A1 documents\",\r\n WERKVERTRAGSARBEITNEHMERKARTE_UNTERLAGEN:\r\n \"Work contract employee card documents\",\r\n },\r\n DATEI_VORHANDEN: \"File exists?\",\r\n DATUM_AUSWAEHLEN: \"Choose a date\",\r\n DAVON_AKTIV: \"of them {{anzahl}} active \",\r\n DEAKTIVIERT: \"Deactivated\",\r\n DIENSTAG: \"Tuesday\",\r\n DOKUMENT_ENTPRUEFEN: \"Check the document\",\r\n DOKUMENT_ERSETZEN: \"Replace document\",\r\n DOKUMENT_ERFOLGREICH_ERSETZT: \"Document replaced successfully.\",\r\n DOKUMENT_GELOESCHT: \"Deleted document\",\r\n DOKUMENT_LOESCHEN: \"Delete document\",\r\n DOKUMENT_MODAL_ENTPRUEFEN:\r\n \"Are you sure you want to mark this document as no longer reviewed?\",\r\n DOKUMENT_MODAL_LOESCHEN: \"Do you really want to delete this document?\",\r\n DOKUMENT_MODAL_PRUEFEN:\r\n \"Are you sure you want to mark this document as reviewed?\",\r\n DOKUMENT_PRUEFEN: \"Check document\",\r\n DOKUMENT_WIRD_GELADEN: \"Document is loading\",\r\n DONNERSTAG: \"Thursday\",\r\n DOWNLOAD_NAME: \"Name of download\",\r\n DREHKREUZ: \"Turnstile XY container\",\r\n DRUCKEN: \"Print\",\r\n DRUCKVORLAGE: \"Artwork\",\r\n DRUCKVORSCHAU: \"Print preview\",\r\n DURCHGEFUEHRT_AM: \"Carried out on\",\r\n DURCHGEFUEHRT_VON: \"Carried out by\",\r\n EINGABE_ENDPOINT: \"Enter endpoint here\",\r\n EINSTELLUNGEN: \"Settings\",\r\n EINSTELLUNGEN_ERFOLGREICH_GESETZT:\r\n \"The settings for the construction site permits have been set successfully.\",\r\n EINSTELLUNGEN_GESETZT_WERDEN:\r\n \"The settings for the construction site permits must be set.\",\r\n EINSTELLUNGEN_SETZEN: \"Set settings\",\r\n EINSTELLUNGEN_SYNCHRONISIEREN: \"Synchronize settings\",\r\n EINTRITT: \"Entry\",\r\n ENDDATUM: \"Enddate\",\r\n ENDPUNKT: \"Endpoint\",\r\n ENDPUNKT_FEHLT: \"Please enter an endpoint.\",\r\n ENDPUNKT_VERBINDUNG_ERFOLGREICH: \"The endpoint was addressed successfully.\",\r\n ENTNPRUEFE_MINDESTLOHNERKLAERUNG_MODAL: {\r\n BODY: \"Do you really want to mark this minimum wage declaration as not audited?\",\r\n BUTTON: \"Mark as not checked\",\r\n TITEL: \"Revoke minimum wage declaration examination\",\r\n },\r\n ENTPRUEFT_MARKIEREN: \"Mark as not checked\",\r\n ENTSPERREN: \"Unlock\",\r\n ENTSPERRGRUND: \"Unlock Reason\",\r\n ERFORDERLICH: \"Required\",\r\n ERFORDERLICHE_UNTERLAGEN: \"Required documents\",\r\n ERREICHBAR: \"available\",\r\n ERREICHBARKEIT_LOG: \"Availability Log\",\r\n ERSTELLT_SYNCHRONISIERT_BERECHTUNGSGRUPPELIMIT:\r\n \"Created/Synced/Permission Group Limit\",\r\n ERSTELLT_SYNCHRONISIERT_ZEITZONENLIMIT: \"Created/Synced/Time Zone Limit\",\r\n ERSTELLUNGSDATUM: \"Creation Date\",\r\n ERST_MIT_SERVER_VERBINDEN: \"Please connect to the server first\",\r\n ERSTES_EINTRITTS_EREIGNIS: \"First entry event\",\r\n ERSTHELFER: \"First responder\",\r\n ERSTHELFER_MEHRZAHL: \"First responders\",\r\n ERSTHELFER_GETRENNT: \"First
responder\",\r\n EU_BUERGER: \"EU citizens\",\r\n EU_BUERGER_GETRENNT: \"EU
citizens\",\r\n EU_MITGLIEDSSTAATEN: \"EU member states including 4 EFTA stats\",\r\n FEHLENDE_RECHTE: \"Missing permissions\",\r\n FEHLENDE_RECHTE_WÄHLE_PERSONAL: \"Missing permissions. Choose a employee.\",\r\n FIRMA_AKTIVIEREN: \"Activate company\",\r\n FIRMA_AKTIVIEREN_MODAL: {\r\n BODY: \"Do you really want to activate the selected company?\",\r\n },\r\n FIRMA_AUSWAEHLEN: \"Select company\",\r\n FIRMA_EINGEBEN: \"Please enter a companyname\",\r\n FIRMA_ERFOLGREICH_ERSTELLT: {\r\n BODY: \"What do you want to do next?\",\r\n NAVIGATIONS_TEIL1: \"Create another company\",\r\n NAVIGATIONS_TEIL2: \"Create employees\",\r\n NAVIGATIONS_TEIL3: \"Look at created company\",\r\n NAVIGATIONS_TEIL4: \"Company overview\",\r\n FIRMA_ERFOLGREICH_ERSTELLT: \"Company created successfully\",\r\n },\r\n FIRMA_ERFOLGREICH_GELOESCHT: {\r\n BODY: \"What do you want to do next?\",\r\n NAVIGATIONS_TEIL1: \"Create new company\",\r\n NAVIGATIONS_TEIL2: \"Company overview\",\r\n NAVIGATIONS_TEIL3: \"Dashboard organisation\",\r\n NAVIGATIONS_TEIL4: \"Dahboard documents\",\r\n NAVIGATIONS_TEIL5: \"Dashboard construction site\",\r\n NAVIGATIONS_TEIL6: \"Go back\",\r\n TITEL: \"Company was deleted successfully\",\r\n },\r\n FIRMA_ERSTELLEN: \"Create company\",\r\n FIRMA_EXISTIERT: \"Company already exists!\",\r\n FIRMA_DEAKTIVIEREN: \"Deactivate company\",\r\n FIRMA_DEAKTIVIEREN_MODAL: {\r\n BODY: \"All of the employees' site passes will be deleted. Do you really want to deactivate the selected company?\",\r\n },\r\n FIRMA_DOKUMENT_FILTERN: \"Filter by documents or by company name\",\r\n FIRMA_LOESCHEN: \"Delete company\",\r\n FIRMA: \"Companyname\",\r\n FIRMANAMEN: \"Company name\",\r\n FIRMA_WURDE_ERFOLGREICH_AKTIVIERT: \"Company was successfully activated\",\r\n FIRMA_WURDE_ERFOLGREICH_DEAKTIVIERT: \"Company has been successfully deactivated\",\r\n FIRMEN: \"Companies\",\r\n FIRMEN_AUSWERTUNGEN: \"Companies analysis\",\r\n FIRMEN_DATEN: \"Company data\",\r\n FIRMEN_FILTERN: \"Filter by company name\",\r\n FIRMEN_UEBERSICHT_DOWNLOAD: \"Download company overview\",\r\n FIRMEN_ZUTRITTSEREIGNISSE_AUSWERTUNGEN: \"Evaluation comany access events\",\r\n FIRMENBEZIEHUNGEN: \"Corporate relationships\",\r\n FIRMENHIERACHIE: \"Company hierarchy\",\r\n FIRMENNAME: \"Company name\",\r\n FIRMENVERWALTER: \"Company administrator\",\r\n FIRMENVERWALTER_BEREITS_HINZUGEFUEGT:\r\n \"Company manager has already been added\",\r\n FIRMENVERWALTER_GELOESCHT: \"Company administrator deleted\",\r\n FIRMENVERWALTER_HINZUFUEGEN: \"Add company manager\",\r\n FIRMENVERWALTER_HINZUGEFUEGT: \"Company administrator added\",\r\n FIRMENVERWALTER_LOESCHEN: \"Delete company manager\",\r\n FIRMENVERWALTER_MODAL_LOESCHEN:\r\n \"Do you really want to delete the company manager?\",\r\n FIRMEN_UNTERLAGEN: \"Company documents\",\r\n FIRMEN_UNTERLAGEN_AUSWERTUNGEN: \"Company documents analysis\",\r\n FIRMEN_UNTERLAGEN_AUSWERTUNGEN_DOWNLOAD:\r\n \"Download company documents analysis\",\r\n FIRMEN_UNTERLAGEN_HOCHLADEN: \"Upload company documents\",\r\n FIRMEN_UNTERLAGEN_HINZUFUEGEN: \"Add company documents\",\r\n FIRMEN_UNTERLAGEN_KONFIGURIEREN: \"Configure company documents\",\r\n FIRMEN_UNTERLAGEN_MODAL_AKTUALISIEREN: {\r\n TITEL: \"Update company documents\",\r\n BODY: \"Do you really want to update the company documents?\",\r\n CARD_HEADER:\r\n \"Attention: If the properties of the documents are changed, the files that have already been uploaded remain stored with the companies.\",\r\n },\r\n FIRMEN_UNTERLAGEN_MODAL_LOESCHEN: {\r\n TITEL: \"Delete company documents\",\r\n BODY: \"Do you really want to delete the company documents?\",\r\n CARD_HEADER:\r\n \"Attention: There files that have already been uploaded remain stored with the companies.\",\r\n },\r\n FIRMEN_UNTERLAGEN_PRUEFEN: \"Check company documents\",\r\n FOTO_AUFNEHMEN: \"Capture picture\",\r\n FOTO_BENUTZEN: \"Use picture\",\r\n FOTO_HOCHLADEN: \"Upload picture\",\r\n FOTO_MACHEN: \"Take picture\",\r\n FUNKTION_IN_ARBEIT:\r\n \"It is currently not possible to state the validity date.\",\r\n FREITAG: \"Friday\",\r\n GEBURTSTAG: \"Birthday\",\r\n GELOESCHT: \"Deleted\",\r\n GEPRUEFT: \"Checked\",\r\n GEPRUEFT_GUELTIG: \"Checked/Validity\",\r\n GEPRUEFT_HOCHGELADEN: \"Checked/Uploaded\",\r\n GEPRUEFT_HOCHGELADEN_SOLL_ABGELAUFEN: \"Checked/Uploaded/Target/Expire\",\r\n GEPRUEFT_MARKIEREN: \"Mark as checked\",\r\n GESAMT_HOCHGELADEN_GEPRUEFT_SOLL: \"Total(Checked/Uploaded/Should count)\",\r\n GESAMT_GEPRUEFT_HOCHGELADEN_SOLL_ABGELAUFEN:\r\n \"Total(Checked/Uploaded/Should count/Expire)\",\r\n GESCANNTE_KARTENNUMMER_STIMMT_NICHT:\r\n \"Scanned card number {{eingegebeneKartennummer}} isn't correct\",\r\n GESPERRT: \"Locked\",\r\n GEWERBLICHER_MITARBEITER: \"Commercial employee\",\r\n GEWERK: \"Trade\",\r\n GEWERK_AUSWAEHLEN: \"Select trades\",\r\n GUELTIG_BIS: \"valid until\",\r\n GUELTIG_VON: \"valid from\",\r\n GUELTIGKEIT: \"Validity\",\r\n GUELTIGKEIT_DOKUMENT: \"Validity of documents\",\r\n GUELTIGKEITSDATUM: \"Validity date\",\r\n GUELTIGKEIT_FEHLENDER_UNTLERAGEN: \"Validity missing documents\",\r\n GUELTIGKEIT_FEHLENDER_UNTLERAGEN_HELP:\r\n \"Select after how many days the validity of the card expires, \" +\r\n \"if documents are missing. Enter a number in the input field.\",\r\n GUELTIGKEIT_HINZUFUEGEN: \"Add validity\",\r\n GUELTIGKEIT_VERLAENGERN: \"Extend validity\",\r\n GUELTIGKEITSDATUM: \"Validity date\",\r\n HAEUFIG: \"Often\",\r\n HAT_GUELTIKEIT: \"Validity activated\",\r\n HIERACHIE: \"hierachy\",\r\n HIERACHISCHES_LAYOUT: \"Hierarchical layout\",\r\n HISTORIE: \"History\",\r\n HOCHGELADEN: \"Uploaded\",\r\n HOCHGELADEN_GEPRUEFT: \"Uploaded / checked\",\r\n HOCHGELADEN_GEPRUEFT_GUELTIGKEIT_ABGELAUFENE:\r\n \"Uploaded / Checked / Validity / Expired\",\r\n HOCHGELADEN_GEPRUEFT_SOLL: \"Uploaded / checked / target number\",\r\n HOCHGELADEN_GEPRUEFT_SOLL_ABGELAUFENE:\r\n \"Uploaded / checked / target number / expired \",\r\n HOCHGELADEN_GEPRUEFT_SOLL_ABGELAUFENE_GUELTIGKEIT:\r\n \"Uploaded / checked / target number / expired / validity\",\r\n HOCHGELADENE_UNTERLAGEN: \"Uploaded
documents\",\r\n HORIZONTAL_ANORDNEN: \"Arrange horizontally\",\r\n ID_KOPIEREN: \"Copy Id\",\r\n ID_KOPIERT: \"I'd copy Id\",\r\n INAKTIV: \"inactive\",\r\n INFO_ABGELAUFENE_UNTERLAGEN: \"There have documents who is expired\",\r\n INFO_BA_GESPERRT: \"There are blocked construction site permits \\n\",\r\n INFO_BA_NICHT_SYNCHRONISIERT:\r\n \"Not all construction site IDs are synchronized \\n\",\r\n INFO_KEIN_EFTA_LAND:\r\n \"The country of origin of this company or the nationality of the employee is not an EU member state \" +\r\n \"Employee is not an EU member state or one of the 4 \" +\r\n \"EFTA countries. Please contact the responsible person \" +\r\n \"site management before you create the site pass.\",\r\n INFO_UNTERLAGEN_NICHT_VOLLSTAENDIG:\r\n \"Required documents are not complete \\n\",\r\n INFO_UNTERLAGEN_NICHT_VOLLSTAENDIG_GEPRUEFT:\r\n \"Required documents have not been fully checked \\n\",\r\n INFO_WEITERE_UNTERLAGEN_NICHT_VOLLSTAENDIG:\r\n \"Required documents are not complete \\n\",\r\n IN_RAUMZONE: \"Go into space zone\",\r\n ISTAKTIV: \"Is active?\",\r\n IST_SYNCHRONISIERT_GETRENNT: \"Is
synchronized\",\r\n JA: \"Yes\",\r\n KARTENNUMMER: \"Card number\",\r\n KARTENNUMMER_PERSONAL: \"Card number of employee\",\r\n KEIN_AUFTRAGGEBER: \"No client selected\",\r\n KEIN_AUSWEIS_VORHANDEN: \"No ID available\",\r\n KEIN_BAUSTELLENAUSWEIS_GEWAEHLT: \"No construction site permit selected\",\r\n KEIN_GUELTIGKEITSDATUM: \"No validity date\",\r\n KEIN_NACHUNTERNEHMER: \"No subcontractor selected\",\r\n KEIN_PERSONAL_GEWAEHLT: \"No employee selected\",\r\n KEIN_PDF_FORMAT: \"File format is not a PDF.\",\r\n KEIN_RECHT_BAUSTELLENAUSWEIS_ERSTELLEN:\r\n \"You do not have the right to issue a construction site permit.\",\r\n KEIN_VERWALTER: \"No administrator selected\",\r\n KEINE_AKTION_VORHANDEN: \"No action available\",\r\n KEINE_BAUSTELLENAUSWEISEINSTELLUNGEN_ABGELAUFEN:\r\n \"There are no expired construction site permits\",\r\n KEINE_BERECHTIGUNSGRUPPEN_KONFIGURIERT:\r\n \"No authorization groups are configured\",\r\n KEINE_ERGEBNISSE_GEFUNDEN: \"Sorry, we couldn't find any results\",\r\n KEINE_FIRMENUNTERLAGEN_ANGEFORDERT: \"No company documents are requested\",\r\n KEINE_GESPERRTEN_BAUSTELLENAUSWEISE_VORHANDEN:\r\n \"No blocked construction site permits are available\",\r\n KEINE_BAUSTELLENAUSWEISE_ABGELAUFEN:\r\n \"No construction site permits are expired\",\r\n KEINE_BAUSTELLENAUSWEISEINSTELLUNGEN_ABGELAUFEN:\r\n \"No construction site permit settings are expired\",\r\n KEINE_FIRMA_WHITELIST: \"No company added.\",\r\n KEINE_FIRMEN_UNTERLAGEN_KONFIGURIERT: \"No company documents are configured\",\r\n KEINE_MAIL_HINZUGEFUEGT: \"No email was added\",\r\n KEINE_MITARBEITERUNTERLAGEN_ANGEFORDERT:\r\n \"No employee documents are requested\",\r\n KEINE_LESEEINHEIT_GEWAEHLT: \"No employee unit selected\",\r\n KEINE_PERSONAL_UNTERLAGEN_KONFIGURIERT:\r\n \"No company documents are configured\",\r\n KEINE_RAUMZONE: \"No access point configured\",\r\n KEINE_VORHANDEN: \"Not available\",\r\n KEINE_VORLAGE_VORHANDEN: \"No template available\",\r\n KEINE_ZUGEWIESEN: \"None assigned\",\r\n KEINE_SERVER_VERBINDUNG: \"No connection with the server\",\r\n KEINER_AM_DREHKREUZ: \"No one on the hook\",\r\n KEINER_VORHANDEN: \"None available\",\r\n KONFIGURATION: \"Configuration\",\r\n KONFIGURATION_ERFOLGREICH_AKTUALSIIERT:\r\n \"Configuration successfully updated\",\r\n KONFIGURATION_AKTUALISIEREN: \"Update configuration\",\r\n KONFIGURATION_ERFOLGREICH_GESPEICHERT: \"Configuration successfully saved\",\r\n KONFIGURATION_ERSTELLEN: \"Create configuartion\",\r\n LAND: \"Country\",\r\n LAND_AUSWAEHLEN: \"Choose country\",\r\n LAUFT_IN_DER_MONAT_AB: \"Expires this month\",\r\n LEEREN: \"Clear\",\r\n LESEEINHEIT: \"Reading unit\",\r\n LESEEINHEIT_AUSTRITT: \"Reading unit exit\",\r\n LESEEINHEIT_EINTRITT: \"Reading unit entry\",\r\n LESEEINHEITEN: \"Reading units\",\r\n LESEEINHEIT_AUSWAEHLEN: \"Select reading unit\",\r\n LETZTE_AENDERUNG_GETRENNT: \"Last
change\",\r\n LETZTE_SYNCRONISIERUNG_GETRENNT: \"Last
sync\",\r\n LETZTER_AUSTRITT_GETRENNT: \"Last
Exit event\",\r\n LETZTER_EINTRITT_GETRENNT: \"Last
Entry Event\",\r\n LETZTER_FEHLENDER_MONAT: \"Last missing month\",\r\n LETZTES_AUSTRITTS_EREIGNIS: \"First exit event\",\r\n LETZTES_EINTRITTS_EREIGNIS: \"Last entry event\",\r\n LOESCHE_FIRMENUNTERLAGE: \"Delete company document\",\r\n LOESCHE_FIRMENUNTERLAGE_BODY: \"Do you really want to delete this document?\",\r\n LOESCHE_MINDESTLOHNERKLAERUNG_MODAL: {\r\n BODY: \"Do you really want to delete this minimum wage declaration?\",\r\n TITEL: \"Delete minimum wage declaration\",\r\n },\r\n LOESCHEN: \"Delete\",\r\n MAIL_AN_FIRMENVERWALTUNG: \"Mail to the company management\",\r\n MAIL_AN_PRUEFVERANTWORTLICHEN: \"Mail to the responsible person\",\r\n MAIL_INFO_FIRMENVERWALTER:\r\n \"The company administrator's email address is included in the \" +\r\n \"company master data configured\",\r\n MAIL_PRUEFVERANWORTLICHEN: \"Mail to the responsible person\",\r\n MINDESTLOHN: \"Minimum wage\",\r\n MINDESTLOHN_KONFIGURATION: \"Minimum wage configuration\",\r\n MINDESTLOHNERKLAERUNG_DOWNLOAD: \"Download minimum wage declaration\",\r\n MINDESTLOHNERKLAERUNG_ERFOLGREICH_GEPRUEFT:\r\n \"Minimum wage declaration was successfully checked\",\r\n MINDESTLOHNERKLAERUNG_ERFOLGREICH_HOCHGELADEN:\r\n \"Minimum wage declaration was succesfully uploaded\",\r\n MINDESTLOHNERKLAERUNG_EROLGREICH_GELOESCHT:\r\n \"Minimum wage declaration was successfully deleted\",\r\n MINDESTLOHNERKLAERUNG_VOM_MONAT: \"Minimum wage of the month \",\r\n MINDESTLOHNERKLAERUNGEN: \"Minimum wage declarations\",\r\n MINDESTLOHNERKLAERUNGEN_FILTERN:\r\n \"Filter minimum wage or employee name declarations\",\r\n MINDESTLOHNERKLAERUNGEN_GESAMT: \"Minimum wage (total)\",\r\n MINDESTLOHNERKLAERUNGEN_GETRENNT: \"Minimum wage declarations\",\r\n MINDESTLOHNERKLAERUNGEN_PRUEFEN: \"Check minimum wage declarations\",\r\n MINDESTLOHNKONFIGURATOR: \"Minimum wage\",\r\n MINDESTLOHNKONFIGURATOR_NICHT_EINGESTELLT:\r\n \"Minimum wage configurator has not yet been configured\",\r\n MINDESTLOHNPFLICHTIG: \"Minimum wage obligation\",\r\n MITARBEITER: \"Employees\",\r\n MITARBEITER_AKTIVIEREN: \"Activate employee\",\r\n MITARBEITER_AKTIVIEREN_MODAL: {\r\n BODY: \"Do you really want to activate the selected employee?\",\r\n },\r\n MITARBEITER_DEAKTIVIEREN: \"Deactivate employee\",\r\n MITARBEITER_DEAKTIVIEREN_MODAL: {\r\n BODY: \"Employee construction site ID card will be deleted. Do you really want to deactivate?\",\r\n },\r\n MITARBEITER_ERSTELLT_MODAL: {\r\n AUSWAHL_1: \"Create another employee\",\r\n AUSWAHL_2: \"Look at created employees\",\r\n AUSWAHL_3: \"Look at associated company\",\r\n AUSWAHL_4: \"Employee overview\",\r\n AUSWAHL_5: \"Organsisation\",\r\n AUSWAHL_6: \"Consturction site\",\r\n BODY: \"What do you want to do next?\",\r\n TITEL: \"Employees created successfully\",\r\n },\r\n MITARBEITER_GELOESCHT: \"Employees deleted\",\r\n MITARBEITER_LOESCHEN: \"Delete employee\",\r\n MITARBEITER_LOESCHEN_MODAL: {\r\n BODY: \"Do you really want to delete this employee?\",\r\n },\r\n MITARBEITER_UNTERLAGEN: \"Employee documents\",\r\n MITARBEITER_UNTERLAGEN_MODAL_AKTUALISIEREN: {\r\n TITEL: \"Update employee documents\",\r\n BODY: \"Do you really want to update this employee documents?\",\r\n CARD_HEADER:\r\n \"Attention: If the properties of the documents are changed, files that have already been uploaded remain stored with the employees.\",\r\n },\r\n MITARBEITER_UNTERLAGEN_MODAL_HINZUFUEGEN: {\r\n DATEI_HINZUFUEGEN: \"Added file\",\r\n NAME_EINGEBEN: \"Enter a name\",\r\n A1PFLICHT: \"A1 requirement\",\r\n AUSWIRKUNGEN_AUF_AUSWEISGUELTIGKEIT: \"Effects on ID card validity\",\r\n },\r\n MITARBEITER_UNTERLAGEN_MODAL_LOESCHEN: {\r\n TITEL: \"Delete employee documents\",\r\n BODY: \"Do you really want to delete this employee documents?\",\r\n CARD_HEADER: \"Warning: There are already uploaded documents\",\r\n },\r\n MITTWOCH: \"Wednesday\",\r\n MODAL_AUSWEIS_LOESCHEN: {\r\n TITEL: \"Delete ID card template\",\r\n BODY: \"Do you really want to delete the construction site permit template?\",\r\n INFO_CARD_HEADER: \"Warning\",\r\n INFO_CARD_CONTENT:\r\n \"After the template has been deleted, it is no longer available as a print template for Construction site permits.\",\r\n PLACEHOLDER: \"Enter the name of the template\",\r\n },\r\n MODAL_BODY_FIRMA_LOESCHEN: \"Do you really want to delete the company?\",\r\n MODAL_TEXT: {\r\n TITEL: \"Edit text\",\r\n SCHRIFTFARBE: \"Font color\",\r\n SCHRIFT_FETT: \"Font in bold\",\r\n TEXT_AUSBLENDEN: \"Hide text\",\r\n AENDERN: \"Change\",\r\n },\r\n MODAL_VORLAGE_HOCHLADEN: {\r\n TITEL: \"Upload template\",\r\n VORLAGE_ERSTELLEN: \"Create template\",\r\n },\r\n MONAT_FILTERN: \"Filter by month\",\r\n MONATLICH: \"Monthly\",\r\n MONTAG: \"Monday\",\r\n MUSTERFIRMA: \"Sample company\",\r\n MUSTERSTADT: \"Sample city\",\r\n MUSTERSTRASSE: \"Sample street 123\",\r\n MUSTERTITEL: \"Example title\",\r\n NACHNAME: \"Surname\",\r\n NACHREICHEN: \"Subsequent filing\",\r\n NACHUNTERNEHMER: \"Subcontractors\",\r\n NACHUNTERNEHMER_GELOESCHT: \"Subcontractor deleted\",\r\n NACHUNTERNEHMER_HINZUFUEGEN: \"Add subcontractors\",\r\n NACHUNTERNEHMER_HINZUGEFUEGT: \"Subcontractor added\",\r\n NACHUNTERNEHMER_LOESCHEN: \"Delete subcontractors\",\r\n NACHUNTERNEHMER_MODAL_LOESCHEN:\r\n \"Do you really want to delete the subcontractor?\",\r\n NAME: \"Name\",\r\n NEIN: \"No\",\r\n NEUE_VORLAGAE: \"New template\",\r\n NEUE_VORLAGE_ERSTELLEN: \"Create new template\",\r\n NICHT_ERFORDERLICH: \"Not required\",\r\n NICHT_EU: \"Not EU\",\r\n NICHT_EU_BUERGER: \"Not EU citizen\",\r\n NICHT_EU_BUERGERUNTERLAGEN_UNVOLLSTAENDIG:\r\n \"Non-EU citizens documents are not complete\",\r\n NICHT_EU_BUERGER_UNTERLAGEN: \"Non-EU citizens documents\",\r\n NICHT_HOCHGELADEN: \"Not uploaded\",\r\n NICHT_GEPRUEFT: \"Not checked\",\r\n NICHT_VORHANDEN: \"not present\",\r\n NOCH_NICHT_GEPRUEFT: \"Not yet checked\",\r\n NOCH_NICHT_HOCHGELADEN: \"Not yet uploaded\",\r\n OEFFNE_BILDVERIFIZIERUNG: \"Open image verification\",\r\n OFFLINE: \"offline\",\r\n OHNE_BILD_DRUCKEN: \"Print without picture\",\r\n OHNE_DRUCKEN_FORTFAHREN: \"Continue without printing\",\r\n OHNE_SYNCRONISIERUNG: \"Construction site permit no synchronization\",\r\n ONLINE: \"online\",\r\n OPTION_AUSWEIS_KONFIGURATION: {\r\n TITEL: \"Warning! Existing staff\",\r\n BODY: \"Would you like to define your settings for already existing personnel?\",\r\n AUSWAHL_MOEGLICHKEIT_1: \"Yes, also for existing staff\",\r\n AUSWAHL_MOEGLICHKEIT_2: \"No, only for newly created staff\",\r\n },\r\n ORGANISATION: \"Organisation\",\r\n ORT: \"Location\",\r\n PERSONAL: \"Employees\",\r\n PERSONAL_AKTIVIEREN: \"Activate employee\",\r\n PERSONALANZAHL: \"Employee count\",\r\n PERSONAL_AUSWERTUNGEN: \"Employee documents analysis\",\r\n PERSONAL_AUSWERTUNGEN_DOWNLOAD: \"Download employee documents analysis\",\r\n PERSONAL_DATEN: \"Employee data\",\r\n PERSONAL_DEAKTIVIEREN: \"Deactivate employee\",\r\n PERSONAL_DOKUMENT_FILTERN: \"Filter by document or employee\",\r\n PERSONAL_ERSTELLEN: \"Create employee\",\r\n PERSONAL_EINGEBEN: \"Please enter a name of employee\",\r\n PERSONAL_ERFOLGREICH_GELOESCHT: {\r\n BODY: \"What do you want to do next?\",\r\n NAVIGATIONS_TEIL1: \"Create new employeee\",\r\n NAVIGATIONS_TEIL2: \"Company overview\",\r\n NAVIGATIONS_TEIL3: \"Dashboard organisation\",\r\n NAVIGATIONS_TEIL4: \"Dahboard documents\",\r\n NAVIGATIONS_TEIL5: \"Dashboard construction site\",\r\n NAVIGATIONS_TEIL6: \"Go back\",\r\n TITEL: \"Employee was deleted successfully\",\r\n },\r\n PERSONAL_FILTERN: \"Filter employees\",\r\n PERSONAL_WURDE_ERFOLGREICH_AKTIVIERT: \"Employee has been successfully activated\",\r\n PERSONAL_WURDE_ERFOLGREICH_DEAKTIVIERT: \"Employee has been successfully deactivated\",\r\n PERSONAL_WURDE_ERFOLGREICH_VERWARNT: \"Employee was warned successfully\",\r\n PERSONAL_VERWARNEN: \"Warn employees\",\r\n PERSONAL_VERWARNEN_MODAL: \"Do you really want to warn the employee?\",\r\n PERSONAL_UEBERSICHT_DOWNLOAD: \"Download employee overview\",\r\n PERSONAL_UNTERLAGEN: \"Employee documents\",\r\n PERSONAL_UNTERLAGEN_AUSWERTUNGEN: \"Employee documents analysis\",\r\n PERSONAL_UNTERLAGEN_AUSWERTUNGEN_DOWNLOAD:\r\n \"Download employee documents analysis\",\r\n PERSONAL_UNTERLAGEN_KONFIGURIEREN: \"Employee documents configuration\",\r\n PERSONAL_UNTERLAGEN_PRUEFEN: \"Check employee documents\",\r\n PERSONALNAME: \"Name of employee\",\r\n PDF_BESTAETIGUNG_WIDERRUFEN: \"Revoke PDF file confirmation\",\r\n PDF_DATEI: \"PDF file\",\r\n PDF_DATEI_ANZEIGEN: \"Show PDF file\",\r\n PDF_DATEI_ARCHIVIEREN: \"Archive PDF file\",\r\n PDF_DATEI_HOCHLADEN: \"Upload PDF file\",\r\n PDF_DATEI_LOESCHEN: \"Permanently delete PDF file\",\r\n PDF_DATEI_VORLAGE_HERUNTERLADEN: \"Download PDF file template\",\r\n PDF_ECHTHEIT_BESTAETIGEN: \"Confirm PDF file authenticity\",\r\n PLZ: \"Zip code\",\r\n PROFILBILD_ERFOLGREICH_HOCHGELADEN: \"Profile picture uploaded successfully\",\r\n PROFILBILD_WIRD_HOCHGELADEN: \"Profile picture is uploaded\",\r\n PROJEKTZEITEN_AKTIVIERT: \"Project times activate\",\r\n PROJEKTZEITEN_DEAKTIVIERT: \"Project times deactivate\",\r\n PRUEFE_MINDESTLOHNERKLAERUNG_MODAL: {\r\n BODY: \"Do you really want to mark this minimum wage declaration as checked?\",\r\n BUTTON: \"Mark as not checked\",\r\n TITEL: \"Check minimum wage declaration\",\r\n },\r\n PRUEFER: \"Tester\",\r\n PRUEFUNG_WIEDERRUFEN: \"Cancel check\",\r\n PRUEFVERANTWORTLICHE: \"Responsible person\",\r\n PRUEFVERWALTUNG_MAIL: \"Mail of responsible person\",\r\n RAUMZONEN: \"Space zones\",\r\n RESTLICHE_LAENDER: \"Rest of the world\",\r\n RICHTUNG: \"Direction\",\r\n SAMSTAG: \"Saturday\",\r\n SANITAETER: \"Paramedic\",\r\n SIDEBAR: {\r\n PROJEKTROLLEN: \"Create, manage and assign project roles\",\r\n PROJEKTBETEILIGTE: \"Invite and manage project participants\",\r\n AUSWERTUNGEN: \"View and export project evaluations\",\r\n AUSWERTUNGEN_EINSTELLUNGEN:\r\n \"Manage automatic mail delivery of evaluations\",\r\n ORGANISATION: \"Create and manage employees and companies\",\r\n UNTERLAGEN: \"Manage companies, employees and minimum wage documents\",\r\n BAUSTELLE:\r\n \"Manage construction site ID card, turnstiles and access points\",\r\n ZUKO_EINSTELLUNGEN: \"Manage access control administrative settings\",\r\n },\r\n SONNTAG: \"Sunday\",\r\n SPEICHERN: \"Save\",\r\n SPERRE_MODAL: {\r\n BODY: \"Do you really want to block all of the employee's construction site IDs?\",\r\n BUTTON: \"Block\",\r\n EINGABE_SPERRGRUND: \"Enter the reason for blocking here\",\r\n SPERRGRUND: \"Blocking reason\",\r\n TITEL: \"Block construction site IDs\",\r\n },\r\n SPERREN: \"Block\",\r\n SPERRUNG_AM: \", Block on the {{stichtag}} every month\",\r\n SPRACHE: \"Language\",\r\n STAATSANGEHOERIGKEIT: \"Nationality\",\r\n STAATSANGEHOERIGKEIT_AUSWAEHLEN: \"Select nationality\",\r\n STAMMDATEN: \"Base data\",\r\n STAMMDATEN_AKTUALISIEREN: \"Update master data\",\r\n STAMMDATEN_AKTUALISIERT: \"Master data updated\",\r\n STAMMDATEN_ERFOLGREICH_AKTUALISIERT: \"Master data updated successfully\",\r\n STARTDATUM: \"Startdate\",\r\n STARTDATUM_VOR_ENDDATUM: \"The start date cannot be later than the end date\",\r\n STATUS: \"Status\",\r\n STICHTAG_AM: \"Deadline of\",\r\n STRASSE: \"Street\",\r\n SYNCHRONISIERE_ZUTRITTSEREIGNISSE: \"Synchronizing access events\",\r\n SYNCHRONISIERT: \"Synchronized\",\r\n SYSTEMGUELTIGKEIT: \"System validity until\",\r\n SYSTEMVORLAGE: \"System template\",\r\n TAG: \"Day\",\r\n TOAST_NEUER_STATUS_ZUTRITTSZEITEN_AKTIVIERT:\r\n \"Status of access events was succesfully updated. New status: activated\",\r\n TOAST_NEUER_STATUS_ZUTRITTSZEITEN_DEAKTIVIERT:\r\n \"Status of access events was succesfully updated. New status: deaktivated\",\r\n TOAST_NEUER_STATUS_BILDVERIFIZIERUNG_AKTIVIERT: \"Status of image verification was succesfully updated. New status: activated\",\r\n TOAST_NEUER_STATUS_BILDVERIFIZIERUNG_DEAKTIVIERT: \"Status of image verification was succesfully updated. New status: deactivated\",\r\n TOOLTIP_BAUSTELLENAUSWEISE: \"Synced / Locked / Total\",\r\n TRENNEN: \"Disconnect\",\r\n TYP: \"Type\",\r\n UEBERSICHT: \"Overview\",\r\n UEBERSICHT_EINGEBENER_DATEN: \"Overview of your entered data\",\r\n UHRZEIT: \"Timestamp\",\r\n UNBEFRISTET: \"unlimited\",\r\n UNBEGRENZT: \"Unlimited\",\r\n UNERREICHBAR: \"unreachable\",\r\n UNTERLAGEN: \"Documents\",\r\n UNTERLAGEN_AUSWERTUNGEN: \"Evaluations of documents\",\r\n UNTERLAGEN_AUSWERTUNGEN_TEIL1: \"Evaluations of\",\r\n UNTERLAGEN_AUSWERTUNGEN_TEIL2: \"documents\",\r\n UNTERLAGEN_DATEN: \"Documents data\",\r\n UNTERLAGEN_HINZUFUEGEN: \"Add documents\",\r\n UNTERLAGEN_NAME: \"Document name\",\r\n UNTERLAGE_ENTPRUEFT_MARKIEREN: \"Document marked as not checked\",\r\n UNTERLAGE_ERFOLGREICH_ENTPRUEFT:\r\n \"Examination for document was successfully revoked\",\r\n UNTERLAGE_ERFOLGREICH_GELOESCHT: \"Document was succesfully remove\",\r\n UNTERLAGE_ERFOLGREICH_WIEDERHERGESTELLT: \"Document was succesfully revert\",\r\n UNTERLAGE_GEPRUEFT_MARKIEREN: \"Document marked as checked\",\r\n UNTERLAGE_HINZUFUEGEN: \"Add Document\",\r\n UNTERLAGE_HINZUGEFUEGT: \"Added Document\",\r\n UNTERLAGEN_MODAL_HINZUFUEGEN: {\r\n DATEI_HINZUFUEGEN: \"Add file\",\r\n GUELTIGKEIT: \"Validity\",\r\n NAME_EINGEBEN: \"Please enter a name\",\r\n },\r\n VERBINDEN: \"Connect\",\r\n VERBINDUNG: \"Connection\",\r\n VERBINDUNG_MIT_DEM_SERVER: \"Connected to the server\",\r\n VERBINDUNG_TESTEN: \"Test connection\",\r\n VERLAENGERUNGSGRUND: \"Extension reason\",\r\n VERWALTER: \"Administrator\",\r\n VERWALTER_HINZUFUEGEN: \"Add administrator\",\r\n VERWENDUNG_IN_BERECHTIGUNGSGRUPPEN: \"Use in authorization groups\",\r\n VON: \"by\",\r\n VORNAME: \"First name\",\r\n VORHANDEN: \"present\",\r\n VORLAGE: \"Template\",\r\n VORLAGE_ANZEIEGEN: \"Show template\",\r\n VORLAGE_AKTUALISIEREN: \"Update the template\",\r\n VORLAGE_AUSWAEHLEN: \"Select template\",\r\n VORLAGE_BEARBEITEN: \"Edit template\",\r\n VORLAGE_EROFLGREICH_AKTUALISIERT: \"Vorlage wurde erfolgreich aktualisiert\",\r\n VORLAGE_EROFLGREICH_ERSTELLT: \"Vorlage wurde erfolgreich erstellt\",\r\n VORLAGE_EROFLGREICH_GELOESCHT: \"Vorlage wurde erfolgreich gelöscht\",\r\n VORLAGE_LOESCHEN: \"Delete template\",\r\n VORLAGE_SPEICHERN: \"Save template\",\r\n VORLAGEN: \"Templates\",\r\n VORLAGENNAME: \"Templatename\",\r\n VORLAGE_AUSWAEHLEN: \"Select template\",\r\n WEITERE_MITARBEITERUNTERLAGE_HINZUGEFUEGT:\r\n \"Additional employee documentation was successfully added.\",\r\n WEITERE_UNTERLAGE_NAME_EXISITIERT: \"Exist further document name\",\r\n WEITERE_UNTERLAGEN: \"More documents\",\r\n WEITERE_UNTERLAGEN_GETRENNT: \"Further
documents\",\r\n WEITERE_UNTERLAGEN_HINZUFUEGEN: \"Add further documents\",\r\n WEITERE_UNTERLAGE_HINZUFUEGEN: \"Add another document\",\r\n WERKVERTRAGSARBEITNEHMERKARTE: \"Work contract employee card\",\r\n WERKVERTRAGSARBEITNEHMERKARTE_NICHT_VOLLSTAENDIG:\r\n \"Work contract employee card is not complete\",\r\n WEVAK_PFLICHT: \"WeVAK requirement\",\r\n WEVAK_UNTERLAGEN: \"WeVAK documents\",\r\n WHITELIST: \"Ausgenommene Firmenliste\",\r\n WIEDERHERSTELLEN: \"Revert documents\",\r\n WIRD_NACHGEREICHT: \"will be given later\",\r\n WURDE_NICHT_GEPRUEFT: \"was not checked\",\r\n WURDE_NICHT_HOCHGELADEN: \"wasn't uploaded\",\r\n ZEITABSCHNITTE: \"Periods of time\",\r\n ZEITINTERVALL: \"Interval of time\",\r\n ZEITSTEMPEL: \"Time stamp\",\r\n ZEITZONE_AKTUALISIERT: \"Time zone updated successfully\",\r\n ZEITZONE_AKTUALISIEREN: \"Update time zone\",\r\n ZEITZONE_AUSWAEHLEN: \"Select time zone\",\r\n ZEITZONE_HINZUFUEGEN: \"Add time zone\",\r\n ZEITZONE_HINZUGEFUEGT: \"Time zone was successfully added\",\r\n ZEITZONE_GELOESCHT: \"Time zone was successfully deleted\",\r\n ZEITZONE_ID: \"Time zone ID\",\r\n ZEITZONE_LOESCHEN: \"Delete time zone\",\r\n ZEITZONE_SYNCHRONISIERT: \"Synced time zones\",\r\n ZEITZONE_WIRKLICH_LOESCHEN: \"Do you really want to delete the time zone?\",\r\n ZEITZONEN: \"Time zones\",\r\n ZEITZONEN_LEER: \"No time zones\",\r\n ZEITZONEN_NAME_SYNCHRONISIERT: \"Time zone name already exists!\",\r\n ZEITZONEN_VERWALTEN: \"Manage time zones\",\r\n ZEITZONEN_VERWALTEN_TEIL1: \"Manage\",\r\n ZEITZONEN_VERWALTEN_TEIL2: \"time zones\",\r\n ZU_DEM_AUSWEIS_DESIGNER: \"To the Id card designer\",\r\n ZU_DEM_AUSWEISGUELTIGKEIT_KONFIGURATOR:\r\n \"To the Id card validity configurator\",\r\n ZU_DEM_BAUSTELLENAUSWEIS: \"To the construction site IDs {{(mitarbeiter)}}\",\r\n ZU_DEM_MINDESTLOHNKONFIGURATOR: \"To the minimum wage configurator\",\r\n ZU_DEM_PERSONAL: \"To the employees\",\r\n ZU_DEN_BAUSTELLENAUSWEISEN: \"To the construction site IDs\",\r\n ZU_DEN_BERECHTIGUNGSGRUPPEN: \"To the authorization groups\",\r\n ZU_DEN_FIRMEN: \"To the companies\",\r\n ZU_DEN_FIRMEN_AUSWERTUNGEN: \"To the company evaluations\",\r\n ZU_DEN_FIRMEN_UNTERLAGEN: \"To the company documents {{firma}}\",\r\n ZU_DEN_FIRMENBEZIEHUNGEN: \"To the company relations\",\r\n ZU_DEN_MINDESTLOHNERKLAERUNGEN: \"To the minimum wage declarations\",\r\n ZU_DEN_MITARBEITERN: \"To the employees\",\r\n ZU_DEN_PERSONAL_UNTERLAGEN: \"To the employee documents {{mitarbeiter}}\",\r\n ZU_DEN_PERSONALAUSWERTUNGEN: \"To the employee analysis\",\r\n ZU_DEN_STAMMDATEN: \"To the master data\",\r\n ZU_DEN_UNTERLAGEN: \"To the documents\",\r\n ZU_DEN_VERWALTERN: \"To the administrators\",\r\n ZU_DEN_ZEITZONEN: \"To the time zones\",\r\n ZU_DEN_ZUKO_SERVERN: \"To the Zuko-Server\",\r\n ZU_DEN_ZUTRITTSEREIGNIS_AUSWERTUNGEN: \"To the attendance analysis\",\r\n ZU_DEN_ZUTRITTSPUNKTEN: \"To the access points\",\r\n ZU_DER_AKTUELLEN_BESETZUNG: \"To the current settlement\",\r\n ZU_DER_BILDVERIFIZIERUNG: \"To the image verification\",\r\n ZU_DER_FIRMA: \"To the company {{firma}}\",\r\n ZU_DER_FIRMENHIERACHIE: \"To the company hierarchy\",\r\n ZUKO_KONFIGURIEREN: \"Configure ZuKo\",\r\n ZUKO_SERVER: \"ZuKo Server\",\r\n ZUKO_SERVER_AUSWAEHLEN: \"Select ZuKo Server\",\r\n ZUKO_SERVER_ERFOLGREICH_HINZUGEFUEGT: \"ZuKo Server was added successfully\",\r\n ZUKO_SERVER_ERFOLGREICH_KONFIGURIERT:\r\n \"ZuKo has been successfully configured\",\r\n ZUKO_SERVER_HINZUFUEGEN: \"Add ZuKo Server\",\r\n ZUKO_SERVER_KONFIGURIEREN: \"Configure ZuKo Server\",\r\n ZUTRITTSEREIGNISSE: \"Access events\",\r\n ZUTRITTSEREIGNISSE_SYNCHRONISIERT:\r\n \"{{input}} access events have been synchronized.\",\r\n ZUTRITTSPUNKT: \"Entry point\",\r\n ZUTRITTSPUNKT_AKTUALISIEREN: \"Update access point\",\r\n ZUTRITTSPUNKT_AKTUALISIERT: \"Access point has been successfully added\",\r\n ZUTRITTSPUNKT_GELOESCHT: \"Access point has been successfully deleted\",\r\n ZUTRITTSPUNKT_HINZUFUEGEN: \"Add access point\",\r\n ZUTRITTSPUNKT_RICHTUNG: \"Access point - direction\",\r\n ZUTRITTSPUNKTE_LEER: \"No access points\",\r\n ZUTRITTSPUNKT_LOESCHEN: \"Delete access point\",\r\n ZUTRITTSPUNKT_NAME_AKTUALISIEREN: \"Update access point name\",\r\n ZUTRITTSPUNKT_NAME_AKTUALISIERT: \"Access point name updated successfully\",\r\n ZUTRITTSPUNKTE: \"Entry points\",\r\n ZUTRITTSPUNKTE_VERWALTEN: \"Manage access points\",\r\n};\r\nexport default TRANSLATIONS_EN_ZUKO;\r\n","export const TRANSLATIONS_DE_PROJEKT = {\r\n ABRECHNUNGSKONFIGURATOR: \"Abrechnungskonfigurator\",\r\n ABRECHNUNGSKONFIGURATOR_GETRENNT: \"Abrechnungs-konfigurator\",\r\n ABRECHNUNGSMODELL: {\r\n BUCHHALTUNG_ODER_AUFTRAGGEBER:\r\n \"Wähle den Empfänger-Typ Auftraggeber oder Buchhaltung aus.\",\r\n TITEL: \"Abrechnungsmodell\",\r\n HELPER_1:\r\n \"Wählen Sie hier, ob das Projekt nachdem Lizenz- oder Pauschalmodell abgerechnet werden soll?\",\r\n HELPER_2:\r\n \"Eingetragne E-Mailadressen erhalten monatliche Mails mit den Auflistung der aktiven Ausweisen.\",\r\n LABEL_1: \"Welches Abrechnungsmodell möchten Sie auswählen?\",\r\n MAIL_EXISTIERT: \"Email wurde bereits hinzugefügt.\",\r\n MAILTYP: \"Mailtyp\",\r\n },\r\n AKTIVIEREN: \"Aktivieren\",\r\n ALLE: \"Alle\",\r\n AUFTRAGGEBER: \"Auftraggeber\",\r\n AUSWAEHLEN_PROJEKTROLLE: \"Projektrolle auswählen\",\r\n AUSWERTUNGEN: \"Auswertungen\",\r\n AVIS: \"Avisierung\",\r\n BENUTZER: \"Benutzer*in\",\r\n BITTE_AUSWAEHLEN: \"Bitte auswählen\",\r\n BUCHHALTUNG: \"Buchhaltung\",\r\n CONTAINER: \"Container\",\r\n CONTAINER_HELPER_TEXT_1:\r\n \"Hier können Sie Rechte zum Container-Modul („Navigationspunkt Container“) vornehmen.\",\r\n CONTAINER_HELPER_TEXT_2: \"Buchungen betrachten\",\r\n CONTAINER_HELPER_TEXT_TITLE_2:\r\n \"Wählen Sie „Alle“,wenn die Rolle alle Buchungen betrachten können soll.\",\r\n CONTAINER_HELPER_TEXT_3:\r\n \"Buchungen detailliert betrachten wählen Sie „Ja“, dann haben Sie weitere Optionen die Sie der Rolle vergeben können.\",\r\n CONTAINER_HELPER_TEXT_TITLE_3: \"Buchungen detailliert betrachten\",\r\n CONTAINER_HELPER_TEXT_TITLE_4:\r\n \"Wählen Sie „Ja“, wenn die Rolle Unterlagen betrachten. Sollten Sie „Ja“ wählen können Sie anschließend weiter Rechte vergeben können.\",\r\n CONTAINER_HELPER_TEXT_TEXT_4: \"Unterlagen betrachten\",\r\n CONTAINER_HELPER_TEXT_TITLE_5:\r\n \"Wählen Sie „Ja“, wenn die Rolle Buchungsunterlagen-Konfiguration betrachten. Sollten Sie „Ja“ wählen können Sie anschließend weiter Rechte vergeben können.\",\r\n CONTAINER_HELPER_TEXT_TEXT_5: \"Buchungsunterlagen-Konfiguration betrachten\",\r\n CONTAINER_HELPER_TEXT_TITLE_6:\r\n \"Wählen Sie „Ja“, wenn die Rolle Containerburg-Konfiguration betrachten. Sollten Sie „Ja“ wählen können Sie anschließend weiter Rechte vergeben können.\",\r\n CONTAINER_HELPER_TEXT_TEXT_6: \"Containerburg-Konfiguration betrachten\",\r\n CONTAINER_HELPER_TEXT_TITLE_7:\r\n \"Wählen Sie „Ja“, wenn die Rolle Container-Konfiguration betrachten. Sollten Sie „Ja“ wählen können Sie anschließend weiter Rechte vergeben können.\",\r\n CONTAINER_HELPER_TEXT_TEXT_7: \"Container-Konfiguration betrachten\",\r\n DASHBOARD: \"Dashboard\",\r\n DASHBOARD_HELPER_TEXT_1:\r\n \"Hier können Sie Rechte zum Dashboard-Modul („Navigationspunkt Dashboard“) vornehmen.\",\r\n DASHBOARD_HELPER_TEXT_TITLE_2: \"Auswertungen betrachten\",\r\n DASHBOARD_HELPER_TEXT_2:\r\n \"Wählen Sie „Ja“, wenn die Rolle die Möglichkeit haben soll, den Navigationspunkt Auswertungen mit ihrem Inhalt einzusehen sowie diese zu exportieren.\",\r\n DASHBOARD_HELPER_TEXT_TITLE_3: \"Export Konfiguration betrachten\",\r\n DASHBOARD_HELPER_TEXT_TEXT_3:\r\n \"Wählen Sie „Ja“, wenn die Rolle die Möglichkeit haben soll, den Navigationspunkt Einstellungen \" +\r\n \" mit den konfigurierten Emailadressen zu sehen.\",\r\n DASHBOARD_HELPER_TEXT_TEXT_4:\r\n \"Sollten Sie „Ja“ gewählt haben, haben Sie weitere Optionen\",\r\n DASHBOARD_HELPER_TEXT_TITLE_5: \"Export Konfiguration bearbeiten\",\r\n DASHBOARD_HELPER_TEXT_TEXT_5:\r\n \"Wählen Sie „Ja“, wenn die Rolle die Möglichkeit haben soll, die konfigurierten Email-Adressen bearbeiten sowie neue hinzuzufügen und bestehende zu entfernen.\",\r\n DEAKTIVIEREN: \"Deaktivieren\",\r\n DSGVO_OEFFNEN: \"Datenschutzeinwilligung öffnen\",\r\n EINSTELLUNGEN: \"Einstellungen\",\r\n HELPER_TEXT_VERERBUNG:\r\n \"Sollte eine Antwortmöglichkeit nicht anklickbar sein, fehlt der übergeordneten Elternrolle, von welcher diese Rolle erbt, das entsprechende Recht.\",\r\n JA: \"Ja\",\r\n KEINE_MAIL_HINZUGEFUEGT: \"Keine Mail dem Verteiler hinzugefügt\",\r\n KONFIGURATION: \"Konfiguration\",\r\n KONFIGURATION_AKTUALISIEREN: \"Konfiguration aktualisieren\",\r\n KONFIGURATION_ERFOLGREICH_AKTUALSIIERT:\r\n \"Koniguration erfolgreich aktualisiert\",\r\n KONFIGURATION_ERFOLGREICH_GESPEICHERT:\r\n \"Konfiguration wurde erfolgreich gespeichert\",\r\n KONFIGURATION_ERSTELLEN: \"Konfiguration erstellen\",\r\n LIZENZMODELL: \"Lizenzmodell\",\r\n MAIL: \"E-Mail\",\r\n MAIL_EINGEBEN: \"Bitte E-Mail eintragen\",\r\n MAILVERTEILER: \"Mailverteiler\",\r\n MEINE: \"Meine\",\r\n MEINE_UND_GEERBTE: \"Meine & Geerbte\",\r\n MEINE_PROJEKTE: \"Meine Projekte\",\r\n MIT_ALLEN_FIRMEN: \"mit allen Firmen inkl. gesamten Personal\",\r\n MIT_MEINEN_FIRMEN: \"mit meinen Firmen inkl. ihrem Personal\",\r\n NACHNAME: \"Nachname\",\r\n NAME: \"Name\",\r\n NAME_EXISTIERT: \"Name existiert bereits\",\r\n NAME_PROJEKTBETEILIGTER: \"Name der Projektbeteiligten Person\",\r\n NEIN: \"Nein\",\r\n NEWS: \"News\",\r\n PAUSCHALMODELL: \"Pauschalmodell\",\r\n PARENT_ROLE: \"Eltern-Projektrolle\",\r\n PARENT_PROJEKTROLLE_AUSGEWAEHLT: \"Warnung.Eltern-Projektrolle ausgewählt.\",\r\n PFLICHTFELDER: \"Pflichtfeldedr wurden nicht ausgefüllt.\",\r\n PROJEKT: \"Projekt\",\r\n PROJEKT_AKTUALISIEREN: \"Projekt aktualisieren\",\r\n PROJEKTBETEILIGTEN_EINLADEN: \"Projektbeteiligte Person einladen\",\r\n PROJEKTBETEILIGTER_ERFOLGREICH_HINZUGEFUEGT:\r\n \"Projektbeteiligte Person wurde erfolgreich eingeladen\",\r\n PROJEKTBETEILIGTEN_MODAL_BODY: \"Was möchten Sie als Nächstes tun?\",\r\n PROJEKTBETEILIGTEN_TITEL: \"Projektbeteiligte Personen\",\r\n PROJEKTBETEILIGTEN_UEBERSICHT: \"Übersicht der projektbeteiligten Personen\",\r\n PROJEKTBETEILIGTER_AKTUALISIEREN: \"Projektbeteiligte Person aktualisieren\",\r\n PROJEKTBETEILIGTER_ERFOLGREICH_ERSTELLT:\r\n \"Projektbeteiligte Person erfolgreich eingeladen\",\r\n PROJEKTBETEILIGTER_GELOESCHT: \"Projektbeteiligte Person gelöscht\",\r\n PROJEKTBETEILIGTER_LOESCHEN: \"Projektbeteiligte Person löschen\",\r\n PROJEKTBETEILIGTER_MODAL_BODY:\r\n \"Wollen Sie diese projektbeteiligte Person wirklich löschen?\",\r\n PROJEKTBETEILIGTER_MODAL_TITEL: \"Projektbeteiligte Person löschen\",\r\n PROJEKTBETEILIGTE_BETRACHTEN:\r\n \"Projektbeteiligte Personen detailliert betrachten\",\r\n PROJEKTBETEILIGTE_EINLADEN: \"Projektbeteiligte Person einladen\",\r\n PROJEKTBETEILIGTE_LOESCHEN: \"Projektbeteiligte Person löschen\",\r\n PROJEKTBETEILIGTE_TITEL: \"Projektbeteiligte Personen\",\r\n PROJEKTE: \"Projekte\",\r\n PROJEKTNAME: \"Projektname\",\r\n PROJEKTNAME_EINGABE: \"Bitte Projektname eingeben\",\r\n PROJEKTROLLEN: \"Projektrollen\",\r\n PROJEKTROLLEN_BEARBEITEN: \"Projektrollen bearbeiten\",\r\n PROJEKTROLLEN_BETRACHTEN: \"Alle Projektrollen betrachten\",\r\n PROJEKTROLLEN_DETAILIERT_BETRACHTEN: \"Projektrollen detailliert betrachten\",\r\n PROJEKTROLLEN_ERSTELLEN: \"Projektrollen erstellen\",\r\n PROJEKTROLLEN_LOESCHEN: \"Projektrollen löschen\",\r\n PROJEKTROLLEN_NAME_EINGEBEN: \"Bitte Name der Projektrolle eingeben\",\r\n PROJEKTROLLE_AKTUALISIEREN: \"Projektrolle aktualisieren\",\r\n PROJEKTROLLE_AKTUALISIERT: \"Projektrolle aktualisiert\",\r\n PROJEKTROLLE_ERSTELLEN: \"Projektrolle erstellen\",\r\n PROJEKTROLLE_GELOESCHT: \"Projektrolle gelöscht\",\r\n PROJEKTROLLE_LOESCHEN: \"Projektrolle löschen\",\r\n PROJEKTROLLE_MIT_BENUTZERN_FEHLERHAFT:\r\n \"Projektrolle mit Benutzern kann nicht gelöscht werden\",\r\n PROJEKTROLLE_MODAL_BODY: \"Wollen Sie diese Projektrolle wirklich löschen?\",\r\n PROJEKTROLLE_MODAL_TITEL: \"Übersicht Ihrer eingegeben Daten\",\r\n PROJEKTROLLE_TITEL: \"Projektrolle\",\r\n PROJEKTROLLE_AKTUALISIEREN_TITEL: \"Projektrolle aktualisieren\",\r\n PROJEKTROLLE_ZUWEISEN:\r\n \"Projektrolle einer projektbeteiligten Person zuweisen\",\r\n PROJEKT_ERSTELLEN: \"Projekt erstellen\",\r\n PROJEKT_ERSTELLEN_MODAL_BODY_TEXT1: \"Was möchten Sie als Nächstes tun?\",\r\n PROJEKT_ERSTELLEN_MODAL_BODY_TEXT2: \"Weitere Projektrolle erstellen\",\r\n PROJEKT_ERSTELLEN_MODAL_BODY_TEXT3: \"Erstellte Projektrolle betrachten\",\r\n PROJEKT_ERSTELLEN_MODAL_BODY_TEXT4: \"Projektrollenübersicht\",\r\n PROJEKT_ERSTELLEN_MODAL_TITEL: \"Projektrolle erfolgreich erstellt\",\r\n PROJEKT_ERSTELLEN_VIEW: {\r\n AVIS_MODUL: \"Avisierung\",\r\n BAUSTELLENGROESSE: \"Baustellengröße\",\r\n BAUSTELLE_OEFFNUNGSZEITEN: \"Öffnungszeiten der Baustelle\",\r\n BRUTTORAUMINHALT: \"Bruttorauminhalt\",\r\n BRUTTORAUMINHALT_EINGEBEN: \"Bitte Bruttorauminhalt eingeben\",\r\n BRUTTOGESCHLOSSFLAECHE: \"Bruttogeschossfläche\",\r\n BRUTTOGESCHLOSSFLAECHE_EINGEBEN: \"Bitte Bruttogeschossfläche eingeben\",\r\n CONTAINER_MODUL: \"Container\",\r\n CONTAINERBURG_ADMIN_GRAFIK_BETRACHTEN: \"Administrative Containerburgabbildung betrachten\",\r\n DASHBOARD_MODUL: \"Dashboard\",\r\n DATENSCHUTZ: \"Datenschutz\",\r\n DATENSCHUTZVERORDNUNGFILEDOWNLOADNAME:\r\n \"DatenschutzverordnungFileDownloadName\",\r\n DEBITORENNUMMER: \"Debitorennummer\",\r\n DSGVO: \"Datenschutzeinwilligung\",\r\n DEBITORENNUMMER_EINGEBEN: \"Bitte Debitorennummer eingeben\",\r\n DIENSTAG: \"Dienstag\",\r\n DONNERSTAG: \"Donnerstag\",\r\n ENDDATUM: \"Enddatum\",\r\n FREITAG: \"Freitag\",\r\n FUENF_ZEICHEN_FORMAT: \"Format müssen 5 Zahlen sein\",\r\n KOSTENSTELLE: \"Kostenstelle\",\r\n KOSTENSTELLE_EINGEBEN: \"Bitte Kostenstelle eingeben\",\r\n LIEFERADRESSE: \"Lieferadresse\",\r\n MITTWOCH: \"Mittwoch\",\r\n MODULE: \"Module\",\r\n MONTAG: \"Montag\",\r\n NEWS_MODUL: \"News\",\r\n OEFFNUNG: \"Öffnung\",\r\n PLZ: \"Postleitzahl\",\r\n PLZ_EINGEBEN: \"Bitte Postleitzahl eingeben\",\r\n PLZ_ERROR: \"Bitte geben Sie eine fünfstellige Postleitzahl ein\",\r\n PROJEKTADRESSE: \"Projektadresse\",\r\n PROJEKTBILD: \"Projektbild\",\r\n PROJEKTLEITER: \"Projektleiter\",\r\n PROJEKTLEITER_EINGABE: \"Bitte Projektleiter eingeben\",\r\n PROJEKTSTAMMDATEN: \"Projektstammdaten\",\r\n PROJEKTZEITRAUM: \"Projektzeitraum\",\r\n SAMSTAG: \"Samstag\",\r\n SCHLIESSUNG: \"Schließung\",\r\n SECHS_ZEICHEN_FORMAT: \"Format müssen 6 Zahlen sein\",\r\n SONNTAG: \"Sonntag\",\r\n STARTDATUM: \"Startdatum\",\r\n STADT: \"Stadt\",\r\n STADT_EINGEBEN: \"Bitte Stadt eingeben\",\r\n STRASSE: \"Straße\",\r\n STRASSE_EINGEBEN: \"Bitte Straße eingeben\",\r\n ZUKO_MODUL: \"Zutrittskontroll\",\r\n },\r\n PROJEKT_HELPER_TEXT_1:\r\n \"Hier können Sie Rechte zum Projekt-Modul („Navigationspunkt Projekt“) vornehmen.\",\r\n PROJEKT_HELPER_TEXT_TITLE_2: \"Projektbeteiligte Personen betrachten\",\r\n PROJEKT_HELPER_TEXT_2:\r\n \"Hier können Sie zwischen „Alle“ und „Meine“ wählen, alle folge Punkte beziehen sich dann auf die gewählte Option.\",\r\n PROJEKT_HELPER_TEXT_TITLE_3: \"Projektrollen betrachten\",\r\n PROJEKT_HELPER_TEXT_3:\r\n \"Hier können Sie zwischen „Meine & Geerbte“ sowie „Meine“ auswählen, die folgenden Punkte beziehen sich auf die gewählte Option. \",\r\n PROJEKT_HELPER_TEXT_TITLE_3: \"Projektkonfiguration betrachten\",\r\n PROJEKT_HELPER_TEXT_3:\r\n \"Wählen Sie „Ja“, wenn die Rolle die Möglichkeit haben soll, die Projektkonfiguration einzusehen. Sollten Sie „Ja“ wählen, haben Sie eine weitere Option, damit die Rolle den Projekt-Konfigurator bearbeiten kann.\",\r\n PROJEKT_HELPER_TEXT_TITLE_4: \"Abrechnungskonfiguration betrachten\",\r\n PROJEKT_HELPER_TEXT_4:\r\n \"Wählen Sie „Ja“, wenn die Rolle die Möglichkeit haben soll, die Abrechnungskonfiguration einzusehen. Sollten Sie „Ja“ wählen, haben Sie eine weitere Option, damit die Rolle den Abrechnungs-Konfigurator bearbeiten kann.\",\r\n PROJEKT_RECHTE: {\r\n ABRECHNUNG_KONFIGURATION_BETRACHTEN:\r\n \"Abrechnungskonfigurator betrachten\",\r\n ABRECHNUNG_KONFIGURATION_BEARBEITEN:\r\n \"Abrechnungskonfigurator bearbeiten\",\r\n ABRECHNUNGSDETAILS_BETRACHTEN: \"Abrechnungsdetails betrachten\",\r\n ABTRANSPORT_ANMELDEN: \"Abtransport anmelden\",\r\n AKTUELLE_BESETZUNG_BETRACHTEN: \"Aktuelle Besetzung betrachten\",\r\n ALLE_BAUSTELLENAUSWEISE_SPERREN_BEARBEITEN:\r\n \"Alle Baustellenausweise sperren\",\r\n ALLE_BUCHUNGEN_BETRACHTEN: \"Buchungen betrachten\",\r\n ALLE_PROJEKTROLLEN_BETRACHTEN: \"Alle Projektrollen betrachten\",\r\n ALLE_TRANSPORTE_BETRACHTEN: \"Transporte betrachten\",\r\n ANLIEFERUNG_ANMELDEN: \"Anlieferung anmelden\",\r\n AUSSTATTUNG_KONFIGURATION_BETRACHTEN:\r\n \"Konfiguration Ausstatttung betrachten\",\r\n AUSSTATTUNG_KONFIGURATION_BEARBEITEN:\r\n \"Konfiguration Ausstatttung bearbeiten\",\r\n AUSWEISDESIGN_KONFIGURATION_BETRACHTEN:\r\n \"Ausweisdesign-Konfiguration betrachten\",\r\n AUSWEISDESIGN_KONFIGURATION_BEARBEITEN:\r\n \"Ausweisdesign-Konfiguration bearbeiten\",\r\n AUSWEISGUELTIGKEIT_KONFIGURATION_BEARBEITEN:\r\n \"Ausweisgültigkeit-Konfiguration bearbeiten\",\r\n AUSWEISGUELTIGKEIT_KONFIGURATION_BETRACHTEN:\r\n \"Ausweisgültigkeit-Konfiguration betrachten\",\r\n AUSWERTUNGEN_BETRACHTEN: \"Auswertungen betrachten\",\r\n BAUSTELLENAUSWEIS_ENTSPERREN: \"Baustellenausweise entsperren\",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN_SETZEN:\r\n \"Baustellenausweis-Einstellungen setzen\",\r\n BAUSTELLENAUSWEIS_ERSTELLEN_UND_DRUCKEN:\r\n \"Baustellenausweise erstellen & drucken\",\r\n BAUSTELLENAUSWEIS_LOESCHEN: \"Baustellenausweis löschen\",\r\n BAUSTELLENAUSWEISE_UEBERSICHT_BETRACHTEN:\r\n \"Baustellenausweise betrachten\",\r\n BAUSTELLENAUSWEIS_SPERREN: \"Baustellenausweise sperren\",\r\n BERECHTIGUNGSGRUPPEN_KONFIGURATION_BETRACHTEN:\r\n \"Berechtigunsgruppen-Konfiguration betrachten\",\r\n BERECHTIGUNGSGRUPPEN_KONFIGURATION_BEARBEITEN:\r\n \"Berechtigunsgruppen-Konfiguration bearbeiten\",\r\n BESTIMMUNGSORT_KONFIGURATION_BEARBEITEN: \"Bestimmungsort bearbeiten\",\r\n BESTIMMUNGSORT_KONFIGURATION_BETRACHTEN: \"Bestimmungsort betrachten\",\r\n BILDVERIFIZIERUNG_BETRACHTEN: \"Bildverifizierung betrachten\",\r\n BUCHUNGEN_ARCHIVIEREN: \"Buchungen archivieren\",\r\n BUCHUNGEN_BETRACHTEN: \"Buchungen betrachten\",\r\n BUCHUNGEN_BEARBEITEN: \"Buchungen bearbeiten\",\r\n BUCHUNGEN_DETAILLIERT_BETRACHTEN: \"Buchungen detailliert betrachten\",\r\n BUCHUNGEN_ERSTELLEN: \"Buchungen erstellen\",\r\n BUCHUNGEN_GENEHMIGEN_UND_STORNIEREN:\r\n \"Buchungen genehmigen & stornieren\",\r\n BUCHUNGSUNTERLAGEN_ARCHIVIEREN: \"Buchungsunterlagen archivieren\",\r\n BUCHUNGSUNTERLAGEN_HOCHLADEN: \"Buchungsunterlagen hochladen\",\r\n BUCHUNGSUNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Buchungsunterlagen-Konfiguration bearbeiten\",\r\n BUCHUNGSUNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"Buchungsunterlagen-Konfiguration betrachten\",\r\n BURG_KONFIGURATION_BEARBEITEN: \"Containerburg-Konfiguration bearbeiten\",\r\n BURG_KONFIGURATION_BETRACHTEN: \"Containerburg-Konfiguration betrachten\",\r\n CONTAINER_KONFIGURATION_BEARBEITEN:\r\n \"Container-Konfiguration bearbeiten\",\r\n CONTAINER_KONFIGURATION_BETRACHTEN:\r\n \"Container-Konfiguration betrachten\",\r\n CONTAINER_BUCHUNGSUNTERLAGE_ARCHIVIEREN:\r\n \"Containerbuchungsunterlage archivieren\",\r\n CONTAINERBUCHUNGSUNTERLAGEN_ARCHIVIEREN:\r\n \"Containerbuchungsunterlagen archivieren\",\r\n CONTAINERBUCHUNGSUNTERLAGEN_HOCHLADEN:\r\n \"Containerbuchungsunterlagen hochladen\",\r\n CONTAINERBUCHUNGSUNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Containerbuchungsunterlagen-Konfiguration bearbeiten\",\r\n CONTAINERBUCHUNGSUNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"Containerbuchungsunterlagen-Konfiguration betrachten\",\r\n CONTAIENRBURG_ADMIN_GRAFIK_BETRACHTEN:\r\n \"Grafische Admin-Containerburg betrachten\",\r\n CONTAINERBURG_BILD_BETRACHTEN: \"Containerburgbild betrachten\",\r\n DISPOSITIONEN_BETRACHTEN: \"Dispositionen betrachten\",\r\n DISPOSITIONEN_ABSCHLIESSEN: \"Dispositionen abschliessen\",\r\n EIGENE_PROJEKTROLLEN_BETRACHTEN: \"Eigene Projektrollen betrachten\",\r\n EIGENE_UND_GEERBTE_PROJEKTROLLEN_BETRACHTEN:\r\n \"Eigene und geerbte Projektrollen betrachten\",\r\n EINSTELLUNGEN_BETRACHTEN: \"Einstellungen betrachten\",\r\n EINSTELLUNGEN_BEARBEITEN: \"Einstellungen bearbeiten\",\r\n EXPORT_KONFIGURATION_BEARBEITEN: \"Export Konfiguration bearbeiten\",\r\n EXPORT_KONFIGURATION_BETRACHTEN: \"Export Konfiguration betrachten\",\r\n FIRMEN_BEARBEITEN: \"Firmen bearbeiten\",\r\n FIRMEN_DETAILLIERT_BETRACHTEN: \"Firmen detailliert betrachten\",\r\n FIRMEN_ERSTELLEN: \"Firmen erstellen\",\r\n FIRMEN_LOESCHEN: \"Firmen löschen\",\r\n FIRMENHIERARCHIE_BETRACHTEN: \"Firmenhierarchie betrachten\",\r\n FIRMEN_MIT_PERSONAL_BETRACHTEN:\r\n \"Firmen mit zugehörigem Personal betrachten\",\r\n FIRMEN_UNTERLAGEN_ARCHIVIEREN: \"Firmenunterlagen archivieren\",\r\n FIRMEN_UNTERLAGEN_HOCHLADEN: \"Firmenunterlagen hochladen\",\r\n FIRMEN_UNTERLAGEN_PRUEFEN_UND_WIDERRUFEN:\r\n \"Firmenunterlagen prüfen & widerrufen\",\r\n FIRMEN_UNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"Firmenunterlagen-Konfiguration betrachten\",\r\n FIRMEN_UNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Firmenunterlagen-Konfiguration bearbeiten\",\r\n FIRMEN_UNTERLAGEN_UEBERSICHT_BETRACHTEN: \"Firmenunterlagen betrachten\",\r\n FIRMEN_UNTERLAGEN_WIEDERHERSTELLEN: \"Firmenunterlagen wiederherstellen\",\r\n FIRMEN_ZUTRITTSAUSWERTUNGEN_BETRACHTEN:\r\n \"Firmenzutrittsauswertungen betrachten\",\r\n KONFIGURATION_BETRACHTEN: \"Projektkonfiguration betrachten\",\r\n KONFIGURATION_BEARBEITEN: \"Projektkonfiguration bearbeiten\",\r\n MINDESTLOHN_KONFIGURATION_BETRACHTEN:\r\n \"Mindestlohn-Konfiguration betrachten\",\r\n MINDESTLOHN_KONFIGURATION_BEARBEITEN:\r\n \"Mindestlohn-Konfiguration bearbeiten\",\r\n MINDESTLOHNERKLAERUNGEN_HOCHLADEN: \"Mindestlohnerklärungen hochladen\",\r\n MINDESTLOHNERKLAERUNGEN_PRUEFEN_UND_WIDERRUFEN:\r\n \"Mindestlohnerklärungen prüfen & wiederrufen\",\r\n MINDESTLOHNERKLAERUNGEN_ARCHIVIEREN:\r\n \"Mindestlohnerklärungen archivieren\",\r\n MINDESTLOHNERKLAERUNGEN_UEBERSICHT_BETRACHTEN:\r\n \"Mindestlohnerklärungen betrachten\",\r\n MINDESTLOHNERKLAERUNGEN_WIEDERHERSTELLEN:\r\n \"Mindestlohnerklärungen wiederherstellen\",\r\n MODULANGABEN_KONFIGURATION_BETRACHTEN: \"Modulangaben betrachten\",\r\n MODULANGABEN_KONFIGURATION_BEARBEITEN: \"Modulangaben bearbeiten\",\r\n MODULUNTERLAGEN_BETRACHTEN: \"Modulunterlagen betrachten\",\r\n MODULUNTERLAGEN_KONFIGURATION_BEARBEITEN: \"Modulunterlagen bearbeiten\",\r\n MODULUNTERLAGEN_KONFIGURATION_BETRACHTEN: \"Modulunterlagen betrachten\",\r\n MODULVERANTWORTLICHER_KONFIGURATION_BEARBEITEN:\r\n \"Moduldulverantwortlicher bearbeiten\",\r\n MODULVERANTWORTLICHER_KONFIGURATION_BETRACHTEN:\r\n \"Modulverantwortlicher betrachten\",\r\n NACHRICHT_ARCHIVIEREN: \"Nachricht archivieren\",\r\n NACHRICHTEN_BETRACHTEN: \"Nachricht betrachten\",\r\n NACHRICHT_BEARBEITEN: \"Nachricht bearbeiten\",\r\n NACHRICHT_ERSTELLEN: \"Nachricht erstellen\",\r\n PERSONAL_BEARBEITEN: \"Personal bearbeiten\",\r\n PERSONAL_DETAILLIERT_BETRACHTEN: \"Personal detailliert betrachten\",\r\n PERSONAL_ERSTELLEN: \"Personal erstellen\",\r\n PERSONAL_LOESCHEN: \"Personal löschen\",\r\n PERSONAL_UNTERLAGEN_ARCHIVIEREN: \"Personalunterlagen archivieren\",\r\n PERSONAL_UNTERLAGEN_HOCHLADEN: \"Personalunterlagen hochladen\",\r\n PERSONAL_UNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"Personalunterlagen-Konfiguration betrachten\",\r\n PERSONAL_UNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Personalunterlagen-Konfiguration bearbeiten\",\r\n PERSONAL_UNTERLAGEN_PRUEFEN_UND_WIDERRUFEN:\r\n \"Personalunterlagen prüfen & widerrufen\",\r\n PERSONAL_UNTERLAGEN_UEBERSICHT_BETRACHTEN:\r\n \"Personalunterlagen betrachten\",\r\n PERSONAL_UNTERLAGEN_WIEDERHERSTELLEN:\r\n \"Personalunterlagen wiederherstellen\",\r\n PERSONAL_ZUTRITTSAUSWERTUNGEN_BETRACHTEN:\r\n \"Personalzutrittsauswertungen betrachten\",\r\n PROJEKTBETEILIGTE_BEARBEITEN: \"Projektbeteiligte bearbeiten\",\r\n PROJEKTBETEILIGTE_BETRACHTEN: \"Projektbeteiligte Personen betrachten\",\r\n PROJEKTBETEILIGTEN_BETRACHTEN: \"Projektbeteiligten Personen betrachten\",\r\n PROJEKTBETEILIGTE_DETAILLIERT_BETRACHTEN:\r\n \"Projetktebteiligte Personen detailliert betrachten\",\r\n PROJEKTBETEILIGTE_EINLADEN: \"Projektbeteiligte Person einladen\",\r\n PROJEKTBETEILIGTE_HINZUFUEGEN: \"Projektbeteiligte hinzufügen\",\r\n PROJEKTBETEILIGTE_LOESCHEN: \"Projektbeteiligte Personen löschen\",\r\n PROJEKTBETEILIGTE_ROLLENZUWEISUNG_AENDERN:\r\n \"Rollenzuweisung projektbeteiligte Person ändern\",\r\n PROJEKTROLLEN_BETRACHTEN: \"Projektrollen betrachten\",\r\n PROJEKTROLLEN_DETAILLIERT_BETRACHTEN:\r\n \"Projektrollen detalliert betrachten\",\r\n PROJEKTROLLEN_ERSTELLEN: \"Projektrolle erstellen\",\r\n PROJEKTROLLEN_BEARBEITEN: \"Projektrolle bearbeiten\",\r\n PROJEKTROLLEN_LOESCHEN: \"Projektrolle löschen\",\r\n RESSOURCEN_KONFIGURATION_BETRACHTEN: \"Ressourcen betrachten\",\r\n RESSOURCEN_KONFIGURATION_BEARBEITEN: \"Resourcen bearbeiten\",\r\n TRANSPORT_ALLE_BETRACHTEN: \"Transporte betrachten\",\r\n TRANSPORT_BEARBEITEN: \"Transport bearbeiten\",\r\n\r\n TRANSPORT_DETAILLIERT_BETRACHTEN: \"Transporte detailliert betrachten\",\r\n TRANSPORT_GENEHMIGEN_UND_STORNIEREN:\r\n \"Transport genehmigen und stornieren\",\r\n UNTERLAGEN_BETRACHTEN: \"Unterlagen betrachten\",\r\n UNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Unterlagen-Konfiguration bearbeiten\",\r\n UNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"Unterlagen-Konfiguration betrachten\",\r\n ZEITZONEN_KONFIGURATION_BETRACHTEN:\r\n \"Zeitzonen-Konfiguration betrachten\",\r\n ZEITZONEN_KONFIGURATION_BEARBEITEN:\r\n \"Zeitzonen-Konfiguration bearbeiten\",\r\n ZEITSLOTS_KONFIGURATION_BETRACHTEN: \"Zeitslot-Konfiguration betrachten\",\r\n ZEITSLOTS_KONFIGURATION_BEARBEITEN: \"Zeitslot-Konfiguration bearbeiten\",\r\n ZIELORT_KONFIGURATION_BEARBEITEN: \"Zielort bearbeiten\",\r\n ZIELORT_KONFIGURATION_BETRACHTEN: \"Zielort betrachten\",\r\n ZUKO_SERVER_KONFIGURATION_BETRACHTEN: \"Zuko-Server betrachten\",\r\n ZUKO_SERVER_KONFIGURATION_BEARBEITEN: \"Zuko-Server bearbeiten\",\r\n ZUTRITTSEREIGNISSE_SYNCHRONISIEREN_BEARBEITEN:\r\n \"Zutrittsereignisse synchronisieren\",\r\n ZUTRITTSPUNKTE_KONFIGURATION_BEARBEITEN:\r\n \"Zutrittspunkte-Konfiguration bearbeiten\",\r\n ZUTRITTSPUNKTE_KONFIGURATION_BETRACHTEN:\r\n \"Zutrittspunkte-Konfiguration betrachten\",\r\n },\r\n STAMMDATEN: \"Stammdaten\",\r\n STAMMDATEN_ERFOLGREICH_AKTUALISIERT:\r\n \"Stammdaten wurden erfolgreich aktualisiert\",\r\n STAMMDATEN_HELPER_TEXT_1:\r\n \"Beachten Sie das der Name der Projektrolle noch nicht existiert.\",\r\n STAMMDATEN_HELPER_TEXT_2:\r\n \"Von dieser Rolle erbt die zu erstellende Rolle. Das bedeutet, die zu erstellende Rolle hat weniger Rechte als die Eltern-Projektrolle.\",\r\n STAMMDATEN_HELPER_TEXT_3:\r\n \"Sollten Sie eine System-Rolle ausgewählt haben, können Sie die nur betrachten und nicht aktualisieren.\",\r\n UEBERSICHTSSEITEN: \"Übersichtsseiten\",\r\n UNTERNEHMEN: \"Unternehmen\",\r\n VORNAME: \"Vorname\",\r\n WARNUNG_PARENT_PROJEKTROLLE_BEFUELLEN:\r\n \"Soll die Projektrolle wirklich von der angegebenen Projektrolle erben? Dann wählen Sie Ja.\",\r\n WEITEREN_BETEILIGTEN_EINLADEN: \"Weitere projektbeteiligte Person einladen\",\r\n ZUKO_HELPER_TEXT_1:\r\n \"Hier können Sie Rechte zum Zutrittskontroll-Modul („Navigationspunkt Zutrittskontrolle“) vornehmen.\",\r\n ZUKO_HELPER_TEXT_TITLE_2: \"Firmen mit zugehörigem Personal betrachten\",\r\n ZUKO_HELPER_TEXT_2:\r\n \"Hier können Sie zwischen „Alle“ und „Meine“ wählen, alle folgende Punkte beziehen sich auf diese Auswahl.\",\r\n ZUKO_HELPER_TEXT_UEBERSICHTSSEITEN:\r\n \"Übersichtsseiten mit meinen Firmen inkl. Personal \",\r\n ZUKO_HELPER_TEXT_UEBERSICHTSSEITEN_1:\r\n \"Hier können Sie die Rechte für alle Übersichtsseiten, keine detaillierte Betrachtung von Personal oder Firmen setzen. \",\r\n ZUKO_HELPER_TEXT_UEBERSICHTSSEITEN_2:\r\n \"Angezeigte Werte sind abhängig von „Meine“ oder „Alle“ Firmen mit zugehörigem Personal.\",\r\n ZUKO_HELPER_TEXT_EINSTELLUNGEN:\r\n \"Hierbei handelt es sich um die Konfiguration des Zutrittskontrollmoduls und die Vergabe dieser Rechte sollte genau geprüft werden \",\r\n\r\n ZUTRITTSKONTROLLE: \"Zutrittskontrolle\",\r\n};\r\nexport default TRANSLATIONS_DE_PROJEKT;\r\n","export const TRANSLATIONS_EN_PROJEKT = {\r\n ABRECHNUNGSKONFIGURATOR: \"Billingconfigurator\",\r\n ABRECHNUNGSKONFIGURATOR_GETRENNT: \"Billing-configurator\",\r\n ABRECHNUNGSMODELL: {\r\n BUCHHALTUNG_ODER_AUFTRAGGEBER:\r\n \"Choose the type of recipient client or accounting.\",\r\n TITEL: \"Billing model\",\r\n HELPER_1:\r\n \"Select here whether the project should be billed according to the license or flat-rate model?\",\r\n HELPER_2:\r\n \"Registered e-mail addresses receive monthly e-mails listing the active ID cards.\",\r\n LABEL_1: \"Which billing model would you like to choose?\",\r\n MAIL_EXISTIERT: \"Mail has already been added\",\r\n MAILTYP: \"Typ of mail\",\r\n },\r\n AKTIVIEREN: \"Activate\",\r\n ALLE: \"All\",\r\n AUFTRAGGEBER: \"Recipient client\",\r\n AUSWAEHLEN_PROJEKTROLLE: \"Choose a project role\",\r\n AUSWERTUNGEN: \"Evaluations\",\r\n BENUTZER: \"User\",\r\n BITTE_AUSWAEHLEN: \"Choose please\",\r\n BUCHHALTUNG: \"Accounting\",\r\n CONTAINER: \"Shipping\",\r\n CONTAINER_HELPER_TEXT_1:\r\n \"Here you can set rights to the shipping module („navigation point Container“).\",\r\n CONTAINER_HELPER_TEXT_2: \"View bookings\",\r\n CONTAINER_HELPER_TEXT_TITLE_2:\r\n \"Select „All“ if the role should be able to view all bookings.\",\r\n CONTAINER_HELPER_TEXT_3:\r\n \"View bookings in detail select „Yes“, then you have further options that you can assign to the role.\",\r\n CONTAINER_HELPER_TEXT_TITLE_3: \"View bookings in detail\",\r\n CONTAINER_HELPER_TEXT_TITLE_4:\r\n \"Select „Yes“ if the role will view module files. If you choose „Yes“, you can then continue to assign rights.\",\r\n CONTAINER_HELPER_TEXT_TEXT_4: \"View module files\",\r\n CONTAINER_HELPER_TEXT_TITLE_5:\r\n \"Select „Yes“ when viewing the role accounting documents configuration. If you choose „Yes“, you can then continue to assign rights.\",\r\n CONTAINER_HELPER_TEXT_TEXT_5: \"View accounting documents configuration\",\r\n CONTAINER_HELPER_TEXT_TITLE_6:\r\n \"Select „Yes“ when viewing the role container castle configuration. If you choose „Yes“, you can then continue to assign rights.\",\r\n CONTAINER_HELPER_TEXT_TEXT_6: \"View container castle\",\r\n CONTAINER_HELPER_TEXT_TITLE_7:\r\n \"Select „Yes“ when viewing the role container castle configuration. If you choose „Yes“, you can then continue to assign rights.\",\r\n CONTAINER_HELPER_TEXT_TEXT_7: \"View container configuration\",\r\n DASHBOARD: \"Dashboard\",\r\n DASHBOARD_HELPER_TEXT_1:\r\n \"In this area you can set rights to the dashboard module (“dashboard navigation point”).\",\r\n DASHBOARD_HELPER_TEXT_TITLE_2: \"View evaluations\",\r\n DASHBOARD_HELPER_TEXT_2:\r\n \"SELECT „Yes“ if the role should be able to view the Evaluations navigation point with its content and to export it.\",\r\n DASHBOARD_HELPER_TEXT_TITLE_3: \"View export configuration\",\r\n DASHBOARD_HELPER_TEXT_TEXT_3:\r\n \"Select „Yes“, if you want the role to be able to use the settings navigation item\" +\r\n \" with the configured email addresses..\",\r\n DASHBOARD_HELPER_TEXT_TEXT_4:\r\n \"If you selected „Yes“, you have further options\",\r\n DASHBOARD_HELPER_TEXT_TITLE_5: \"Export Konfiguration bearbeiten\",\r\n DASHBOARD_HELPER_TEXT_TEXT_5:\r\n \"Select „Yes“ if the role should be able to edit the configured email addresses as well as add new ones and remove existing ones.\",\r\n DEAKTIVIEREN: \"Deactivate\",\r\n DSGVO_OEFFNEN: \"Show data protection consent\",\r\n EINSTELLUNGEN: \"Settings\",\r\n HELPER_TEXT_VERERBUNG:\r\n \"If an answer option is not clickable, the parent role from which this role inherits does not have the corresponding right.\",\r\n JA: \"Yes\",\r\n KEINE_MAIL_HINZUGEFUEGT: \"No Mail added the distributor\",\r\n KONFIGURATION: \"Configuration\",\r\n KONFIGURATION_AKTUALISIEREN: \"Update configuration\",\r\n KONFIGURATION_ERFOLGREICH_AKTUALSIIERT:\r\n \"Configuration updated successfully\",\r\n KONFIGURATION_ERFOLGREICH_GESPEICHERT: \"Configuration created successfully\",\r\n KONFIGURATION_ERSTELLEN: \"Create configuration\",\r\n LIZENZMODELL: \"License model\",\r\n MAIL: \"Mail\",\r\n MAIL_EINGEBEN: \"Enter a mail\",\r\n MAILVERTEILER: \"Mail distributor\",\r\n MEINE: \"My\",\r\n MEINE_PROJEKTE: \"My projects\",\r\n MEINE_UND_GEERBTE: \"Mine & inherited\",\r\n MIT_ALLEN_FIRMEN: \"with all companies including the entire staff\",\r\n MIT_MEINEN_FIRMEN: \"with my companies including the entire staff\",\r\n NACHNAME: \"Surname\",\r\n NAME: \"Name\",\r\n NAME_EXISTIERT: \"Name already exists\",\r\n NAME_PROJEKTBETEILIGTER: \"Name project participants persons\",\r\n NEIN: \"No\",\r\n NEWS: \"News\",\r\n PAUSCHALMODELL: \"Flat-rate model\",\r\n PARENT_ROLE: \"Parent project role\",\r\n PARENT_PROJEKTROLLE_AUSGEWAEHLT:\r\n \"Warning.You choose a parent project role.\",\r\n PROJEKT: \"Project\",\r\n PFLICHTFELDER_AUSWAEHLEN: \"Reciered fields missing a value\",\r\n PROJEKT_AKTUALISIEREN: \"Update project\",\r\n PROJEKTBETEILIGTEN_EINLADEN: \"Invite project participants\",\r\n PROJEKTBETEILIGTER_ERFOLGREICH_HINZUGEFUEGT:\r\n \"Project participants was successfully invited\",\r\n PROJEKTBETEILIGTEN_MODAL_BODY: \"What is your next step?\",\r\n PROJEKTBETEILIGTEN_TITEL: \"Project participants person\",\r\n PROJEKTBETEILIGTEN_UEBERSICHT: \"Project participants overview\",\r\n PROJEKTBETEILIGTER_AKTUALISIEREN: \"Update project participants\",\r\n PROJEKTBETEILIGTER_GELOESCHT: \"Project participant deleted\",\r\n PROJEKTBETEILIGTER_ERFOLGREICH_ERSTELLT:\r\n \"Project participants successfully invited\",\r\n PROJEKTBETEILIGTER_LOESCHEN: \"Delete project participants\",\r\n PROJEKTBETEILIGTER_MODAL_BODY:\r\n \"Do you really want to delete this project participant?\",\r\n PROJEKTBETEILIGTER_MODAL_TITEL: \"Delete project participant\",\r\n PROJEKTBETEILIGTE_BETRACHTEN: \"Detailed view on project participants\",\r\n PROJEKTBETEILIGTE_EINLADEN: \"Invite project participants\",\r\n PROJEKTBETEILIGTE_LOESCHEN: \"Delete project participants\",\r\n PROJEKTBETEILIGTE_TITEL: \"Project participants\",\r\n PROJEKTE: \"Projects\",\r\n PROJEKTNAME: \"Project name\",\r\n PROJEKTNAME_EINGABE: \"Please enter project name\",\r\n PROJEKTROLLE_AKTUALISIEREN: \"Update project role\",\r\n PROJEKTROLLE_AKTUALISIERT: \"Project role updated\",\r\n PROJEKTROLLE_ERSTELLEN: \"Create project role\",\r\n PROJEKTROLLE_GELOESCHT: \"Project role deleted\",\r\n PROJEKTROLLE_MIT_BENUTZERN_FEHLERHAFT:\r\n \"Project role with users cannot be deleted.\",\r\n PROJEKTROLLE_LOESCHEN: \"Delete project role\",\r\n PROJEKTROLLE_MODAL_BODY: \"Do you really want to delete this project role?\",\r\n PROJEKTROLLE_MODAL_TITEL: \"Overview of your entered data\",\r\n PROJEKTROLLE_TITEL: \"Project role\",\r\n PROJEKTROLLE_ZUWEISEN: \"Assign project role to a project participant\",\r\n PROJEKTROLLEN: \"Project roles\",\r\n PROJEKTROLLEN_BEARBEITEN: \"Edit project roles\",\r\n PROJEKTROLLEN_BETRACHTEN: \"View all project roles\",\r\n PROJEKTROLLEN_DETAILIERT_BETRACHTEN: \"Detailed view on project roles\",\r\n PROJEKTROLLEN_ERSTELLEN: \"Create project roles\",\r\n PROJEKTROLLEN_LOESCHEN: \"Delete project roles\",\r\n PROJEKTROLLEN_NAME_EINGEBEN: \"Please enter a name of projekt role\",\r\n PROJEKT_ERSTELLEN: \"Create project\",\r\n PROJEKT_ERSTELLEN_MODAL_BODY_TEXT1: \"What is your next step?\",\r\n PROJEKT_ERSTELLEN_MODAL_BODY_TEXT2: \"Create another project role\",\r\n PROJEKT_ERSTELLEN_MODAL_BODY_TEXT3: \"View the created project role\",\r\n PROJEKT_ERSTELLEN_MODAL_BODY_TEXT4: \"Project role overview\",\r\n PROJEKT_ERSTELLEN_MODAL_TITEL: \"Project role has been created successfully\",\r\n PROJEKT_ERSTELLEN_VIEW: {\r\n AVIS_MODUL: \"Notification system\",\r\n BAUSTELLENGROESSE: \"Construction site size\",\r\n BAUSTELLE_OEFFNUNGSZEITEN: \"Construction site opening hours\",\r\n BRUTTORAUMINHALT: \"Gross area contents\",\r\n BRUTTORAUMINHALT_EINGEBEN: \"Please enter gross volume\", \r\n BRUTTOGESCHLOSSFLAECHE: \"Gross floor area\", \r\n BRUTTOGESCHLOSSFLAECHE_EINGEBEN: \"Please enter gross floor area\",\r\n CONTAINER_MODUL: \"Shipping\",\r\n CONTAINERBURG_ADMIN_GRAFIK_BETRACHTEN: \"View management container castle illustration\",\r\n DASHBOARD_MODUL: \"Dashboard\",\r\n DATENSCHUTZ: \"Data protection\",\r\n DATENSCHUTZVERORDNUNGFILEDOWNLOADNAME:\r\n \"Data protection regulationFileDownloadName\",\r\n DEBITORENNUMMER: \"Debtor number\",\r\n DEBITORENNUMMER_EINGEBEN: \"Enter the debtor number\",\r\n DSGVO: \"Data protection consent\",\r\n DIENSTAG: \"Tuesday\",\r\n DONNERSTAG: \"Thursday\",\r\n ENDDATUM: \"Date of End\",\r\n FREITAG: \"Friday\",\r\n FUENF_ZEICHEN_FORMAT: \"Format have to be 5 numbers\",\r\n KOSTENSTELLE: \"Cost centre\",\r\n KOSTENSTELLE_EINGEBEN: \"Enter the cost centre\",\r\n LIEFERADRESSE: \"Delivery address\",\r\n MITTWOCH: \"Wednesday\",\r\n MODULE: \"Modul\",\r\n MONTAG: \"Monday\",\r\n NEWS_MODUL: \"News\",\r\n OEFFNUNG: \"Opening\",\r\n PLZ: \"Zip code\",\r\n PLZ_EINGEBEN: \"Please enter zip code\",\r\n PLZ_ERROR: \"Please enter a zip code with five numbers\",\r\n PROJEKTADRESSE: \"Project address\",\r\n PROJEKTBILD: \"Project picture\",\r\n PROJEKTLEITER: \"Project manager\",\r\n PROJEKTLEITER_EINGABE: \"Please enter project manager\",\r\n PROJEKTSTAMMDATEN: \"Project master data\",\r\n PROJEKTZEITRAUM: \"Project-time\",\r\n SAMSTAG: \"Saturday\",\r\n SCHLIESSUNG: \"Closing\",\r\n SECHS_ZEICHEN_FORMAT: \"Format have to be 6 numbers\",\r\n SONNTAG: \"Sunday\",\r\n STARTDATUM: \"Date of Start\",\r\n STADT: \"City\",\r\n STADT_EINGEBEN: \"Please enter city\",\r\n STRASSE: \"Road\",\r\n STRASSE_EINGEBEN: \"Please enter road\",\r\n ZUKO_MODUL: \"Access-Control\",\r\n },\r\n PROJEKT_HELPER_TEXT_1:\r\n \"In this area you can set rights to the project module („navigation point project“).\",\r\n PROJEKT_HELPER_TEXT_TITLE_2: \"View people involved in the project.\",\r\n PROJEKT_HELPER_TEXT_2:\r\n \"In this area you can choose between „All“ and „My“, all the following points then refer to the selected option.\",\r\n PROJEKT_HELPER_TEXT_TITLE_3: \"View project roles\",\r\n PROJEKT_HELPER_TEXT_3:\r\n \"In this area you can choose between „My & Inherited“ and „My“, the following points relate to the selected option.\",\r\n PROJEKT_HELPER_TEXT_TITLE_3: \"View project configuration\",\r\n PROJEKT_HELPER_TEXT_3:\r\n \"Select „Yes“ if you want the role to be able to see the project configuration. If you choose „Yes“, you have another option so that the role can edit the project configurator.\",\r\n PROJEKT_HELPER_TEXT_TITLE_4: \"View billing configuration\",\r\n PROJEKT_HELPER_TEXT_4:\r\n \"Choose„Yes“ if you want the role to be able to see the billing configuration. If you choose „Yes“ , you have another option to allow the role to edit the billing configurator.\",\r\n PROJEKT_RECHTE: {\r\n ABRECHNUNG_KONFIGURATION_BETRACHTEN: \"View billing configurator\",\r\n ABRECHNUNG_KONFIGURATION_BEARBEITEN: \"Edit billing configurator\",\r\n ABTRANSPORT_ANMELDEN: \"Register evacuation\",\r\n ANLIEFERUNG_ANMELDEN: \"Register deliviery\",\r\n ABRECHNUNGSDETAILS_BETRACHTEN: \"View of billingdetails\",\r\n AKTUELLE_BESETZUNG_BETRACHTEN: \"View current cast\",\r\n ALLE_BAUSTELLENAUSWEISE_SPERREN_BEARBEITEN:\r\n \"Block all construction site passes\",\r\n ALLE_PROJEKTROLLEN_BETRACHTEN: \"View all project roles\",\r\n ALLE_TRANSPORTE_BETRACHTEN: \"View transports\",\r\n AUSSTATTUNG_KONFIGURATION_BETRACHTEN: \"View of equipment configuration\",\r\n AUSSTATTUNG_KONFIGURATION_BEARBEITEN: \"Edit of equipment configuration\",\r\n AUSWEISDESIGN_KONFIGURATION_BEARBEITEN:\r\n \"Edit Id card design configuration\",\r\n AUSWEISDESIGN_KONFIGURATION_BETRACHTEN:\r\n \"View Id card design configuration\",\r\n AUSWEISGUELTIGKEIT_KONFIGURATION_BEARBEITEN:\r\n \"Edit Id card validity configuration\",\r\n AUSWEISGUELTIGKEIT_KONFIGURATION_BETRACHTEN:\r\n \"View Id card validity configuration\",\r\n AUSWERTUNGEN_BETRACHTEN: \"View evaluations\",\r\n BAUSTELLENAUSWEIS_ENTSPERREN: \"Unlock construction site permits\",\r\n BAUSTELLENAUSWEIS_EINSTELLUNGEN_SETZEN:\r\n \"Set construction site settings\",\r\n BAUSTELLENAUSWEIS_ERSTELLEN_UND_DRUCKEN:\r\n \"Create & print construction site permit\",\r\n BAUSTELLENAUSWEIS_LOESCHEN: \"Delete construction site permits\",\r\n BAUSTELLENAUSWEISE_UEBERSICHT_BETRACHTEN: \"View construction site\",\r\n BAUSTELLENAUSWEIS_SPERREN: \"Lock construction site\",\r\n BERECHTIGUNGSGRUPPEN_KONFIGURATION_BEARBEITEN:\r\n \"Edit authorization groups configuration\",\r\n BERECHTIGUNGSGRUPPEN_KONFIGURATION_BETRACHTEN:\r\n \"View authorization groups configuration\",\r\n BESTIMMUNGSORT_KONFIGURATION_BEARBEITEN: \"Edit destination zone\",\r\n BESTIMMUNGSORT_KONFIGURATION_BETRACHTEN: \"View destination zone\",\r\n BILDVERIFIZIERUNG_BETRACHTEN: \"View image verification\",\r\n BUCHUNGEN_ARCHIVIEREN: \"Archive bookings\",\r\n BUCHUNGEN_BETRACHTEN: \"View bookings\",\r\n BUCHUNGEN_BEARBEITEN: \"Edit bookings\",\r\n BUCHUNGEN_ERSTELLEN: \"Add bookings\",\r\n BUCHUNGEN_DETAILLIERT_BETRACHTEN: \"Detailed view on bookings\",\r\n BUCHUNGEN_GENEHMIGEN_UND_STORNIEREN: \"Check & cancel bookings\",\r\n BUCHUNGSUNTERLAGEN_ARCHIVIEREN: \"Archive documents of bookings\",\r\n BUCHUNGSUNTERLAGEN_HOCHLADEN: \"Upload documents of bookings\",\r\n BUCHUNGSUNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Edit documents of booking configuratin\",\r\n BUCHUNGSUNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"View documents of booking configuratin\",\r\n BURG_KONFIGURATION_BEARBEITEN: \"Edit configuration of shipping castle\",\r\n BURG_KONFIGURATION_BETRACHTEN: \"View configuration of shipping castle\",\r\n CONTAINER_KONFIGURATION_BEARBEITEN: \"Edit configuration of shipping \",\r\n CONTAINER_KONFIGURATION_BETRACHTEN: \"View configuration of shipping\",\r\n CONTAINERBUCHUNGSUNTERLAGEN_ARCHIVIEREN:\r\n \"Delete of container booking document configuration\",\r\n CONTAINERBUCHUNGSUNTERLAGEN_HOCHLADEN:\r\n \"Update of container booking document configuration\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"View of container booking document configuration\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Edit of container booking document configuration\",\r\n CONTAIENRBURG_ADMIN_GRAFIK_BETRACHTEN:\r\n \"View graphical admin container castle\",\r\n CONTAINERBURG_BILD_BETRACHTEN: \"View container castle image\",\r\n DISPOSITIONEN_ABSCHLIESSEN: \"Close dispositions\",\r\n DISPOSITIONEN_BETRACHTEN: \"View dispositions\",\r\n EIGENE_PROJEKTROLLEN_BETRACHTEN: \"View own project roles\",\r\n EIGENE_UND_GEERBTE_PROJEKTROLLEN_BETRACHTEN:\r\n \"View own & inherit project roles\",\r\n EINSTELLUNGEN_BETRACHTEN: \"View settings\",\r\n EINSTELLUNGEN_BEARBEITEN: \"Edit settings\",\r\n EXPORT_KONFIGURATION_BEARBEITEN: \"Edit export configuration\",\r\n EXPORT_KONFIGURATION_BETRACHTEN: \"View export configuration\",\r\n FIRMEN_BEARBEITEN: \"Edit companies\",\r\n FIRMEN_DETAILLIERT_BETRACHTEN: \"Detailed view on companies\",\r\n FIRMEN_ERSTELLEN: \"Create companies\",\r\n FIRMEN_LOESCHEN: \"Delete companies\",\r\n FIRMENHIERARCHIE_BETRACHTEN: \"View company hierarchy\",\r\n FIRMEN_MIT_PERSONAL_BETRACHTEN: \"companies including the entire staff \",\r\n FIRMEN_UNTERLAGEN_ARCHIVIEREN: \"Archive company documents\",\r\n FIRMEN_UNTERLAGEN_HOCHLADEN: \"Upload company documents\",\r\n FIRMEN_UNTERLAGEN_PRUEFEN_UND_WIDERRUFEN:\r\n \"Check & uncheck company documents\",\r\n FIRMEN_UNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Edit company documents configuration\",\r\n FIRMEN_UNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"View company documents configuration\",\r\n FIRMEN_UNTERLAGEN_UEBERSICHT_BETRACHTEN: \"View company documents\",\r\n FIRMEN_UNTERLAGEN_WIEDERHERSTELLEN: \"Revert company documents\",\r\n FIRMEN_ZUTRITTSAUSWERTUNGEN_BETRACHTEN:\r\n \"View evalutions of companies access events\",\r\n KONFIGURATION_BETRACHTEN: \"View project configuration\",\r\n KONFIGURATION_BEARBEITEN: \"Edit project configuration\",\r\n NACHRICHTEN_BETRACHTEN: \"View message\",\r\n NACHRICHT_ERSTELLEN: \"Create message\",\r\n NACHRICHT_BEARBEITEN: \"Edit message\",\r\n NACHRICHT_ARCHIVIEREN: \"Archive message\",\r\n MINDESTLOHN_KONFIGURATION_BEARBEITEN: \"Edit minimum wage configuration\",\r\n MINDESTLOHN_KONFIGURATION_BETRACHTEN: \"View minimum wage configuration\",\r\n MINDESTLOHNERKLAERUNGEN_HOCHLADEN: \"Upload minimum wage \",\r\n MINDESTLOHNERKLAERUNGEN_PRUEFEN_UND_WIDERRUFEN:\r\n \"Check & uncheck minimum wage\",\r\n MINDESTLOHNERKLAERUNGEN_ARCHIVIEREN: \"Archieve minimum wage\",\r\n MINDESTLOHNERKLAERUNGEN_UEBERSICHT_BETRACHTEN: \"Edit minimum wage\",\r\n MINDESTLOHNERKLAERUNGEN_WIEDERHERSTELLEN: \"Revert minimum wage\",\r\n MODULANGABEN_KONFIGURATION_BEARBEITEN: \"Edit module data\",\r\n MODULANGABEN_KONFIGURATION_BETRACHTEN: \"View module data\",\r\n MODULUNTERLAGEN_BETRACHTEN: \"View module documents\",\r\n MODULUNTERLAGEN_KONFIGURATION_BEARBEITEN: \"Edit module documents\",\r\n MODULUNTERLAGEN_KONFIGURATION_BETRACHTEN: \"View module documents\",\r\n MODULVERANTWORTLICHER_KONFIGURATION_BEARBEITEN:\r\n \"Edit module responsible\",\r\n MODULVERANTWORTLICHER_KONFIGURATION_BETRACHTEN:\r\n \"Consider module responsible\",\r\n MODUL_DATEIEN_ARCHIVIEREN: \"Archive modul files\",\r\n MODUL_DATEIEN_BETRACHTEN: \"View modul files\",\r\n MODUL_DATEIEN_HOCHLADEN: \"Upload modul files\",\r\n MODUL_DATEIEN_KONFIGURATION_BEARBEITEN:\r\n \"Edit configuration of modul files\",\r\n MODUL_DATEIEN_KONFIGURATION_BETRACHTEN:\r\n \"View configuration of modul files\",\r\n PERSONAL_BEARBEITEN: \"Edit employee\",\r\n PERSONAL_DETAILLIERT_BETRACHTEN: \"Conside employee in detail\",\r\n PERSONAL_ERSTELLEN: \"Create employees\",\r\n PERSONAL_LOESCHEN: \"Delete employee\",\r\n PERSONAL_UNTERLAGEN_ARCHIVIEREN: \"Archieve employee document\",\r\n PERSONAL_UNTERLAGEN_HOCHLADEN: \"Upload employee document\",\r\n PERSONAL_UNTERLAGEN_KONFIGURATION_BEARBEITEN:\r\n \"Edit employee documents configuration\",\r\n PERSONAL_UNTERLAGEN_KONFIGURATION_BETRACHTEN:\r\n \"View employee documents configuration\",\r\n PERSONAL_UNTERLAGEN_PRUEFEN_UND_WIDERRUFEN:\r\n \"Check & uncheck employee documents\",\r\n PERSONAL_UNTERLAGEN_UEBERSICHT_BETRACHTEN: \"View employee documents\",\r\n PERSONAL_UNTERLAGEN_WIEDERHERSTELLEN: \"Revert employee documents\",\r\n PERSONAL_ZUTRITTSAUSWERTUNGEN_BETRACHTEN: \"View personal access events\",\r\n PROJEKTBETEILIGTE_BEARBEITEN: \"Edit participant persons\",\r\n PROJEKTBETEILIGTE_BETRACHTEN: \"View participant person\",\r\n PROJEKTBETEILIGTEN_BETRACHTEN: \"View participipant persons\",\r\n PROJEKTBETEILIGTE_DETAILLIERT_BETRACHTEN:\r\n \"Detailed view on project participants persons\",\r\n PROJEKTBETEILIGTE_EINLADEN: \"Invite project participants\",\r\n PROJEKTBETEILIGTE_HINZUFUEGEN: \"Add project participants persons\",\r\n PROJEKTBETEILIGTE_LOESCHEN: \"Delete project participants persons\",\r\n PROJEKTBETEILIGTE_ROLLENZUWEISUNG_AENDERN:\r\n \"Change role assignment of project participants persons\",\r\n PROJEKTROLLEN_BETRACHTEN: \"View project roles\",\r\n PROJEKTROLLEN_DETAILLIERT_BETRACHTEN: \"Detailed view on project roles\",\r\n PROJEKTBETEILIGTE_DETALLIERT_BETRACHTEN:\r\n \"Detailed view on project participants\",\r\n PROJEKTROLLEN_ERSTELLEN: \"Create project roles\",\r\n PROJEKTROLLEN_BEARBEITEN: \"Edit project roles\",\r\n PROJEKTROLLEN_BETRACHTEN: \"View all project roles\",\r\n PROJEKTROLLEN_DETAILLIERT_BETRACHTEN: \"Detailed view on project roles\",\r\n PROJEKTROLLEN_LOESCHEN: \"Delete project roles\",\r\n RESSOURCEN_KONFIGURATION_BETRACHTEN: \"View resources\",\r\n RESSOURCEN_KONFIGURATION_BEARBEITEN: \"Edit resources\",\r\n TRANSPORT_ALLE_BETRACHTEN: \"View transports\",\r\n TRANSPORT_BEARBEITEN: \"Edit transport\",\r\n TRANSPORT_DETAILLIERT_BETRACHTEN: \"View detailed transports\",\r\n TRANSPORT_GENEHMIGEN_UND_STORNIEREN: \"Approve and cancel transports\",\r\n UNTERLAGEN_BETRACHTEN: \"Documents view\",\r\n UNTERLAGEN_KONFIGURATION_BEARBEITEN: \"Edit configuration of documents\",\r\n UNTERLAGEN_KONFIGURATION_BETRACHTEN: \"View document configuration\",\r\n ZEITSLOTS_KONFIGURATION_BETRACHTEN: \"View time slot configuration\",\r\n ZEITSLOTS_KONFIGURATION_BEARBEITEN: \"Edit time slot configuration\",\r\n ZEITZONEN_KONFIGURATION_BETRACHTEN: \"View time zone configuration\",\r\n ZEITZONEN_KONFIGURATION_BEARBEITEN: \"Edit time zone configuration\",\r\n ZIELORT_KONFIGURATION_BEARBEITEN: \"Edit destination\",\r\n ZIELORT_KONFIGURATION_BETRACHTEN: \"View destination\",\r\n ZUKO_SERVER_KONFIGURATION_BEARBEITEN: \"Edit zuko server\",\r\n ZUKO_SERVER_KONFIGURATION_BETRACHTEN: \"View zuko server\",\r\n ZUTRITTSEREIGNISSE_SYNCHRONISIEREN_BEARBEITEN: \"Sync access events\",\r\n ZUTRITTSPUNKTE_KONFIGURATION_BEARBEITEN:\r\n \"Edit access point configuration\",\r\n ZUTRITTSPUNKTE_KONFIGURATION_BETRACHTEN:\r\n \"View access point configuration\",\r\n ZUTRITTSPUNKTE_BETRACHTEN: \"View entry points\",\r\n },\r\n STAMMDATEN: \"Master Data\",\r\n STAMMDATEN_ERFOLGREICH_AKTUALISIERT: \"Master data updated succesfully\",\r\n STAMMDATEN_HELPER_TEXT_1:\r\n \"Note that the project role name does not yet exist.\",\r\n STAMMDATEN_HELPER_TEXT_2:\r\n \"The role to be created inherits from this role. This means the role to be created has fewer rights than the parent project role.\",\r\n STAMMDATEN_HELPER_TEXT_3:\r\n \"If you have selected a system role, you can only view it and not update it.\",\r\n UEBERSICHTSSEITEN: \"Overview pages\",\r\n UNTERNEHMEN: \"Company\",\r\n VORNAME: \"First name\",\r\n WARNUNG_PARENT_PROJEKTROLLE_BEFUELLEN:\r\n \"Do you really want the project role to inherit from the specified project role? Then choose Yes.\",\r\n WEITEREN_BETEILIGTEN_EINLADEN: \"Invite another project participant\",\r\n ZUKO_HELPER_TEXT_1:\r\n \"In this area you can set rights to the access control module („access control navigation point“).\",\r\n ZUKO_HELPER_TEXT_TITLE_2: \"Consider companies with associated staff\",\r\n ZUKO_HELPER_TEXT_2:\r\n \"In this area you can choose between „All“ and „My“, all of the following points relate to this selection.\",\r\n ZUKO_HELPER_TEXT_UEBERSICHTSSEITEN:\r\n \"Overview pages with my companies including staff\",\r\n ZUKO_HELPER_TEXT_UEBERSICHTSSEITEN_1:\r\n \"In this area you can set the rights for all overview pages, no detailed view of employees or companies.\",\r\n ZUKO_HELPER_TEXT_UEBERSICHTSSEITEN_2:\r\n \"Displayed values depend on „My“ or „All“ companies with associated personnel.\",\r\n ZUKO_HELPER_TEXT_EINSTELLUNGEN:\r\n \"This is the configuration of the access control module and the assignment of these rights should be checked carefully.\",\r\n ZUTRITTSKONTROLLE: \"Access control\",\r\n};\r\n\r\nexport default TRANSLATIONS_EN_PROJEKT;\r\n","export const TRANSLATION_EN_DATENSCHUTZ = {\r\n BETROFFENRECHT: {\r\n TEIL1_LISTE1_ANFANG: \"A \",\r\n TEIL1_LISTE1_ENDE:\r\n \"among other things about the categories of\" +\r\n \"data processed, the processing purposes, the storage period\" +\r\n \"as well as any recipients, in accordance with Art. 15 DSGVO and § 34 BDSG.\",\r\n TEIL1_LISTE1_TEILFETT: \"Right of access to information\",\r\n TEIL1_LISTE2_ANFANG: \"A \",\r\n TEIL1_LISTE2_ENDE:\r\n \"incorrect or incomplete data, in accordance with Art. 16 and 17 DSGVO and § 35 BDSG.\",\r\n TEIL1_LISTE2_TEILFETT: \"Right to rectification or deletion \",\r\n TEIL1_LISTE3_ANFANG:\r\n \"Under the conditions of Art. 18 DSGVO or § 35 para. 1 p. 2 BDSG a\",\r\n TEIL1_LISTE3_TEILFETT: \"Right to restriction of processing \",\r\n TEIL1_LISTE4_ANFANG: \"A \",\r\n TEIL1_LISTE4_ENDE:\r\n \"against processing pursuant to Art. 21\" +\r\n \"Para.1 DSGVO, insofar as the data processing was carried out on the basis of a\" +\r\n \"legitimate interest.\",\r\n TEIL1_LISTE4_TEILFETT: \"Right of objection\",\r\n TEIL1_LISTE5_ANFANG: \"A \",\r\n TEIL1_LISTE5_ENDE:\r\n \"a given consent with\" +\r\n \"Effect for the future in accordance with Art. 7 (3) DSGVO.\",\r\n TEIL1_LISTE5_TEILFETT: \"Right of withdrawal \",\r\n TEIL1_LISTE6_ANFANG: \"A \",\r\n TEIL1_LISTE6_ENDE:\r\n \"in a common format in accordance with Art. 20 DSGVO.\",\r\n TEIL1_LISTE6_TEILFETT: \"Right to data portability \",\r\n TEIL1_LISTE7_ANFANG: \" You have according to Art. 22 DSGVO a \",\r\n TEIL1_LISTE7_ENDE:\r\n \"that has legal effect against you or affects you in a similar way\" +\r\n \"significantly affects in a similar way. This also includes\" +\r\n \"profiling within the meaning of Art. 4 No. 4 DSGVO.\",\r\n TEIL1_LISTE7_TEILFETT:\r\n \"right not to be subject to a decision based solely on\" +\r\n \"automated processing based decision.\",\r\n TEIL1_LISTE8_ANFANG: \"You also have the right to complain to a \",\r\n TEIL1_LISTE8_ENDE:\r\n \"about the processing of your \" +\r\n \"personal data by us, in particular in the \" +\r\n \"Member State of your habitual residence, of your \" +\r\n \"place of work or of the alleged infringement.\",\r\n TEIL1_LISTE8_TEILFETT: \"Data protection supervisory authority \",\r\n TEIL1_TEXT:\r\n \"As a data subject, you have the following rights against us \" +\r\n \"regarding your personal data. You have:\",\r\n TEIL1_UEBERSCHRIFT: \"4.1 Your rights as a data subject\",\r\n TEIL2_TEXT:\r\n \"If you assert your rights under the DSGVO and the BDSG against us \" +\r\n \"the data you transmit to us in the process, we will use this data for the \" +\r\n \"process in order to fulfill your claim. Subsequently we store \" +\r\n \"the data you send to us and the data we send to you in the \" +\r\n \"countermove transmitted data for the purpose of documentation until the expiry of the \" +\r\n \"the statute of limitations under regulatory law (3 years). The \" +\r\n \"The legal basis for the processing and storage of the data is Art.. \" +\r\n \"6 para. 1 p. 1 letter f) DSGVO (Legitimate interest in the \" +\r\n \"data processing). The legitimate interest arises from our \" +\r\n \"obligation to comply with your request and the need to be able to exonerate ourselves in a \" +\r\n \"possible fine proceedings by proving that we have \" +\r\n \"that we have properly complied with your request. The \" +\r\n \"processing of your data on the basis of our legitimate interest \" +\r\n \"you can object at any time under the conditions of Art. 21 DSGVO \" +\r\n \"To do so, please use the contact details provided in the imprint \" +\r\n \"However, we would like to point out that the processing of your \" +\r\n \"data to prove compliance with the data subject rights is mandatory in the \" +\r\n \"in the sense of Article 21 (1) of the GDPR, as other means of proof \" +\r\n \"do not exist or are not equally suitable.\",\r\n TEIL2_UEBERSCHRIFTT: \"4.2 Procedure\",\r\n UEBERSCHRIFT: \"4. AFFECTED RIGHTS\",\r\n },\r\n DATENSCHUTZMAßNAHMEN: {\r\n TEXT:\r\n \"We secure our website and other systems - and thus also your \" +\r\n \"data - by technical and organizational measures against loss, \" +\r\n \"destruction, access, modification or distribution by unauthorized parties \" +\r\n \"In particular, your personal data will be encrypted \" +\r\n \"when transmitted through the Internet. We make use of the \" +\r\n \"coding system TLS (Transport Layer Security). However, the \" +\r\n \"transmission of information over the Internet is never completely secure, \" +\r\n \"which is why we cannot guarantee the security of the \" +\r\n \"data transmitted by our website.\",\r\n UEBERSCHRIFT: \"5. DATA PROTECTION MEASURES\",\r\n },\r\n DATENSCHUTZ_ALLGEMEINES: {\r\n INFORMATION: \"I. Privacy information\",\r\n TEXT:\r\n \"Compliance with data protection laws is for cpc baulogistik GmbH \" +\r\n \"not only a legal obligation, but also an important \" +\r\n \"trust factor. With the following data protection provisions \" +\r\n \"to inform you transparently about the nature, scope and purpose of the \" +\r\n \"collected and processed personal data within this \" +\r\n \"website and your rights. \",\r\n UEBERSCHRIFT: \"1. GENERAL\",\r\n },\r\n DATENSCHUTZ_BEAUFTRAGTER: {\r\n TEIL0: \"The responsible data protection officer is\",\r\n TEIL1: \"Süddeutsche Datenschutzgesellschaft GmbH\",\r\n TEIL2: \"Contact person\",\r\n UEBERSCHRIFT: \"3. DATA PROTECTION OFFICER\",\r\n },\r\n DATENSCHUTZ_VERANTWORTLICHKEIT: {\r\n TEIL1: \"The cpc baulogistik GmbH, Hauptstraße 65, 12159 Berlin, Germany (hereinafter referred to as 'We') operates the web portal.\",\r\n TEIL2: \", responsible party according to Article 4(7) of the EU General Data Protection Regulation (GDPR). If you have any questions, you can contact\",\r\n TEIL3: \".\",\r\n UEBERSCHRIFT: \"2. RESPONSIBILITY FOR DATA PROCESSING\",\r\n },\r\n DATENVERARBEITUNG: {\r\n TEIL1_TEXT:\r\n \"We process your personal data insofar as it is necessary for the \" +\r\n \"establishment, content or amendment of a \" +\r\n \"contractual relationship between us and you.\" +\r\n \"(inventory data). Inventory data can be in particular: Name, title, \" +\r\n \"contact data (postal address, telephone, e-mail address), date of birth, etc. \" +\r\n \"Furthermore, we process your usage data. Usage data is data that \" +\r\n \"through your behavior when using our web offer and our \" +\r\n \"services, in particular your IP address, the beginning and end of your \" +\r\n \"visit to our Website and information about what content you \" +\r\n \"accessed on our Website. The aforementioned data is collected \" +\r\n \"either directly from you (e.g., by visiting the Website) \" +\r\n \"or, insofar as this is permissible under data protection laws, from third parties \" +\r\n \"or from publicly accessible sources (e.g. commercial register, \" +\r\n \"register of associations, press, media, internet).\",\r\n TEIL1_UEBERSCHRIFT: \"6.1 Sources and categories of personal data\",\r\n TEIL2_TEXT:\r\n \"All information we receive from you or about you is generally processed \" +\r\n \"on servers within the European Union. The transmission of your data to or \" +\r\n \"processing of your data in third countries occurs without your explicit \" +\r\n \"consent only if it is legally provided or permitted, and if the third country \" +\r\n \"ensures an adequate level of data protection, or if there are contractual obligations \" +\r\n \"through the so-called Standard Contractual Clauses of the EU. Regarding data transfers \" +\r\n \"to the USA, the European Commission has issued an adequacy decision known as the EU-U.S. \" +\r\n \"Data Privacy Framework, ensuring an adequate level of protection for the transfer of \" +\r\n \"personal data by companies participating in the EU-US Data Privacy Framework. When we use \" +\r\n \"services that transmit personal data to the USA, it is indicated by the respective service \" +\r\n \"whether the company is certified under the EU-U.S. Data Privacy Framework.\",\r\n TEIL2_UEBERSCHRIFT:\r\n \"6.2 Data transfer to third countries outside the EU\",\r\n TEIL3_TEXT:\r\n \"We never disclose your personal data to third parties without authorization \" +\r\n \" from you. However, we may disclose your data to third parties, \" +\r\n \"if you have consented to the data transfer, if the transfer is necessary \" +\r\n \"to fulfill our legal obligations, or if we are authorized or \" +\r\n \"obligated to disclose the data due to legal provisions or governmental or \" +\r\n \"judicial orders. This may include providing information for purposes of law enforcement, \" +\r\n \"emergency response, or enforcement of intellectual property rights. Additionally, \" +\r\n \"we may transmit your data to external service providers who process data on our behalf \" +\r\n \"and under our instructions (data processors) to simplify or relieve our own \" +\r\n \"data processing. Each data processor is obligated by a contract in accordance with Art. 28 GDPR. This means, in particular, that the \" +\r\n \"data processor must provide sufficient guarantees that appropriate technical and organizational \" +\r\n \"measures are implemented, ensuring that the processing is in line with \" +\r\n \"the requirements of the GDPR and the protection of your rights as \" +\r\n \"the data subject is ensured. Despite engaging data processors, we remain the responsible entity for the processing of your \" +\r\n \"personal data in accordance with \" +\r\n \"data protection laws.\",\r\n TEIL3_UEBERSCHRIFT: \"6.3 Disclosure of data, order processing\",\r\n TEIL4_TEXT:\r\n \"As a matter of principle, we use the data only for the purpose for which the data \" +\r\n \"was collected from you. We may process the data for another purpose \" +\r\n \"unless this other purpose is incompatible with the original \" +\r\n \"purpose is incompatible (Art. 5 para. 1 lit. c) DSGVO).\",\r\n TEIL4_UEBERSCHRIFT: \"6.4 Purpose of data processing\",\r\n TEIL5_TEXT:\r\n \"Unless otherwise specified in detail, we store data collected from \" +\r\n \"you only as long as it is necessary for the respective purpose,\" +\r\n \"unless there are legal obligations to retain data \" +\r\n \"e.g. from commercial law or tax law.\",\r\n TEIL5_UEBERSCHRIFT: \"6.5 Storage duration\",\r\n UEBERSCHRIFT: \"6. MODALITIES OF DATA PROCESSING\",\r\n },\r\n DIENST_DRITTER: {\r\n TEIL1_TEIL1_TEXT1:\r\n \"We use the service 'Visual Studios' provided by Microsoft Ireland Operations Limited, One \" +\r\n \"Microsoft Place, South County Business Park, Leopardstown, Dublin 18 D18 P521, Ireland. Microsoft \" +\r\n \"Ireland Operations Limited is a subsidiary of Microsoft Corporation, One Microsoft Way, Redmond, WA 98052-6399, USA.\",\r\n TEIL1_TEIL1_TEXT2:\r\n \"It is not excluded that Microsoft may transfer data to the USA. Microsoft Corporation complies with the requirements \" +\r\n \"of the 'EU-U.S. Data Privacy Framework.' The Privacy Framework agreement regulates the protection of personal data \" +\r\n \"transferred from a member state of the European Union to the USA. It ensures that the transferred data is subject to a \" +\r\n \"level of data protection comparable to that of the European Union. You can access the list of certified companies here:\",\r\n TEIL1_TEIL1_TEXT3:\r\n \"For more information on how user data is handled, please refer to Microsoft's privacy policy:\",\r\n TEIL1_TEIL1_UEBERSCHRIFT: \"8.1.1 Microsoft Visual Studios\",\r\n TEIL1_TEIL2_TEIL1_TEXT1:\r\n \"In order to ensure the reliability and stability of our web portal \" +\r\n \"we use the service Microsoft Insights of the company\" +\r\n \"Microsoft Corporation, One Microsoft Way, Redmond, WA 98052-6399, USA. \" +\r\n \"Through this, data is transmitted to the provider and is usually \" +\r\n \"stored there, e.g. your IP address, product and version information \" +\r\n \"about the browser and operating system used (so-called user agent), \" +\r\n \"the Internet page from which your access took place (so-called referer), \" +\r\n \"the date and time of the request and possibly your Internet service provider.\" +\r\n \"The legal basis for the use of the service is Art. 6 para. 1 p. 1 \" +\r\n \"Letter f) DSGVO (legitimate interest in data processing). \" +\r\n \"We pursue with the service the interest to constantly maintain our web portal \" +\r\n \"and to keep it available. The processing of your data on \" +\r\n \"basis of our legitimate interest, you can at any time under the \" +\r\n \"conditions of Art. 21 DSGVO. To do so, please use \" +\r\n \"please use the contact details provided in the imprint.\",\r\n TEIL1_TEIL2_TEIL1_TEXT2:\r\n \"More information about the \" +\r\n \"handling of user data can be found in the privacy policy \" +\r\n \"Microsoft:\",\r\n TEIL1_TEIL2_TEIL1_TEXT3: \"and\",\r\n TEIL1_TEIL2_TEIL1_TEXT4: \"Status of the data protection regulations:\",\r\n TEIL1_TEIL2_TEIL1_TEXT5: \"Source\",\r\n TEIL1_TEIL2_TEIL1_UEBERSCHRIFT: \"8.2.1 Jira Issue Collector\",\r\n TEIL1_TEIL2_UEBERSCHRIFT: \"8.2 Cloud applications\",\r\n TEIL1_TEXT1:\r\n \"Our website is based on a so-called website builder. This is a service that allows us, \" +\r\n \"without deep knowledge of website programming, to offer a website by simplifying the \" +\r\n \"creation and maintenance of the website through a cloud-based user interface.\",\r\n TEIL1_TEXT2:\r\n \"The term 'cloud-based' means that the maintenance interface is provided to us by \" +\r\n \"a third-party on their servers. When using this application, personal data is generated \" +\r\n \"at the third-party, which they can process on our behalf according to our and their privacy \" +\r\n \"policies. At the same time, the provider typically provides the infrastructure needed to operate the website.\",\r\n TEIL1_TEXT3:\r\n \"Every time the application is accessed, general information from your browser is automatically \" +\r\n \"transmitted to the server (so-called server log files). For more information on this, \" +\r\n \"see above under 'Server Log Files'.\",\r\n TEIL1_TEXT2:\r\n \"The term 'cloud-based' means that the maintenance interface is provided to us by a third party on \" +\r\n \"their servers. When using this application, personal data is generated at the third party's end, \" +\r\n \"which they can process on our behalf according to our and their privacy policies. At the same time, \" +\r\n \"the provider typically supplies the infrastructure needed to operate the website.\",\r\n TEIL1_TEXT3:\r\n \"Every time the application is accessed, general information is automatically transmitted from your \" +\r\n \"browser to the server (so-called server log files). For more information, see above under 'Server Log Files.'\",\r\n TEIL1_TEXT4:\r\n \"The legal basis for the use of cloud-based website builders with hosting services and the associated \" +\r\n \"processing of your data is Art. 6(1) sentence 1 letter f) GDPR (Legitimate interest in data processing), \" +\r\n \"unless otherwise stated for the respective service. The legitimate interest arises from our need for a \" +\r\n \"technically flawless presentation of our website, without requiring in-depth knowledge of website \" +\r\n \"programming and IT system maintenance. You can object to the processing of your data based on our \" +\r\n \"legitimate interest at any time under the conditions of Art. 21 GDPR. Please use the contact details \" +\r\n \"provided in the imprint for this purpose.\",\r\n TEIL1_TEXT5: \"We use:\",\r\n TEIL1_UEBERSCHRIFT: \"8.1 Website Builders\",\r\n TEIL1:\r\n \"For the simplification of our data processing and to expand the functionality of our website, \" +\r\n \"we utilize services/resources from third parties, such as plugins, external content, software, \" +\r\n \"or other external service providers (services). In this process, personal data may be transmitted \" +\r\n \"to the service provider. To protect your data, we have contractually obligated the service providers, \" +\r\n \"if necessary, in accordance with Art. 28 GDPR, to process your data only according to our instructions.\",\r\n TEIL2:\r\n \"We explicitly point out that we are regularly only responsible for the data collection and transmission \" +\r\n \"by the service in terms of GDPR, but not for any subsequent processing by the respective service provider.\",\r\n TEIL2_TEXT1:\r\n \"Our website makes use of cloud-based applications. Cloud-based applications include, for example, webshops \" +\r\n \"provided by a third party on their servers for us. When you use these applications, personal data is generated \" +\r\n \"at the third-party provider, which they can process on our behalf according to our and their privacy policies.\",\r\n TEIL2_TEXT2:\r\n \"Upon each use of the application, general information is automatically transmitted from your browser to \" +\r\n \"the server (so-called server log files). For more information on this, please see above under 'Server Log Files'.\",\r\n TEIL2_TEXT3:\r\n \"The legal basis for the use of cloud applications and the transmission of your data to them is Art. 6 (1) sentence \" +\r\n \"1 letter f) GDPR (Legitimate interest in data processing), unless otherwise stated for the respective service. \" +\r\n \"The legitimate interest arises from our need for a technically flawless and fast presentation of our website \" +\r\n \"and the relief of our IT infrastructure. You can object to the processing of your data based on our legitimate \" +\r\n \"interest at any time under the conditions of Art. 21 GDPR. Please use the contact details provided \" +\r\n \"in the imprint for this purpose.\",\r\n TEIL2_TEXT4: \"We use:\",\r\n TEIL2_TEIL1_TEXT1:\r\n \"Our website uses the service 'Jira Issue Collector' provided by Atlassian Pty Ltd., Level 6, 341 George \" +\r\n \"Street, Sydney NSW 2000, Australia.\",\r\n TEIL2_TEIL1_TEXT2:\r\n \"Jira Issue Collector is used to generate custom forms for submitting issues without users having to \" +\r\n \"leave the page to report the issue.\",\r\n TEIL2_TEIL1_TEXT3:\r\n \"Through this service, we can collect information about issues easily, helping us to operate our website \" +\r\n \"steadily and improve user-friendliness.\",\r\n TEIL2_TEIL1_TEXT4:\r\n \"We have entered into a data processing agreement with the provider. To ensure an adequate level of \" +\r\n \"data protection during the transmission of data to Australia, we have concluded the EU Standard \" +\r\n \"Contractual Clauses with Atlassian.\",\r\n TEIL2_TEIL1_TEXT5:\r\n \"The legal basis for using Jira Issue Collector is Art. 6(1)(f) GDPR (Legitimate interest in data \" +\r\n \"processing). The legitimate interest arises from our need for a technically flawless and secure website, \" +\r\n \"and the ability for users to easily submit issues to us. You can object to the processing of your data \" +\r\n \"based on our legitimate interest at any time under the conditions of Art. 21 GDPR. Please use the contact \" +\r\n \"details provided in the imprint for this purpose.\",\r\n TEIL2_TEIL1_TEXT6:\r\n \"For more information on handling user data, please refer to Atlassian's privacy policy: \",\r\n TEIL3: \"In detail, we use the following services:\",\r\n TEIL3_TEXT1:\r\n \"We use certain services that record data from website visitors and provide it to us for analysis. We use \" +\r\n \"this data to improve our website, services, and offerings based on usage. In particular, the following \" +\r\n \"information about visitor behavior may be collected: your IP address, product and version information \" +\r\n \"about the browser and operating system used (so-called user agent), the website from which your access \" +\r\n \"occurred (so-called referer), date and time of the request, and possibly your Internet service provider, \" +\r\n \"approximate origin (country and city), language, clicks on content, and viewing duration.\",\r\n TEIL3_TEXT2:\r\n \"The legal basis for using analytics tools is Art. 6(1)(a) GDPR (Consent of the data subject). We ask for \" +\r\n \"your consent to use the service through a displayed notice text when you first visit the website. You can \" +\r\n \"withdraw your consent at any time with effect for the future by calling up the cookie banner again and \" +\r\n \"changing the settings you made.\",\r\n TEIL3_UEBERSCHRIFT: \"8.3 Analytics Tools\",\r\n TEIL4_TEXT1:\r\n \"Our website uses the service 'Application Insights' provided by Microsoft Ireland Operations \" +\r\n \"Limited, One Microsoft Place, South County Business Park, Leopardstown, Dublin 18 D18 P521, \" +\r\n \"Ireland. Microsoft Ireland Operations Limited is a subsidiary of Microsoft Corporation, \" +\r\n \"One Microsoft Way, Redmond, WA 98052-6399, USA.\",\r\n TEIL4_TEXT2:\r\n \"The service allows us to analyze user behavior on the website. Data such as IP address, visit \" +\r\n \"frequency, location, and time of the request are collected and transmitted to Microsoft servers in the \" +\r\n \"USA. We use the anonymization function, whereby all collected data is anonymized immediately after \" +\r\n \"collection.\",\r\n TEIL4_TEXT3:\r\n \"Microsoft Corporation complies with the requirements of the 'EU-U.S. Data Privacy Framework.' \" +\r\n \"The Privacy Framework Agreement regulates the protection of personal data transferred from a \" +\r\n \"member state of the European Union to the USA. It ensures that the transferred data is subject to \" +\r\n \"a level of data protection comparable to that of the European Union. You can access the list of certified \" +\r\n \"companies here\",\r\n TEIL4_TEXT4:\r\n \"When using the service, cookies are stored on the end device of the website visitor. We have \" +\r\n \"entered into a data processing agreement with the provider.\",\r\n TEIL4_TEXT5:\r\n \"For more information on privacy at Microsoft, please visit:\",\r\n TEIL4_TEXT6: \"Privacy Policy Status: \",\r\n TEIL4_UEBERSCHRIFT: \"8.3.1 Microsoft Application Insights\",\r\n UEBERSCHRIFT: \"8. THIRD PARTY SERVICES\",\r\n },\r\n NUTZUNGBEDINGUNGEN_UEBERSCHRITFT: \"General terms of use\",\r\n UEBERSCHRITFT: \"Privacy policy\",\r\n VERARBEITUNGSTAETIGKEITEN: {\r\n TABELLE_HEADER_COLUMN1: \"Name\",\r\n TABELLE_HEADER_COLUMN2: \"Explanation\",\r\n TABELLE_HEADER_COLUMN3: \"Origin (Domain)\",\r\n TABELLE_HEADER_COLUMN4: \"Validity/ storage period\",\r\n TABELLE_HEADER_COLUMN5: \"Third party access\",\r\n TABELLE_ROW1_COLUMN1: \"Ai_session\",\r\n TABELLE_ROW1_COLUMN2:\r\n \"This cookie is used to recognize how many sessions of user activity \" +\r\n \"have involved certain pages and features of the app.\",\r\n TABELLE_ROW1_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_ROW1_COLUMN4: \"30 minutes\",\r\n TABELLE_ROW1_COLUMN5: \"Yes, Microsoft\",\r\n TABELLE_ROW2_COLUMN1: \"Ai_user\",\r\n TABELLE_ROW2_COLUMN2:\r\n \"This cookie is used to determine how many people have used the app and its \" +\r\n \"features. Users are counted with anonymous IDs. \",\r\n TABELLE_ROW2_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_ROW2_COLUMN4: \"1 Year\",\r\n TABELLE_ROW2_COLUMN5: \"Yes, Microsoft\",\r\n TABELLE_ROW3_COLUMN1: \"ARRAffinity- SameSite\",\r\n TABELLE_ROW3_COLUMN2:\r\n \"This cookie is used to control the efficient loading of the website \" +\r\n \"and ensure that all user requests made during each browser session \" +\r\n \"are directed to the same server.\",\r\n TABELLE_ROW3_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_ROW3_COLUMN4: \"Session end\",\r\n TABELLE_ROW3_COLUMN5: \"Yes, Microsoft\",\r\n TABELLE_ROW4_COLUMN1: \"Token\",\r\n TABELLE_ROW4_COLUMN2:\r\n \"These cookies serve the security of the website and the protection of the user \" +\r\n \"against CSRF (Cross-Site-Request-Forgery) attacks by appending a unique 'token' to \" +\r\n \"each request from the client to the server, ensuring that the request comes from the client. \" +\r\n \"The individual cookies listed here are set during the execution of the specific action \" +\r\n \"(e.g., newsletter registration, profile changes, button clicks in the form) \" +\r\n \"and serve the CSRF protection of the respective specific action.\",\r\n TABELLE_ROW4_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_ROW4_COLUMN4: \"Session end\",\r\n TABELLE_ROW4_COLUMN5: \"No\",\r\n TABELLE_NEW_ROW4_COLUMN1: \"ARRAffinity\",\r\n TABELLE_NEW_ROW4_COLUMN2:\r\n \"This cookie is used to distribute traffic on the website across multiple \" +\r\n \"servers to optimize response times.\",\r\n TABELLE_NEW_ROW4_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_NEW_ROW4_COLUMN4: \"Session end\",\r\n TABELLE_NEW_ROW4_COLUMN5: \"Yes, Microsoft\",\r\n TEIL1_TEXT:\r\n \"Upon each call to a web portal and upon each retrieval of data from \" +\r\n \"a server, general information is automatically transmitted to the \" +\r\n \"providing server. This data transmission occurs automatically and is a fundamental part of communication \" +\r\n \"between devices on the internet. The data transmitted by default includes, among other things, the following information: your IP address, \" +\r\n \"product and version information about the browser and \" +\r\n \"the operating system used (so-called user agent), the webpage from which \" +\r\n \"your access took place (so-called referer), date and time of the request \" +\r\n \"(so-called timestamp). Additionally, the HTTP status and the transmitted \" +\r\n \"amount of data are captured within this request. These pieces of information \" +\r\n \"are logged by the server, stored in a table, and there \" +\r\n \"temporarily stored (so-called server log files). Through the analysis \" +\r\n \"of these log files, we can identify errors on the website and \" +\r\n \"subsequently rectify them, determine the website's load at specific \" +\r\n \"times, and make adjustments or improvements based on that, as well as ensure the server's security \" +\r\n \"by being able to trace from which IP address attacks on \" +\r\n \"our server were carried out. Your IP address is only stored for the \" +\r\n \"duration of your use of the website and immediately deleted or partially obscured by shortening thereafter. \" +\r\n \"The remaining data is stored for a limited period (usually \" +\r\n \"7 days). The legal basis for the use of \" +\r\n \"server log files is Art. 6 para. 1 sentence 1 letter f) GDPR \" +\r\n \"(Legitimate interest in data processing). The legitimate interest \" +\r\n \"arises from the necessity for the operation and maintenance of our website, as explained above. \" +\r\n \"You can object to the processing of your data based on our legitimate \" +\r\n \"interest at any time under the conditions of Art. \" +\r\n \"21 GDPR. Please use the contact details mentioned in the imprint for this purpose. However, we \" +\r\n \"would like to point out in advance that the processing of your data in server log files is mandatory \" +\r\n \"in the sense of Art. 21 para. 1 GDPR, as the website otherwise \" +\r\n \"cannot be operated at all.\",\r\n TEIL1_UEBERSCHRIFT: \"7.1 Server log files\",\r\n TEIL2_TEIL1_TEXT1: \"What are cookies\",\r\n TEIL2_TEIL1_TEXT10:\r\n \"In detail, our web portal sets the following cookies:\",\r\n TEIL2_TEIL1_TEXT11: \"Legal basis\",\r\n TEIL2_TEIL1_TEXT12:\r\n \"The legal basis for the use of cookies that are strictly necessary for the functioning \" +\r\n \"of the website (e.g., shopping cart cookie, session cookie) is Art. 6(1) sentence 1 letter f) \" +\r\n \"GDPR (Legitimate interest in data processing) and §25(2) No. 2 TTDSG (unconditional necessity for \" +\r\n \"providing a telemedia service expressly requested by the user). The legitimate interest arises from our need \" +\r\n \"to offer you a functioning website. Cookies are necessary because they are an integral \" +\r\n \"part of current internet technology, and without cookies, many functions of current websites would not be available. \" +\r\n \"Therefore, we need cookies to provide you with the website upon your request. You can object to the processing of your data based on \" +\r\n \"our legitimate interest at any time under the conditions of Art. 21 GDPR. \" +\r\n \"Please use the contact information provided in the imprint for this purpose. However, we would like to point out that the processing of your data in certain cookies \" +\r\n \"is mandatory within the meaning of Art. 21(1) GDPR, as the website cannot be operated otherwise, and we do not have the technical ability \" +\r\n \"to prevent the setting of cookies on certain individual devices. However, you may be able to do this in your browser settings. \" +\r\n \"For more information on this, please refer to your browser's instructions. \" +\r\n \"The legal basis for the use of cookies that are not strictly necessary for the functioning of the website is Art. 6(1) sentence 1 letter a) \" +\r\n \"GDPR (Consent of the data subject). We ask for your consent to the use of non-essential cookies when you first visit the website via a displayed information text. \" +\r\n \"You can revoke your consent at any time with effect for the future by accessing the cookie banner again and changing the settings you made.\",\r\n TEIL2_TEIL1_TEXT2:\r\n \"In a very simplified manner, a cookie is a small text file that stores data \" +\r\n \"about visited websites. Cookies can be used in various ways. For example, \" +\r\n \"they can store a kind of 'user profile,' including things like your preferred \" +\r\n \"language and other page settings required by our website to offer you \" +\r\n \"certain services. The cookie file is stored on your device and can also help \" +\r\n \"recognize you when you revisit our web portal.\",\r\n TEIL2_TEIL1_TEXT3:\r\n \"Under certain circumstances, through cookies, we may also obtain information \" +\r\n \"about your preferred activities on our website and tailor our website to \" +\r\n \"your individual interests or even increase the speed of navigation on our website.\",\r\n TEIL2_TEIL1_TEXT4: \"How to avoid cookies\",\r\n TEIL2_TEIL1_TEXT5:\r\n \"You can delete the cookies in the security settings of your browser \" +\r\n \"manually at any time.\",\r\n TEIL2_TEIL1_TEXT6:\r\n \"However, you can also prevent the storage of cookies by a \" +\r\n \"corresponding setting of your browser from the outset. \" +\r\n \"Please note, however, that you may then not be able to use all \" +\r\n \"functions of our website or that there may be errors in the presentation \" +\r\n \"and use of the website may occur.\",\r\n TEIL2_TEIL1_TEXT7: \"Third party cookies\",\r\n TEIL2_TEIL1_TEXT8:\r\n \"It is possible that third-party providers, with the help of which we design our site \" +\r\n \"design and operate, in particular through so-called plugins (see \" +\r\n \"below in the section „Third-party services“), independently store their own cookies on \" +\r\n \"your terminal device. If you only want to accept our own cookies, but do not \" +\r\n \"do not want to accept cookies from these third parties, you can disable the \" +\r\n \"storage of these cookies through the appropriate browser setting \" +\r\n \"„Block third-party cookies” .\",\r\n TEIL2_TEIL1_TEXT9: \"Which cookies are usedWhich cookies are used\",\r\n TEIL2_TEIL1_UEBERSCHRIFT: \"7.2.1 Cookies\",\r\n TEIL2_TEIL2_TEXT1: \"What is the web storage\",\r\n TEIL2_TEIL2_TEXT2:\r\n \"Web storage is a technique for web applications that stores data in \" +\r\n \"in a web browser. Web storage can be simplified \" +\r\n \"as a further development of cookies, but differs \" +\r\n \"from these, however, in some points.\",\r\n TEIL2_TEIL2_TEXT3:\r\n \"Unlike cookies, which can be accessed by both server and client, \" +\r\n \"web storage is completely controlled by the client. This \" +\r\n \"means that data is not transferred to the server with every call to the website. \" +\r\n \"Access takes place exclusively locally via scripts \" +\r\n \"on the website. In concrete terms, this means that third party access to \" +\r\n \"the stored information via the website is not possible. \" +\r\n \"Only you and we can access the locally stored data. \",\r\n TEIL2_TEIL2_TEXT4: \"Legal basis\",\r\n TEIL2_TEIL2_TEXT5:\r\n \"The legal basis for the use of web storage, which is strictly necessary for the \" +\r\n \"functionality of the website, is Article 6(1) sentence 1 letter f) GDPR (Legitimate interest in data processing). \" +\r\n \"and §25(2) No. 2 TTDSG (unconditional necessity for providing a telemedia service expressly requested by the user). \" +\r\n \"The legitimate interest arises from our need to provide you with a functioning website. Web storage is necessary for this because it is an integral part of current internet technology, and without it, many functions of current websites would not be available. Therefore, we need web storage to be able to provide you with the website upon your request. You can object to the processing of your data based on our legitimate interest at any time under the conditions of Article 21 GDPR. Please use the contact information provided in the legal notice for this purpose. However, we would like to point out that the processing of your data in web storage may be mandatory under Article 21(1) GDPR, as otherwise the website cannot be operated at all, and we do not have the technical ability to prevent usage on specific individual devices. You may be able to do this yourself in your browser. For more information on this, please refer to your browser's instructions.\" +\r\n \"The legal basis for the use of web storage, which is not \" +\r\n \"strictly necessary for the functionality of the website, is Article 6(1) sentence 1 letter a) GDPR (Consent of the data subject). \" +\r\n \"We ask for your consent when you first visit the website through a displayed notification text. You can revoke your consent at any time with effect for the future by calling up the cookie banner again and changing the settings you made.\",\r\n TEIL2_TEIL2_UEBERSCHRIFT: \"7.2.2 Webstorage\",\r\n TEIL2_TEXT:\r\n \"To enhance user-friendliness on our website, we use so-called 'cookies' or the 'Web Storage' of your browser.\",\r\n TEIL2_UEBERSCHRIFT: \"7.2 Cookies and web storage\",\r\n TEIL3_TEXT1:\r\n \"Our website gives you the opportunity to register for additional, \" +\r\n \"personalized features of the site. Registration is only possible for users who have been pre-approved by cpc baulogistik \" +\r\n \"GmbH. During registration, personal data (e.g., email address and \" +\r\n \"name) is collected and processed for the purpose of providing personalized services.\",\r\n TEIL3_TEXT2:\r\n \"We require the following information from you to create an account:\",\r\n TEIL3_TEXT3: \"First name, last name, email address, company.\",\r\n TEIL3_TEXT4:\r\n \"The legal basis for processing mandatory data is Art. 6 para. 1 lit. \" +\r\n \"b) GDPR (data processing for the performance of a contract and for pre-contractual \" +\r\n \"measures). You also have the option to change or delete the data provided during the registration process at any time.\",\r\n TEIL3_UEBERSCHRIFT: \"7.5 Registration Area\",\r\n TEIL4_TEXT1:\r\n \"Our web portal offers the possibilities to manage access control for \" +\r\n \"construction sites. This is done exclusively within the framework of order processing for the respective client.\",\r\n TEIL4_TEXT2:\r\n \"The legal basis for the transmission of those data (surname, \" +\r\n \"first name, nationality, birthday, data on the \" +\r\n \"residence permit, data on employment relationship and other if necessary \" +\r\n \"personal data) which are required for the construction site access management \" +\r\n \"are necessary, is Art. 6 para. 1 p. 1 letter b) DSGVO \" +\r\n \"(data processing for the performance of a contract). \",\r\n TEIL4_TEXT3:\r\n \"The data transmitted for access management will be stored for the duration \" +\r\n \"of the construction site and then deleted, unless there are \" +\r\n \"legal obligations to retain data prevent deletion, e.g \" +\r\n \"from commercial law, tax law, the Employee Posting Act, \" +\r\n \"the Minimum Wage Act, or the German Federal Employment Act.\",\r\n TEIL4_UEBERSCHRIFT: \"7.4 Access control\",\r\n TEXT:\r\n \"In the following, we would like to show you as transparently as possible , \" +\r\n \"which data we process from you on which occasion, on which basis \" +\r\n \"and for what purpose.\",\r\n UEBERSCHRIFT: \"7. INDIVIDUAL PROCESSING ACTIVITIES\",\r\n TEIL5_TEXT1:\r\n \"Our portal offers the possibility to register transports directly with us. This is done \" +\r\n \"exclusively within the scope of order processing for the respective client.\",\r\n TEIL5_TEXT2: \"The following data is processed as part of the form:\",\r\n TEIL5_TEXT3:\r\n \"First name, last name, company, email, phone number, starting location, destination, license plate, \" +\r\n \"information about the transport, freight, and loading.\",\r\n TEIL5_TEXT4:\r\n \"The legal basis for the use of the data transmitted to us through the transport registration is Article 6(1) \" +\r\n \"sentence 1 letter b) GDPR (data processing for the fulfillment of a contract).\",\r\n TEIL5_TEXT5:\r\n \"The data transmitted to us during the transport registration will be stored for the duration of the construction site \" +\r\n \"and deleted afterwards, unless legal retention obligations prevent deletion, e.g., under commercial law, tax law, \" +\r\n \"the Posted Workers Act, the Minimum Wage Act, or the Act to Combat Undeclared Work.\",\r\n TEIL5_UEBERSCHRIFTEN: \"7.3 Transport Registration\",\r\n TEIL6_TEXT1:\r\n \"Our website is hosted on servers provided by external providers to ensure the efficient and secure provision \" +\r\n \"of the website.\",\r\n TEIL6_TEXT2:\r\n \"Upon each visit to the website, general information is automatically transmitted from your browser to \" +\r\n \"the server (so-called server log files). For more information, see above under \",\r\n TEIL6_TEXT3: \"“Server Log Files”.\",\r\n TEIL6_TEXT4:\r\n \"The legal basis for the use of hosting services and the associated processing of your data is Article 6(1) \" +\r\n \"sentence 1 letter f) GDPR (legitimate interest in data processing), unless otherwise stated for the respective service. \" +\r\n \"The legitimate interest arises from our need for a technically flawless presentation of our website, without requiring \" +\r\n \"in-depth knowledge of website programming and IT system maintenance. You can object to the processing of your data \" +\r\n \"based on our legitimate interest at any time under the conditions of Article 21 GDPR. Please use the contact details \" +\r\n \"provided in the imprint for this purpose.\",\r\n TEIL6_UEBERSCHRIFTEN: \"7.6 Hosting Services\",\r\n },\r\n};\r\nexport default TRANSLATION_EN_DATENSCHUTZ;\r\n","export const TRANSLATION_DE_DATENSCHUTZ = {\r\n BETROFFENRECHT: {\r\n TEIL1_LISTE1_ANFANG: \"Ein \",\r\n TEIL1_LISTE1_ENDE:\r\n \"unter anderem über die Kategorien der \" +\r\n \"verarbeiteten Daten, der Verarbeitungszwecke, die Speicherdauer \" +\r\n \"sowie etwaige Empfänger, gemäß Art. 15 DSGVO und § 34 BDSG. \",\r\n TEIL1_LISTE1_TEILFETT: \"Recht auf Auskunft \",\r\n TEIL1_LISTE2_ANFANG: \"Ein \",\r\n TEIL1_LISTE2_ENDE:\r\n \"unrichtiger bzw. unvollständiger Daten, gemäß Art. 16 und 17 DSGVO und § 35 BDSG.\",\r\n TEIL1_LISTE2_TEILFETT: \"Recht auf Berichtigung oder Löschung \",\r\n TEIL1_LISTE3_ANFANG:\r\n \"Unter den Voraussetzungen des Art. 18 DSGVO oder § 35 Abs. 1 S. 2 BDSG ein\",\r\n TEIL1_LISTE3_TEILFETT: \"Recht auf Einschränkung der Verarbeitung \",\r\n TEIL1_LISTE4_ANFANG: \"Ein \",\r\n TEIL1_LISTE4_ENDE:\r\n \"gegen die Verarbeitung gemäß Art. 21 \" +\r\n \"Abs.1 DSGVO, soweit die Datenverarbeitung aufgrund eines \" +\r\n \"berechtigten Interesses erfolgte.\",\r\n TEIL1_LISTE4_TEILFETT: \"Recht auf Widerspruch\",\r\n TEIL1_LISTE5_ANFANG: \"Ein \",\r\n TEIL1_LISTE5_ENDE:\r\n \"einer abgegebenen Einwilligung mit \" +\r\n \"Wirkung für die Zukunft gemäß Art. 7 Abs. 3 DSGVO.\",\r\n TEIL1_LISTE5_TEILFETT: \"Recht auf Widerruf \",\r\n TEIL1_LISTE6_ANFANG: \"Ein \",\r\n TEIL1_LISTE6_ENDE: \"in einem gängigen Format gemäß Art. 20 DSGVO.\",\r\n TEIL1_LISTE6_TEILFETT: \"Recht auf Datenübertragbarkeit \",\r\n TEIL1_LISTE7_ANFANG: \" Sie haben gemäß Art. 22 DSGVO ein \",\r\n TEIL1_LISTE7_ENDE:\r\n \"die Ihnen gegenüber rechtliche Wirkung entfaltet oder Sie in \" +\r\n \"ähnlicher Weise erheblich beeinträchtigt. Dies umfasst auch \" +\r\n \"Profiling im Sinne des Art. 4 Nr. 4 DSGVO.\",\r\n TEIL1_LISTE7_TEILFETT:\r\n \"Recht darauf, nicht einer ausschließlich auf einer \" +\r\n \"automatisierten Verarbeitung beruhenden Entscheidung unterworfen \" +\r\n \"zu werden, \",\r\n TEIL1_LISTE8_ANFANG:\r\n \"Sie haben zudem das Recht, sich gemäß Art. 77 DSGVO bei einer \",\r\n TEIL1_LISTE8_ENDE:\r\n \"über die Verarbeitung Ihrer \" +\r\n \"personenbezogenen Daten durch uns zu beschweren, insbesondere in dem \" +\r\n \"Mitgliedstaat Ihres gewöhnlichen Aufenthaltsorts, Ihres \" +\r\n \"Arbeitsplatzes oder des Orts des mutmaßlichen Verstoßes.\",\r\n TEIL1_LISTE8_TEILFETT: \"Datenschutz-Aufsichtsbehörde \",\r\n TEIL1_TEXT:\r\n \"Als betroffene Person haben Sie uns gegenüber folgende Rechte \" +\r\n \"hinsichtlich Ihrer personenbezogenen Daten. Sie haben:\",\r\n TEIL1_UEBERSCHRIFT: \"4.1 Ihre Rechte als betroffene Person\",\r\n TEIL2_TEXT:\r\n \"Wenn Sie Ihre Rechte nach der DSGVO und dem BDSG uns gegenüber geltend \" +\r\n \"machen, werden wir die von Ihnen dabei an uns übermittelten Daten \" +\r\n \"verarbeiten, um Ihren Anspruch zu erfüllen. Im Anschluss speichern wir \" +\r\n \"die von Ihnen an uns übermittelten Daten und die von uns an Sie im \" +\r\n \"Gegenzug übermittelten Daten zum Zwecke der Dokumentation bis zum Ablauf \" +\r\n \"der ordnungswidrigkeitenrechtlichen Verjährungsfrist (3 Jahre). Die \" +\r\n \"Rechtsgrundlage für die Verarbeitung und Speicherung der Daten ist Art. \" +\r\n \"6 Abs. 1 S. 1 Buchstabe f) DSGVO (Berechtigtes Interesse an der \" +\r\n \"Datenverarbeitung). Das berechtigte Interesse ergibt sich aus unserer \" +\r\n \"Verpflichtung Ihrem Anliegen nachzukommen und dem Bedarf, uns in einem \" +\r\n \"möglichen Bußgeldverfahren entlasten zu können, indem wir nachweisen, \" +\r\n \"dass wir Ihrem Anliegen ordnungsgemäß nachgekommen sind. Der \" +\r\n \"Verarbeitung Ihrer Daten auf Grundlage unseres berechtigten Interesses \" +\r\n \"können Sie jederzeit unter den Voraussetzungen des Art. 21 DSGVO \" +\r\n \"widersprechen. Nutzen Sie hierfür bitte die im Impressum genannten \" +\r\n \"Kontaktdaten. Wir weisen aber darauf hin, dass die Verarbeitung Ihrer \" +\r\n \"Daten zum Nachweis der Einhaltung der Betroffenenrechte zwingend im \" +\r\n \"Sinne des Art. 21 Abs. 1 DSGVO ist, da andere Nachweismöglichkeiten \" +\r\n \"nicht bestehen bzw. nicht gleichermaßen geeignet sind.\",\r\n TEIL2_UEBERSCHRIFTT: \"4.2 Verfahren\",\r\n UEBERSCHRIFT: \"4. BETROFFENENRECHTE\",\r\n },\r\n DATENSCHUTZMAßNAHMEN: {\r\n TEXT:\r\n \"Wir sichern unser Webseite und sonstigen Systeme – und damit auch Ihre \" +\r\n \"Daten – durch technische und organisatorische Maßnahmen gegen Verlust, \" +\r\n \"Zerstörung, Zugriff, Veränderung oder Verbreitung durch unbefugte \" +\r\n \"Personen ab. Insbesondere werden Ihre persönlichen Daten verschlüsselt \" +\r\n \"durch das Internet übertragen. Wir bedienen uns dabei des \" +\r\n \"Codierungssystems TLS (Transport Layer Security). Jedoch ist die \" +\r\n \"Übertragung von Informationen über das Internet nie vollständig sicher, \" +\r\n \"weshalb wir die Sicherheit, der von unserer Webseite übermittelten \" +\r\n \"Daten nicht zu 100% garantieren können.\",\r\n UEBERSCHRIFT: \"5. DATENSCHUTZMAßNAHMEN\",\r\n },\r\n DATENSCHUTZ_ALLGEMEINES: {\r\n INFORMATION: \"I. Informationen zum Datenschutz\",\r\n TEXT:\r\n \"Die Einhaltung der Datenschutzgesetze ist für die cpc baulogistik GmbH \" +\r\n \"nicht nur gesetzliche Pflicht, sondern auch ein wichtiger \" +\r\n \"Vertrauensfaktor. Mit den nachfolgenden Datenschutzbestimmungen möchten \" +\r\n \"wir Sie deshalb transparent über Art, Umfang und Zweck der von Ihnen \" +\r\n \"erhobenen und verarbeiteten personenbezogenen Daten innerhalb dieses \" +\r\n \"Internetauftritts sowie Ihre Rechte informieren. \",\r\n UEBERSCHRIFT: \"1. ALLGEMEINES\",\r\n },\r\n DATENSCHUTZ_BEAUFTRAGTER: {\r\n TEIL0: \"Verantwortlicher Datenschutzbeauftragter ist:\",\r\n TEIL1: \"Süddeutsche Datenschutzgesellschaft GmbH\",\r\n TEIL2: \"Ansprechpartner\",\r\n UEBERSCHRIFT: \"3. DATENSCHUTZBEAUFTRAGTER\",\r\n },\r\n DATENSCHUTZ_VERANTWORTLICHKEIT: {\r\n TEIL1:\r\n \"Die cpc baulogistik GmbH, Hauptstraße 65, 12159 Berlin, Deutschland (Im \" +\r\n \"Folgenden: „Wir“) ist als betreiber des Webportals\",\r\n TEIL2:\r\n \", Verantwortlicher gem. Art. 4 Nr. 7 der EU-Datenschutz-Grundverordnung \" +\r\n \"(DSGVO). Bei Fragen können Sie sich an\",\r\n TEIL3: \"wenden.\",\r\n UEBERSCHRIFT: \"2. VERANTWORTLICHKEIT FÜR DIE DATENVERARBEITUNG\",\r\n },\r\n DATENVERARBEITUNG: {\r\n TEIL1_TEXT:\r\n \"Wir verarbeiten Ihre personenbezogenen Daten, soweit sie für die \" +\r\n \"Begründung, inhaltliche Ausgestaltung oder Änderung eines \" +\r\n \"Vertragsverhältnisses zwischen uns und Ihnen erforderlich sind \" +\r\n \"(Bestandsdaten). Bestandsdaten können insbesondere sein: Name, Anrede, \" +\r\n \"Kontaktdaten (Postadresse, Telefon, E-Mail-Adresse), Geburtsdatum usw. \" +\r\n \"Ferner verarbeiten wir Ihre Nutzungsdaten. Nutzungsdaten sind Daten, die \" +\r\n \"durch Ihr Verhalten bei der Nutzung unseres Webangebots und unserer \" +\r\n \"Dienste anfallen, insbesondere Ihre IP-Adresse, Beginn und Ende Ihres \" +\r\n \"Besuchs auf unserer Webseite und Informationen darüber, welche Inhalte \" +\r\n \"Sie auf unserer Webseite abgerufen haben. Die genannten Daten erheben \" +\r\n \"wir entweder direkt bei Ihnen (z.B. durch den Besuch der Webseite) \" +\r\n \"oder, soweit dies nach den Datenschutzgesetzen zulässig ist, bei Dritten \" +\r\n \"bzw. aus öffentlich zugänglichen Quellen (z.B. Handels- und \" +\r\n \"Vereinsregister, Presse, Medien, Internet).\",\r\n TEIL1_UEBERSCHRIFT:\r\n \"6.1 Quellen und Kategorien von personenbezogenen Daten\",\r\n TEIL2_TEXT:\r\n \"Alle Informationen, die wir von Ihnen oder über Sie erhalten, werden \" +\r\n \"grundsätzlich auf Servern innerhalb der Europäischen Union verarbeitet. \" +\r\n \"Eine Übermittlung Ihrer Daten an oder eine Verarbeitung Ihrer Daten in \" +\r\n \"Drittstaaten erfolgt ohne Ihre ausdrückliche Einwilligung lediglich, \" +\r\n \"sofern dies gesetzlich vorgesehen oder gestattet ist, in dem Drittstaat \" +\r\n \"ein hierfür angemessenes Datenschutzniveau sichergestellt ist oder \" +\r\n \"vertragliche Verpflichtungen durch sogenannte \" +\r\n \"Standarddatenschutzklauseln der EU bestehen. Betreffend Datenübertragungen \" +\r\n \"in die USA hat die europäische Kommission einen Angemessenheitsbeschluss \" +\r\n \"namens EU-U.S. Data Privacy Framework (deutsch: EU-US-Datenschutzrahmen) \" +\r\n \"erlassen, durch den ein angemessenes Schutzniveau für den Datentransfer \" +\r\n \"personenbezogener Daten durch Unternehmen gewährleistet wird, die am EU-USA \" +\r\n \"Datenschutzrahmen teilnehmen. Soweit wir Dienste verwenden, die personenbezogene Daten in die\" +\r\n \"USA übermitteln, steht bei dem jeweiligen Dienst, ob das Unternehmen durch den EU-U.S. \" +\r\n \"Datenschutzrahmen zertifiziert ist.\",\r\n TEIL2_UEBERSCHRIFT:\r\n \"6.2 Datenübermittlung an Drittstaaten außerhalb der EU\",\r\n TEIL3_TEXT:\r\n \"Wir geben Ihre personenbezogenen Daten niemals unberechtigt an Dritte \" +\r\n \" weiter. Wir können Ihre Daten aber insbesondere an Dritte weitergeben, \" +\r\n \"wenn Sie in die Datenweitergabe eingewilligt haben, wenn die Weitergabe \" +\r\n \"zur Erfüllung unserer rechtlichen Verpflichtungen notwendig ist oder \" +\r\n \"wenn wir aufgrund gesetzlicher Bestimmungen oder behördlicher oder \" +\r\n \"gerichtlicher Anordnungen zu einer Datenweitergabe berechtigt oder \" +\r\n \"verpflichtet sind. Dabei kann es sich insbesondere um die \" +\r\n \"Auskunftserteilung für Zwecke der Strafverfolgung, zur Gefahrenabwehr \" +\r\n \"oder zur Durchsetzung geistiger Eigentumsrechte handeln. Unter Umständen übermitteln \" +\r\n \"wir Ihre Daten außerdem an externe Dienstleister, die Daten in unserem Auftrag \" +\r\n \"und nach unserer Weisung verarbeiten (Auftragsverarbeiter), um unsere eigene \" +\r\n \"Datenverarbeitung zu vereinfachen oder zu entlasten. Jeder Auftragsverarbeiter wird durch einen \" +\r\n \"Vertrag nach Maßgabe des Art. 28 DSGVO verpflichtet. Das heißt insbesondere, dass der \" +\r\n \"Auftragsverarbeiter hinreichend Garantien dafür zu bieten hat, dass durch ihn geeignete technische und organisatorische \" +\r\n \"Maßnahmen so durchgeführt werden, dass die Verarbeitung im Einklang mit \" +\r\n \"den Anforderungen der DSGVO erfolgt und der Schutz Ihrer Rechte als \" +\r\n \"betroffene Person gewährleistet ist. Trotz Beauftragung von \" +\r\n \"Auftragsverarbeitenden bleiben wir für die Verarbeitung Ihrer \" +\r\n \"personenbezogenen Daten die verantwortliche Stelle im Sinne der \" +\r\n \"Datenschutzgesetze.\",\r\n TEIL3_UEBERSCHRIFT: \"6.3 Weitergabe von Daten, Auftragsverarbeitung\",\r\n TEIL4_TEXT:\r\n \"Wir nutzen die Daten grundsätzlich nur zu dem Zweck, zu dem die Daten \" +\r\n \"von Ihnen erhoben wurden. Wir können die Daten zu einem anderen Zweck \" +\r\n \"weiterverarbeiten, wenn nicht dieser andere Zweck mit dem ursprünglichen \" +\r\n \"Zweck unvereinbar ist (Art. 5 Abs. 1 Lit. c) DSGVO).\",\r\n TEIL4_UEBERSCHRIFT: \"6.4 Zweck der Datenverarbeitung\",\r\n TEIL5_TEXT:\r\n \"Soweit im Einzelnen nichts anderes angegeben ist, speichern wir von \" +\r\n \"Ihnen erhobene Daten nur so lange, wie es für den jeweiligen Zweck \" +\r\n \"erforderlich ist, es sei denn es stehen gesetzliche \" +\r\n \"Aufbewahrungspflichten der Löschung entgegen, z.B. aus dem Handelsrecht \" +\r\n \"oder dem Steuerrecht.\",\r\n TEIL5_UEBERSCHRIFT: \"6.5 Speicherdauer\",\r\n UEBERSCHRIFT: \"6. MODALITÄTEN DER DATENVERARBEITUNG\",\r\n },\r\n DIENST_DRITTER: {\r\n TEIL1_TEIL1_TEXT1:\r\n \"Wir nutzen den Dienst „Visual Studios“ der Firma Microsoft Ireland Operations Limited, One \" +\r\n \"Microsoft Place, South County Business Park, Leopardstown, Dublin 18 D18 P521, Irland. Microsoft \" +\r\n \"Ireland Operations Limited ist eine Tochtergesellschaft der Firma Microsoft Corporation \" +\r\n \"(„Microsoft“), One Microsoft Way, Redmond, WA 98052-6399, USA.\",\r\n TEIL1_TEIL1_TEXT2:\r\n \"Es ist nicht ausgeschlossen, dass Microsoft Daten in die USA überträgt. Die Firma Microsoft \" +\r\n \"Corporation erfüllt die Anforderungen des „EU-U.S. Data Privacy Frameworks“ (zu Deutsch: EU-US-\" +\r\n \"Datenschutzrahmen). Das Privacy-Framework-Abkommen regelt den Schutz personenbezogener \" +\r\n \"Daten, die aus einem Mitgliedsstaat der Europäischen Union in die USA übertragen werden. Es stellt \" +\r\n \"sicher, dass die übertragenen Daten dort ebenfalls einem der Europäischen Union vergleichbaren \" +\r\n \"Datenschutzniveau unterliegen. Die Liste zertifizierter Unternehmen können Sie hier abrufen:\",\r\n TEIL1_TEIL1_TEXT3:\r\n \"Mehr Informationen zum Umgang mit Nutzerdaten finden Sie in der Datenschutzerklärung von \" +\r\n \"Microsoft:\",\r\n TEIL1_TEIL1_UEBERSCHRIFT: \"8.1.1 Microsoft Visual Studios\",\r\n TEIL1_TEIL2_TEIL1_TEXT1:\r\n \"Um die Zuverlässigkeit und Stabilität unseres Webportals zu \" +\r\n \"gewährleisten, nutzen wir den Dienst Microsoft Insights der Firma \" +\r\n \"Microsoft Corporation, One Microsoft Way, Redmond, WA 98052-6399, USA. \" +\r\n \"Hierdurch werden Daten an den Anbieter übermittelt und dort in der Regel \" +\r\n \"gespeichert, z.B. Ihre IP-Adresse, Produkt- und Versionsinformationen \" +\r\n \"über den verwendeten Browser und das Betriebssystem (sog. user agent), \" +\r\n \"die Internetseite von welcher Ihr Zugriff stattfand (sog. Referer), \" +\r\n \"Datum und Uhrzeit der Anfrage und u.U. Ihr Internet-Service-Provider. \" +\r\n \"Die Rechtsgrundlage für die Nutzung des Dienstes ist Art. 6 Abs. 1 S. 1 \" +\r\n \"Buchstabe f) DSGVO (Berechtigtes Interesse an der Datenverarbeitung). \" +\r\n \"Wir verfolgen mit dem Dienst das Interesse, unser Webportal konstant zu \" +\r\n \"warten und verfügbar zu halten. Der Verarbeitung Ihrer Daten auf \" +\r\n \"Grundlage unseres berechtigten Interesses können Sie jederzeit unter den \" +\r\n \"Voraussetzungen des Art. 21 DSGVO widersprechen. Nutzen Sie hierfür \" +\r\n \"bitte die im Impressum genannten Kontaktdaten.\",\r\n TEIL1_TEIL2_TEIL1_TEXT2:\r\n \"Mehr Informationen zum \" +\r\n \"Umgang mit personenbezogenen Nutzungsdaten finden Sie in der Datenschutzerklärung von \" +\r\n \"Microsoft:\",\r\n TEIL1_TEIL2_TEIL1_TEXT3: \"und\",\r\n TEIL1_TEIL2_TEIL1_TEXT4: \"Stand der Datenschutzbestimmungen:\",\r\n TEIL1_TEIL2_TEIL1_TEXT5: \"Quelle\",\r\n TEIL1_TEIL2_TEIL1_UEBERSCHRIFT: \"8.2.1 Jira Issue Collector\",\r\n TEIL1_TEIL2_UEBERSCHRIFT: \"8.2 Cloud-Anwendungen\",\r\n TEIL1_TEXT1:\r\n \"Unsere Webseite basiert auf einem sogenannten Website-Baukasten. Dies ist ein Service, bei dem \" +\r\n \"uns ohne tiefere Kenntnisse von Website-Programmierung ermöglicht wird, eine Webseite \" +\r\n \"anzubieten, indem die Erstellung und Wartung der Webseite über eine cloudbasierte \" +\r\n \"Benutzeroberfläche vereinfacht wird.\",\r\n TEIL1_TEXT2:\r\n \"Der Begriff „cloudbasiert“ bedeutet, dass uns die Wartungsoberfläche von einem Drittanbieter auf \" +\r\n \"dessen Servern für uns bereitgestellt wird. Bei der Nutzung dieser Anwendung fallen bei dem \" +\r\n \"Drittanbieter persönliche Daten an, die dieser in unserem Auftrag nach unseren und seinen \" +\r\n \"Datenschutzbestimmungen verarbeiten kann. Gleichzeitig stellt der Anbieter in der Regel die \" +\r\n \"Infrastruktur bereit, die zum Betrieb der Webseite benötigt wird.\",\r\n TEIL1_TEXT3:\r\n \"Bei jedem Aufruf der Anwendung werden allgemeine Informationen von Ihrem Browser automatisch \" +\r\n \"an den Server übermittelt (sog. Server-Log-Dateien). Nähere Informationen hierzu siehe oben unter \" +\r\n \"„Server-Log-Dateien“.\",\r\n TEIL1_TEXT4:\r\n \"Die Rechtsgrundlage für die Nutzung von cloudbasierten Website-Baukästen samt Hosting-Dienstleistung \" +\r\n \"und die damit verbundene Verarbeitung Ihrer Daten ist Art. 6 Abs. 1 S. 1 Buchstabe f) \" +\r\n \"DSGVO (Berechtigtes Interesse an der Datenverarbeitung), soweit bei dem jeweiligen Dienst nichts \" +\r\n \"anderes angegeben ist. Das berechtigte Interesse ergibt sich aus unserem Bedarf an einer technisch \" +\r\n \"einwandfreien Darstellung unserer Webseite, ohne dass wir dafür vertiefte Kenntnisse der \" +\r\n \"Programmierung von Webseiten und Wartung von IT-Systemen benötigen. Der Verarbeitung Ihrer \" +\r\n \"Daten auf Grundlage unseres berechtigten Interesses können Sie jederzeit unter den \" +\r\n \"Voraussetzungen des Art. 21 DSGVO widersprechen. Nutzen Sie hierfür bitte die im Impressum \" +\r\n \"genannten Kontaktdaten.\",\r\n TEIL1_TEXT5: \"Wir verwenden:\",\r\n TEIL1_UEBERSCHRIFT: \"8.1 Website-Baukästen\",\r\n TEIL1:\r\n \"Wir nutzen, zur Vereinfachung unserer Datenverarbeitung und um den Funktionsumfang unserer \" +\r\n \"Webseite zu erweitern, Dienstleistungen/Ressourcen von Dritten, beispielsweise Plugins, externe \" +\r\n \"Inhalte, Software oder sonstige externe Dienstleister (Dienste). Dabei werden möglicherweise auch \" +\r\n \"personenbezogene Daten an den Diensteanbieter übermittelt. Um Ihre Daten zu schützen, haben wir \" +\r\n \"die Diensteanbieter erforderlichenfalls gem. Art. 28 DSGVO vertraglich verpflichtet, Ihre Daten nur \" +\r\n \"nach unserer Anweisung zu verarbeiten.\",\r\n TEIL2:\r\n \"Wir weisen ausdrücklich darauf hin, dass wir regelmäßig nur für die Datenerhebung und \" +\r\n \"Übermittlung durch den Dienst verantwortlich im Sinne der DSGVO sind, nicht aber für eine eventuell \" +\r\n \"später erfolgende Verarbeitung durch den jeweiligen Diensteanbieter.\",\r\n TEIL2_TEXT1:\r\n \"Unsere Webseite bedient sich cloudbasierter Anwendungen. Unter cloudbasierten Anwendungen \" +\r\n \"sind zum Beispiel Webshops zu verstehen, die von einem Drittanbieter auf dessen Servern für uns \" +\r\n \"bereitgestellt werden. Bei der Nutzung dieser Anwendungen durch Sie fallen bei dem Drittanbieter \" +\r\n \"persönliche Daten an, die dieser in unserem Auftrag nach unseren und seinen \" +\r\n \"Datenschutzbestimmungen verarbeiten kann.\",\r\n TEIL2_TEXT2:\r\n \"Bei jedem Aufruf der Anwendung werden allgemeine Informationen von Ihrem Browser automatisch \" +\r\n \"an den Server übermittelt (sog. Server-Log-Dateien). Nähere Informationen hierzu siehe oben unter \" +\r\n \"„Server-Log-Dateien“.\",\r\n TEIL2_TEXT3:\r\n \"Die Rechtsgrundlage für die Nutzung von Cloudanwendungen und die Übermittlung Ihrer Daten an \" +\r\n \"diese ist Art. 6 Abs. 1 S. 1 Buchstabe f) DSGVO (Berechtigtes Interesse an der Datenverarbeitung), \" +\r\n \"soweit bei dem jeweiligen Dienst nichts anderes angegeben ist. Das berechtigte Interesse ergibt sich \" +\r\n \"aus unserem Bedarf an einer technisch einwandfreien und schnellen Darstellung unserer Webseite \" +\r\n \"und der Entlastung unserer IT-Infrastruktur. Der Verarbeitung Ihrer Daten auf Grundlage unseres \" +\r\n \"berechtigten Interesses können Sie jederzeit unter den Voraussetzungen des Art. 21 DSGVO \" +\r\n \"widersprechen. Nutzen Sie hierfür bitte die im Impressum genannten Kontaktdaten.\",\r\n TEIL2_TEXT4: \"Wir verwenden:\",\r\n TEIL2_TEIL1_TEXT1:\r\n \"Unsere Webseite nutzt den Dienst „Jira Issue Collector“ der Atlassian. Pty Ltd., Level 6, 341 George \" +\r\n \"Street, Sydney NSW 2000, Australien.\",\r\n TEIL2_TEIL1_TEXT2:\r\n \"Jira Issue Collector dient dazu, benutzerdefinierte Formulare zum Einreichen von Problemen zu \" +\r\n \"generieren, ohne dass Nutzer für die Problemmeldung die Seite verlassen müssen.\",\r\n TEIL2_TEIL1_TEXT3:\r\n \"Durch den Dienst können wir Informationen zu Problemen auf einfachem Weg sammeln, was uns \" +\r\n \"hilft, unsere Webseite stabil zu betreiben und die Nutzerfreundlichkeit zu verbessern.\",\r\n TEIL2_TEIL1_TEXT4:\r\n \"Wir haben mit dem Anbieter einen Auftragsverarbeitungsvertrag abgeschlossen. Um ein \" +\r\n \"angemessenes Datenschutzniveau bei der Übermittlung von Daten nach Australien zu gewährleisten, \" +\r\n \"haben wir mit Atlassian die EU-Standardvertragsklauseln abgeschlossen.\",\r\n TEIL2_TEIL1_TEXT5:\r\n \"Die Rechtsgrundlage für die Nutzung von Jira Issue Collector ist Art. 6 Abs. 1 S. 1 Buchstabe f) DSGVO \" +\r\n \"(Berechtigtes Interesse an der Datenverarbeitung). Das berechtigte Interesse ergibt sich aus unserem \" +\r\n \"Bedarf an einer technisch einwandfreien und sicheren Webseite, und der Möglichkeit, dass Nutzer \" +\r\n \"Probleme auf einfache Art und Weise an uns übermitteln können. Der Verarbeitung Ihrer Daten auf \" +\r\n \"Grundlage unseres berechtigten Interesses können Sie jederzeit unter den Voraussetzungen des \" +\r\n \"Art. 21 DSGVO widersprechen. Nutzen Sie hierfür bitte die im Impressum genannten Kontaktdaten\",\r\n TEIL2_TEIL1_TEXT6:\r\n \"Mehr Informationen zum Umgang mit Nutzerdaten finden Sie in der Datenschutzerklärung von Atlassian: \",\r\n TEIL3: \"Im Einzelnen nutzen wir folgende Dienste:\",\r\n TEIL3_TEXT1:\r\n \"Wir nutzen bestimmte Dienste, die Daten von Webseitenbesuchern aufzeichnen und uns zur Analyse \" +\r\n \"zur Verfügung stellen. Diese Daten nutzen wir zur nutzungsorientierten Verbesserung unserer \" +\r\n \"Webseite, unserer Dienstleistungen und Angebote. Insbesondere können folgende Informationen \" +\r\n \"zum Besucherverhalten gesammelt werden: Ihre IP-Adresse, Produkt- und Versionsinformationen \" +\r\n \"über den verwendeten Browser und das Betriebssystem (sog. user agent), die Internetseite von \" +\r\n \"welcher Ihr Zugriff stattfand (sog. Referer), Datum und Uhrzeit der Anfrage und u.U. Ihr Internet-\" +\r\n \"Service-Provider, ungefähre Herkunft (Land und Stadt), Sprache, Klicks auf Inhalte und Ansichtsdauer.\",\r\n TEIL3_TEXT2:\r\n \"Die Rechtsgrundlage für die Nutzung von Analyse-Tools ist Art. 6 Abs. 1 S. 1 Buchstabe a) DSGVO \" +\r\n \"(Einwilligung des Betroffenen). Wir bitten Sie beim ersten Aufruf der Webseite über einen \" +\r\n \"eingeblendeten Hinweistext um Ihr Einverständnis zur Verwendung des Dienstes. Ihre Einwilligung \" +\r\n \"können Sie jederzeit mit Wirkung für die Zukunft widerrufen, indem Sie den Cookie-Banner erneut \" +\r\n \"aufrufen und getroffenen Einstellungen ändern.\",\r\n TEIL3_UEBERSCHRIFT: \"8.3 Analyse-Tools\",\r\n TEIL4_TEXT1: \"Unsere Webseite nutzt den Dienst „Application Insights“ der Firma Microsoft Ireland Operations \" +\r\n \"Limited, One Microsoft Place, South County Business Park, Leopardstown, Dublin 18 D18 P521, \" +\r\n \"Irland. Microsoft Ireland Operations Limited ist eine Tochtergesellschaft der Firma Microsoft \" +\r\n \"Corporation („Microsoft“), One Microsoft Way, Redmond, WA 98052-6399, USA.\",\r\n TEIL4_TEXT2: \"Der Dienst ermöglicht es uns, eine Analyse des Nutzerverhaltens auf der Webseite durchzuführen. \" +\r\n \"Dabei werden Daten, wie beispielsweise die IP-Adresse, Häufigkeit des Besuchs, Ort und Zeit der \" +\r\n \"Anfrage erhoben und an Server von Microsoft in den USA übertragen. \" +\r\n \"Wir nutzen dabei die Anonymisierungsfunktion, wodurch sämtliche erhobenen Daten direkt nach der \" +\r\n \"Erhebung anonymisiert werden.\",\r\n TEIL4_TEXT3: \"Die Firma Microsoft Corporation erfüllt die Anforderungen des „EU-U.S. Data Privacy Frameworks“ \" +\r\n \"(zu Deutsch: EU-US-Datenschutzrahmen). Das Privacy-Framework-Abkommen regelt den Schutz \" +\r\n \"personenbezogener Daten, die aus einem Mitgliedsstaat der Europäischen Union in die USA \" +\r\n \"übertragen werden. Es stellt sicher, dass die übertragenen Daten dort ebenfalls einem der \" +\r\n \"Europäischen Union vergleichbaren Datenschutzniveau unterliegen. Die Liste zertifizierter \" +\r\n \"Unternehmen können Sie hier abrufen\",\r\n TEIL4_TEXT4: \"Bei der Nutzung des Diensts werden Cookies am Endgerät des Webseitenbesuchers gespeichert. \" +\r\n \"Wir haben mit dem Anbieter einen Auftragsverarbeitungsvertrag abgeschlossen.\",\r\n TEIL4_TEXT5: \"Weitere Informationen zum Datenschutz bei Microsoft finden Sie unter:\",\r\n TEIL4_TEXT6: \"Stand der Datenschutzerklärung: \",\r\n TEIL4_UEBERSCHRIFT: \"8.3.1 Microsoft Application Insights\",\r\n UEBERSCHRIFT: \"8. DIENSTE-DRITTER\",\r\n },\r\n NUTZUNGBEDINGUNGEN_UEBERSCHRITFT: \"Allgemeine Nutzungsbedingungen\",\r\n UEBERSCHRITFT: \"Datenschutzerklärung\",\r\n VERARBEITUNGSTAETIGKEITEN: {\r\n TABELLE_HEADER_COLUMN1: \"Name\",\r\n TABELLE_HEADER_COLUMN2: \"Erläuterung\",\r\n TABELLE_HEADER_COLUMN3: \"Herkunft (Domain)\",\r\n TABELLE_HEADER_COLUMN4: \"Gültigkeit/ Speicherdauer\",\r\n TABELLE_HEADER_COLUMN5: \"Zugriff Dritter\",\r\n TABELLE_ROW1_COLUMN1: \"Ai_session\",\r\n TABELLE_ROW1_COLUMN2:\r\n \"Dieses Cookie dient dazu, zu erkennen, wie viele Sitzungen der Benutzeraktivität \" +\r\n \"bestimmte Seiten und Funktionen der App einbezogen haben. \",\r\n TABELLE_ROW1_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_ROW1_COLUMN4: \"30 Minuten\",\r\n TABELLE_ROW1_COLUMN5: \"Ja, Microsoft\",\r\n TABELLE_ROW2_COLUMN1: \"Ai_user\",\r\n TABELLE_ROW2_COLUMN2:\r\n \"Dieses Cookie dient dazu, zu ermitteln, wie viele Personen die App und ihre \" +\r\n \"Funktionen genutzt haben. Die Nutzer werden mit anonymen IDs gezählt. \",\r\n TABELLE_ROW2_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_ROW2_COLUMN4: \"1 Jahr\",\r\n TABELLE_ROW2_COLUMN5: \"Ja, Microsoft\",\r\n TABELLE_ROW3_COLUMN1: \"ARRAffinity- SameSite\",\r\n TABELLE_ROW3_COLUMN2:\r\n \"Dieses Cookie wird verwendet, um das effektive Laden der Website \" +\r\n \"zu steuern und sicherzustellen, dass alle vom Nutzer getätigeten Anfragen \" +\r\n \"jeder Browsersitzung an denselben Server geleitet werden. \",\r\n TABELLE_ROW3_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_ROW3_COLUMN4: \"Sitzungsende\",\r\n TABELLE_ROW3_COLUMN5: \"Ja, Microsoft\",\r\n TABELLE_ROW4_COLUMN1: \"Token\",\r\n TABELLE_ROW4_COLUMN2:\r\n \"Diese Cookies dienen der Sicherheit der Webseite und dem Schutz des Nutzers \" +\r\n \"gegen CSRF- (Cross-Site-Request-Forgery) Attacken, in dem sie jede Anfrage \" +\r\n \"vom Client an den Server mit einem eindeutigen „Token“ versehen, der sicher \" +\r\n \"stellt, dass der Request vom Client kommt. Die einzelnen hier aufgeführten \" +\r\n \"Cookies werden bei der jeweiligen Ausführung der spezifischen Handlung \" +\r\n \"(z.B. Newsletteranmeldung, Profiländerungen, betätigung der Schaltflächen beim Formular) gesetzt \" +\r\n \"und dienen dem Csrf-Schutz der jeweiligen spezifischen Handlung.\",\r\n TABELLE_ROW4_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_ROW4_COLUMN4: \"Sitzungsende\",\r\n TABELLE_ROW4_COLUMN5: \"Nein\",\r\n TABELLE_NEW_ROW4_COLUMN1: \"ARRAffinity\",\r\n TABELLE_NEW_ROW4_COLUMN2:\r\n \"Dieses Cookie wird verwendet, um den Verkehr auf der Website auf mehreren \" +\r\n \"Servern zu verteilen, um die Antwortzeiten zu optimieren.\",\r\n TABELLE_NEW_ROW4_COLUMN3: \"algo.cpc-baulogistik.de\",\r\n TABELLE_NEW_ROW4_COLUMN4: \"Sitzungsende\",\r\n TABELLE_NEW_ROW4_COLUMN5: \"Ja, Microsoft\",\r\n TEIL1_TEXT:\r\n \"Bei jedem Aufruf eines Webportals und bei jedem Abruf von Daten von \" +\r\n \"einem Server werden allgemeine Informationen automatisch an den \" +\r\n \"bereitstellenden Server übermittelt. Diese Datenübermittlung erfolgt \" +\r\n \"automatisch und ist ein grundlegender Bestandteil der Kommunikation \" +\r\n \"zwischen Geräten im Internet. Die standardmäßig übertragenen Daten \" +\r\n \"umfassen unter anderem folgende Informationen: Ihre IP-Adresse, \" +\r\n \"Produkt- und Versionsinformationen über den verwendeten Browser und \" +\r\n \"das Betriebssystem (sog. user agent), die Internetseite von welcher \" +\r\n \"Ihr Zugriff stattfand (sog. referer), Datum und Uhrzeit der Anfrage \" +\r\n \"(sog. timestamp). Außerdem werden der http-Status und die übertragene \" +\r\n \"Datenmenge im Rahmen dieser Anfrage erfasst. Diese Informationen \" +\r\n \"werden vom Server protokolliert, in einer Tabelle abgelegt und dort \" +\r\n \"kurzfristig gespeichert (sog. Server-Log-Dateien). Durch die Analyse \" +\r\n \"dieser Log-Dateien können wir Fehler der Webseite feststellen und \" +\r\n \"anschließend beseitigen, die Auslastung der Webseite zu bestimmten \" +\r\n \"Zeiten feststellen und darauf aufbauend Anpassungen oder \" +\r\n \"Verbesserungen vornehmen sowie die Sicherheit des Servers gewährleisten, \" +\r\n \"indem wir nachvollziehen können, von welcher IP-Adresse Angriffe auf \" +\r\n \"unseren Server ausgeführt wurden. Ihre IP-Adresse wird nur für die \" +\r\n \"Zeit Ihrer Nutzung der Webseite gespeichert und im Anschluss daran \" +\r\n \"unverzüglich gelöscht oder durch Kürzung teilweise unkenntlich \" +\r\n \"gemacht. Die übrigen Daten werden für eine begrenzte Zeitdauer (meist \" +\r\n \"7 Tage) gespeichert. Die Rechtsgrundlage für die Nutzung der \" +\r\n \"Server-Log-Dateien ist Art. 6 Abs. 1 S. 1 Buchstabe f) DSGVO \" +\r\n \"(Berechtigtes Interesse an der Datenverarbeitung). Das berechtigte \" +\r\n \"Interesse ergibt sich aus der Notwendigkeit für den Betrieb und die \" +\r\n \"Wartung unserer Webseite, wie wir vorstehend erläutert haben. Der \" +\r\n \"Verarbeitung Ihrer Daten auf Grundlage unseres berechtigten \" +\r\n \"Interesses können Sie jederzeit unter den Voraussetzungen des Art. \" +\r\n \"21 DSGVO widersprechen. Nutzen Sie hierfür bitte die im Impressum \" +\r\n \"genannten Kontaktdaten. Wir weisen aber bereits im Vorfeld darauf hin, \" +\r\n \"dass die Verarbeitung Ihrer Daten in Server-Log-Dateien zwingend im \" +\r\n \"Sinne des Art. 21 Abs. 1 DSGVO ist, da die Webseite ansonsten \" +\r\n \"überhaupt nicht betrieben werden kann.\",\r\n TEIL1_UEBERSCHRIFT: \"7.1 Server-Log-Dateien\",\r\n TEIL2_TEIL1_TEXT1: \"Was Cookies sind\",\r\n TEIL2_TEIL1_TEXT10:\r\n \"Im Einzelnen setzt unser Webportal folgende Cookies:\",\r\n TEIL2_TEIL1_TEXT11: \"Rechtsgrundlage\",\r\n TEIL2_TEIL1_TEXT12:\r\n \"Die Rechtsgrundlage für die Nutzung von Cookies, die für die Funktion \" +\r\n \"der Webseite zwingend erforderlich sind (z.B. Warenkorb-Cookie, Session-Cookie) ist Art. 6 Abs. 1 S. 1 Buchstabe f) \" +\r\n \"DSGVO (Berechtigtes Interesse an der Datenverarbeitung) sowie §25 Abs. 2 Nr. 2 TTDSG (unbedingte Erforderlichkeit zur \" +\r\n \"Bereitstellung eines vom Nutzer ausdrücklich gewünschten Telemediendienstes). Das berechtigte Interesse ergibt sich aus unserem Bedarf \" +\r\n \"Ihnen eine funktionierende Webseite anbieten zu können. Cookies sind dazu erforderlich, weil sie ein integraler \" +\r\n \"Bestandteil der aktuellen Internet-Technologie sind und ohne Cookies viele Funktionen aktueller Webseiten nicht zur Verfügung stünden. \" +\r\n \"Wir benötigen daher Cookies, um Ihnen die Webseite auf Ihre Anfrage zur Verfügung stellen zu können. Der Verarbeitung Ihrer Daten auf Grundlage \" +\r\n \"unseres berechtigten Interesses können Sie jederzeit unter den Voraussetzungen des Art. 21 DSGVO widersprechen. \" +\r\n \"Nutzen Sie hierfür bitte die im Impressum genannten Kontaktdaten. Wir weisen aber darauf hin, dass die Verarbeitung Ihrer Daten in bestimmten Cookies \" +\r\n \"zwingend im Sinne des Art. 21 Abs. 1 DSGVO ist, da die Webseite ansonsten überhaupt nicht betrieben werden kann und wir technisch nicht die Möglichkeit \" +\r\n \"haben, das Setzen von Cookies auf bestimmten individuellen Endgeräten zu unterbinden. Sie können das in Ihrem Browser aber möglicherweise selbst tun. \" +\r\n \"Werfen Sie für weitere Informationen hierzu bitte einen Blick in die Anleitung Ihres Browsers. \" +\r\n \"Die Rechtsgrundlage für die Nutzung von Cookies, die für die Funktion der Webseite nicht zwingend erforderlich sind, ist Art. 6 Abs. 1 S. 1 Buchstabe a) \" +\r\n \" DSGVO (Einwilligung des Betroffenen). Wir bitten Sie beim ersten Aufruf der Webseite über einen eingeblendeten Hinweistext um Ihr Einverständnis zur \" +\r\n \"Verwendung von nicht notwendigen Cookies. Ihre Einwilligung können Sie jederzeit mit Wirkung für die Zukunft widerrufen, indem Sie den Cookie-Banner \" +\r\n \"erneut aufrufen und getroffenen Einstellungen ändern.\",\r\n TEIL2_TEIL1_TEXT2:\r\n \"Sehr vereinfacht gesagt ist ein Cookie eine kleine Textdatei, die Daten \" +\r\n \"über besuchte Webseiten speichert. Cookies können in vielfacher Weise \" +\r\n \"eingesetzt werden. Sie können zum Beispiel eine Art „Benutzerprofil“ \" +\r\n \"speichern, also Dinge wie Ihre bevorzugte Sprache und andere \" +\r\n \"Seiteneinstellungen, die von unserer Webseite benötigt werden, um Ihnen \" +\r\n \"bestimmte Dienste anbieten zu können. Die Cookie-Datei wird auf Ihrem \" +\r\n \"Endgerät gespeichert und kann auch dabei helfen, Sie bei einem erneuten \" +\r\n \"Aufruf unseres Webportals wiederzuerkennen.\",\r\n TEIL2_TEIL1_TEXT3:\r\n \"Unter Umständen können wir durch die Cookies außerdem Informationen über \" +\r\n \"Ihre bevorzugten Aktivitäten auf unserer Webseite erhalten und unsere \" +\r\n \"Webseite so an Ihren individuellen Interessen ausrichten oder sogar die \" +\r\n \"Geschwindigkeit der Navigation auf unserer Webseite erhöhen.\",\r\n TEIL2_TEIL1_TEXT4: \"Wie Sie Cookies vermeiden können\",\r\n TEIL2_TEIL1_TEXT5:\r\n \"Sie können die Cookies in den Sicherheitseinstellungen Ihres Browsers \" +\r\n \"jederzeit manuell löschen.\",\r\n TEIL2_TEIL1_TEXT6:\r\n \" Sie können die Speicherung von Cookies aber auch durch eine \" +\r\n \"entsprechende Einstellung Ihres Browsers von vornherein verhindern. \" +\r\n \"Bitte beachten Sie aber, dass Sie dann möglicherweise nicht sämtliche \" +\r\n \"Funktionen unserer Webseite vollumfänglich nutzen können oder dass es \" +\r\n \"gegebenenfalls zu Fehlern in der Darstellung und Nutzung der Webseite \" +\r\n \"kommen kann.\",\r\n TEIL2_TEIL1_TEXT7: \"Cookies von Drittanbietern\",\r\n TEIL2_TEIL1_TEXT8:\r\n \"Es ist möglich, dass Drittanbieter, mithilfe derer wir unsere Seite \" +\r\n \"gestalten und betreiben, insbesondere durch sogenannte Plugins (siehe \" +\r\n \"unten im Abschnitt „Dienste Dritter“), selbständig eigene Cookies auf \" +\r\n \"Ihrem Endgerät speichern. Sollten Sie nur unsere eigenen Cookies, nicht \" +\r\n \"aber Cookies dieser Dritten, akzeptieren wollen, können Sie die \" +\r\n \"Speicherung dieser Cookies durch die entsprechende Browsereinstellung \" +\r\n \"„Cookies von Drittanbietern blockieren” verhindern.\",\r\n TEIL2_TEIL1_TEXT9: \"Welche Cookies eingesetzt werden\",\r\n TEIL2_TEIL1_UEBERSCHRIFT: \"7.2.1 Cookies\",\r\n TEIL2_TEIL2_TEXT1: \"Was ist der Web Storage\",\r\n TEIL2_TEIL2_TEXT2:\r\n \"Der Web Storage ist eine Technik für Webanwendungen, mit der Daten in \" +\r\n \"einem Webbrowser gespeichert werden. Der Web Storage kann vereinfacht \" +\r\n \"als eine Weiterentwicklung von Cookies angesehen werden, unterscheidet \" +\r\n \"sich von diesen jedoch in einigen Punkten.\",\r\n TEIL2_TEIL2_TEXT3:\r\n \"Im Gegensatz zu Cookies, auf die sowohl Server als auch Client zugreifen \" +\r\n \"können, wird der Web Storage vollständig vom Client gesteuert. Das \" +\r\n \"heißt, es werden hierbei nicht mit jedem Aufruf der Webseite Daten zum \" +\r\n \"Server übertragen. Der Zugriff erfolgt ausschließlich lokal über Skripte \" +\r\n \"auf der Webseite. Konkret bedeutet das, dass ein Zugriff Dritter auf \" +\r\n \"die gespeicherten Informationen über die Webseite ausgeschlossen ist. \" +\r\n \"Nur Sie und wir können auf die lokal gespeicherten Daten zugreifen. \",\r\n TEIL2_TEIL2_TEXT4: \"Rechtsgrundlage\",\r\n TEIL2_TEIL2_TEXT5:\r\n \" Die Rechtsgrundlage für die Nutzung des Web Storage, die für die \" +\r\n \"Funktion der Webseite zwingend erforderlich ist, ist Art. 6 Abs. 1 S.1 Buchstabe f) DSGVO (Berechtigtes Interesse an der Datenverarbeitung). \" +\r\n \"sowie §25 Abs. 2 Nr. 2 TTDSG (unbedingte Erforderlichkeit zur Bereitstellung eines vom Nutzer ausdrücklich gewünschten Telemediendienstes). \" +\r\n \"Das berechtigte Interesse ergibt sich aus unserem Bedarf Ihnen eine funktionierende Webseite anbieten zu können. Der Web Storage ist dazu erforderlich, weil er ein integraler Bestandteil der aktuellen Internet-Technologie ist und ohne ihn viele Funktionen aktueller Webseiten nicht zur Verfügung stünden. Wir benötigen daher den Web Storage, um Ihnen die Webseite auf Ihre Anfrage zur Verfügung stellen zu können. Der Verarbeitung Ihrer Daten auf Grundlage unseres berechtigten Interesses können Sie jederzeit unter den Voraussetzungen des Art. 21 DSGVO widersprechen. Nutzen Sie hierfür bitte die im Impressum genannten Kontaktdaten. Wir weisen aber darauf hin, dass die Verarbeitung Ihrer Daten im Web Storage unter Umständen zwingend im Sinne des Art. 21 Abs. 1 DSGVO ist, da die Webseite ansonsten überhaupt nicht betrieben werden kann und wir technisch nicht die Möglichkeit haben, die Nutzung auf bestimmten individuellen Endgeräten zu unterbinden. Sie können das in Ihrem Browser aber möglicherweise selbst tun. Werfen Sie für weitere Informationen hierzu bitte einen Blick in die Anleitung Ihres Browsers.\" +\r\n \"Die Rechtsgrundlage für die Nutzung des Web Storage, die für die Funktion der Webseite nicht \" +\r\n \"zwingend erforderlich ist, ist Art. 6 Abs. 1 S.1 Buchstabe a) DSGVO (Einwilligung des Betroffenen). \" +\r\n \"Wir bitten Sie beim ersten Aufruf der Webseite über einen eingeblendeten Hinweistext um Ihr \" +\r\n \"Einverständnis zur Verwendung. Ihre Einwilligung können Sie jederzeit mit Wirkung für die Zukunft \" +\r\n \"widerrufen, indem Sie den Cookie-Banner erneut aufrufen und getroffenen Einstellungen ändern.\",\r\n TEIL2_TEIL2_UEBERSCHRIFT: \"7.2.2 Webstorage\",\r\n TEIL2_TEXT:\r\n \"Wir benutzen zur Verbesserung der Nutzerfreundlichkeit auf unserer \" +\r\n \"Webseite sogenannte „Cookies“ bzw. den „Web Storage“ Ihres Browsers.\",\r\n TEIL2_UEBERSCHRIFT: \"7.2 Cookies und Web-Storage\",\r\n TEIL3_TEXT1:\r\n \"Unsere Webseite bietet Ihnen die Möglichkeit, sich für weitere, \" +\r\n \"personalisierte Funktionen der Seite zu registrieren. Die Registrierung ist nur für Nutzer möglich, die im vornherein von der cpc baulogistik \" +\r\n \"GmbH freigeschaltet wurden. Bei der Registrierung werden personenbezogene Daten (z.B. Email-Adresse und \" +\r\n \"Name) erhoben und zum Zweck der Bereitstellung der personalisierten \" +\r\n \"Dienste verarbeitet.\",\r\n TEIL3_TEXT2:\r\n \"Folgende Angaben benötigen wir von Ihnen zwingend, um ein Kundenkonto anlegen zu können:\",\r\n TEIL3_TEXT3: \"Vorname, Nachname, E-Mail-Adresse, Unternehmen. \",\r\n TEIL3_TEXT4:\r\n \"Die Rechtsgrundlage für die Verarbeitung von verpflichtend anzugebenden Daten ist Art. 6 Abs. 1 lit. \" +\r\n \"b) DSGVO (Datenverarbeitung zur Erfüllung eines Vertrags und zur Durchführung vorvertraglicher \" +\r\n \"Maßnahmen). Sie haben auch selbst die Möglichkeit, die im Registrierungsprozess angegebenen Daten jederzeit \" +\r\n \"zu ändern oder vollständig zu löschen.\",\r\n TEIL3_UEBERSCHRIFT: \"7.5 Registrierungsbereich\",\r\n TEIL4_TEXT1:\r\n \"Unsere Webportal bietet die Möglichkeiten an, die Zutrittskontrolle für \" +\r\n \"Baustellen zu verwalten. Dies geschieht ausschließlich im Rahmen der Auftragsverarbeitung für den jeweiligen Auftraggeber.\",\r\n TEIL4_TEXT2:\r\n \"Die Rechtsgrundlage für die Übermittlung derjenigen Daten (Name, \" +\r\n \"Vorname, Staatsangehörigkeit, Geburtstag, Daten zur \" +\r\n \"Aufenthaltsgenehmigung, Daten zum Arbeitsverhältnis und ggf. weitere \" +\r\n \"personenbezogene Daten) die für das Baustellenzutrittsmanagement \" +\r\n \"erforderlich sind, ist Art. 6 Abs. 1 S. 1 Buchstabe b) DSGVO \" +\r\n \"(Datenverarbeitung zur Erfüllung eines Vertrags). \",\r\n TEIL4_TEXT3:\r\n \"Die für das Zutrittsmanagement übermittelten Daten werden für die Dauer \" +\r\n \"der Baustelle gespeichert und im Anschluss gelöscht, es sei denn es \" +\r\n \"stehen gesetzliche Aufbewahrungspflichten der Löschung entgegen, z.B. \" +\r\n \"aus dem Handelsrecht, dem Steuerrecht, dem Arbeitnehmerentsendegesetz, \" +\r\n \"dem Mindestlohngesetz oder dem Schwarzarbeitsbekämpfungsgesetz.\",\r\n TEIL4_UEBERSCHRIFT: \"7.4 Zutrittskontrolle\",\r\n TEXT:\r\n \"Wir möchten Ihnen im Folgenden so transparent wie möglich darstellen, \" +\r\n \"welche Daten wir von Ihnen zu welcher Gelegenheit, auf welcher Grundlage \" +\r\n \"und zu welchem Zweck verarbeiten.\",\r\n UEBERSCHRIFT: \"7. EINZELNE VERARBEITUNGSTÄTIGKEITEN\",\r\n TEIL5_TEXT1:\r\n \"Unser Portal bietet die Möglichkeit an, Transporte direkt bei uns anzumelden. Dies geschieht \" +\r\n \"ausschließlich im Rahmen der Auftragsverarbeitung für den jeweiligen Auftraggeber. \",\r\n TEIL5_TEXT2:\r\n \"Folgende Daten werden im Rahmen des Formulars verarbeitet:\",\r\n TEIL5_TEXT3:\r\n \"Vorname, Nachname, Unternehmen, E-Mail, Telefonnummer, Startort, Zielort, Kennzeichen, \" +\r\n \"Informationen zum Transport, Fracht, und Beladung.\",\r\n TEIL5_TEXT4:\r\n \"Die Rechtsgrundlage für die Nutzung der von Ihnen durch die Transportanmeldung an uns \" +\r\n \"übermittelten Daten ist Art. 6 Abs. 1 S. 1 Buchstabe b) DSGVO (Datenverarbeitung zur Erfüllung eines Vertrags).\",\r\n TEIL5_TEXT5:\r\n \"Die von Ihnen im Rahmen der Transportanmeldung an uns übermittelten Daten werden für die\" +\r\n \"Dauer der Baustelle gespeichert und im Anschluss gelöscht, es sei denn es stehen gesetzliche \" +\r\n \"Aufbewahrungspflichten der Löschung entgegen, z.B. aus dem Handelsrecht, dem Steuerrecht, dem \" +\r\n \"Arbeitnehmerentsendegesetz, dem Mindestlohngesetz oder dem Schwarzarbeitsbekämpfungsgesetz.\",\r\n TEIL5_UEBERSCHRIFTEN: \"7.3 Transportanmeldung\",\r\n TEIL6_TEXT1:\r\n \"Unsere Webseite wird auf Servern von externen Anbietern gehostet, um die Zurverfügungstellung \" +\r\n \"der Webseite effizient und sicher zu gewährleisten.\",\r\n TEIL6_TEXT2:\r\n \"Bei jedem Aufruf der Webseite werden allgemeine Informationen von Ihrem Browser automatisch an \" +\r\n \"den Server übermittelt (sog. Server-Log-Dateien). Nähere Informationen hierzu siehe oben unter \",\r\n TEIL6_TEXT3: \"„Server-Log-Dateien“.\",\r\n TEIL6_TEXT4:\r\n \"Die Rechtsgrundlage für die Nutzung von Hosting-Dienstleistung und die damit verbundene \" +\r\n \"Verarbeitung Ihrer Daten ist Art. 6 Abs. 1 S. 1 Buchstabe f) DSGVO (Berechtigtes Interesse an der \" +\r\n \"Datenverarbeitung), soweit bei dem jeweiligen Dienst nichts anderes angegeben ist. Das berechtigte \" +\r\n \"Interesse ergibt sich aus unserem Bedarf an einer technisch einwandfreien Darstellung unserer \" +\r\n \"Webseite, ohne dass wir dafür vertiefte Kenntnisse der Programmierung von Webseiten und \" +\r\n \"Wartung von IT-Systemen benötigen. Der Verarbeitung Ihrer Daten auf Grundlage unseres \" +\r\n \"berechtigten Interesses können Sie jederzeit unter den Voraussetzungen des Art. 21 DSGVO \" +\r\n \"widersprechen. Nutzen Sie hierfür bitte die im Impressum genannten Kontaktdaten.\",\r\n TEIL6_UEBERSCHRIFTEN: \"7.6 Hosting-Dienstleistungen\",\r\n },\r\n};\r\nexport default TRANSLATION_DE_DATENSCHUTZ;\r\n","export const TRANSLATION_EN_NUTZUNGSBEDINGUNGEN = {\r\n AUSSERGERICHTLICHES: {\r\n TEIL1_TEXT:\r\n \"CPC does not participate in dispute resolution proceedings before a consumer arbitration board.\",\r\n TEIL1_UEBERSCHRIFT: \"16.1 Dispute Resolution\",\r\n TEIL2_TEXT1:\r\n \"However, as required by EU Regulation No. 524/2013, it is noted that the European Commission under\",\r\n TEIL2_TEXT2:\r\n \"operates a platform for the extrajudicial online resolution of disputes (so-called ODR platform).\",\r\n TEIL2_UEBERSCHRIFT: \"16.2 Online dispute resolution\",\r\n UEBERSCHRIFT: \"16. EXTERNAL DISPUTE RESOLUTION\",\r\n },\r\n HAFTUNG: {\r\n TEIL1_TEXT:\r\n \"Unless otherwise provided in Part I, CPC shall be liable for any breach of duty in accordance with the statutory provisions.\",\r\n TEIL1_UEBERSCHRIFT: \"13.1 Breach of duty\",\r\n TEIL2_TEXT:\r\n \"CPC is liable for damages - irrespective of the legal grounds - within the scope of fault liability in case of intent and gross negligence. In the case of ordinary negligence, CPC is liable, subject to a milder standard of liability in accordance with statutory provisions (e.g. for due care in its own affairs) only \",\r\n TEIL2_UEBERSCHRIFT: \"13.2 Compensation for damages\",\r\n TEIL3_TEXT: \"The limitations of liability resulting from item I also apply to breaches of duty by or in favor of persons for whose fault CPC is responsible according to statutory provisions. They do not apply insofar as CPC has fraudulently concealed a defect or has assumed a guarantee for the condition and for any claims under the Product Liability Act.\",\r\n TEIL3_UEBERSCHRIFT: \"13.3 Limitations of liability\",\r\n UEBERSCHRIFT: \"13. LIABILITY\",\r\n },\r\n KOMMUNIKATION: {\r\n TEXT: \"Communications from CPC to the user shall be made by e-mail.\",\r\n UEBERSCHRIFT: \"14. COMMUNICATION\",\r\n },\r\n REGISTRIERUNG: {\r\n TEIL1_LISTE1: \"Surname, Name\",\r\n TEIL1_LISTE2: \"Email adress\",\r\n TEIL1_LISTE3: \"Company\",\r\n TEIL1_TEXT1:\r\n \"The use of the ALGO web application and/or ALGO app is only possible after personal registration of the user by providing the following mandatory data:\",\r\n TEIL1_UEBERSCHRIFT: \"10.1 Compulsory data\",\r\n TEIL2_TEXT:\r\n \"The user must set a username and password. The use of ALGO web application and/or ALGO app is possible only by entering the personal username and password.\",\r\n TEIL2_UEBERSCHRIFT: \"10.2 Username/Password\",\r\n TEIL3_TEXT:\r\n \"The user can log in to the respective construction site projects within the application or app by entering the data marked as mandatory in the login mask:\",\r\n TEIL3_UEBERSCHRIFT: \"10.3 Login screen\",\r\n UEBERSCHRIFT: \"10. REGISTRATION\",\r\n },\r\n SORGFALTSPFLICHTEN: {\r\n TEIL1_TEXT:\r\n \"The user may not disclose the password to third parties and must store it carefully to prevent misuse.\",\r\n TEIL1_UEBERSCHRIFT: \"11.1 Password\",\r\n TEIL2_TEXT:\r\n \"The user is obliged to inform the construction site operator or CPC immediately if the password has been lost or if the user becomes aware that third parties not authorized by him have gained knowledge of the password. Unless the user provides evidence that a third party has used the access to the platform without his consent, all entries made via the access are attributed to the user.\",\r\n TEIL2_UEBERSCHRIFT:\r\n \"11.2 Duty to inform about lost password\",\r\n TEIL3_TEXT:\r\n \"The user is liable for any misuse by third parties, unless he can prove that he is not at fault.\",\r\n TEIL3_UEBERSCHRIFT: \"11.3 Liability\",\r\n TEIL4_TEXT:\r\n \"CPC has the right to deactivate the registration of any user in the event of misuse or fraudulent use of the access authorization.\",\r\n TEIL4_UEBERSCHRIFT: \"11.4 Deactivation of the user account\",\r\n TEIL5_TEXT:\r\n \"The user can view his registration data under the heading ['My profile - Master data'] at any time and correct/change it there..\",\r\n TEIL5_UEBERSCHRIFT:\r\n \"11.5 Viewing registered data\",\r\n UEBERSCHRIFT: \"11. DUTIES OF CARE OF THE USER\",\r\n },\r\n UEBERSCHRIFT: \"II. GENERAL TERMS OF USE\",\r\n VERHAELTNISSE: {\r\n TEXT: \"CPC has not submitted to any specific codes of conduct.\",\r\n UEBERSCHRIFT: \"15. Codes of Conduct\",\r\n },\r\n VERTRAGSVERHAELTNIS: {\r\n TEXT: \"CPC provides the ALGO web application and the ALGO app to the user only on behalf of and within the scope of the instructions of the site operator. No contractual relationship exists between the user of the ALGO web application or the ALGO app and CPC. The app is used by the user exclusively for the implementation or fulfillment of the contractual or other legal relationship between the construction site operator of the construction project for which the registration is made and the user.\",\r\n UEBERSCHRIFT: \"9. CONTRACTUAL RELATIONSHIP\",\r\n },\r\n ZUGRIFFSBERECHTIGUNG: {\r\n TEIL1_TEXT:\r\n \"The scope of access authorization is determined by the construction site operator according to project roles (e.g. owner, construction management, project coordinators, subcontractors). The user expressly has no claim against CPC for the granting of access authorization.\",\r\n TEIL1_UEBERSCHRIFT: \"12.1 Scope\",\r\n TEIL2_TEXT:\r\n \"The construction site operator may informally instruct CPC to delete a user's access authorization at any time without stating reasons. In this case, the registration of the user concerned and thus his authorization to use the system will expire with immediate effect or, if applicable, with effect from the time at which the construction site operator withdraws the authorization to use the system.\",\r\n TEIL2_UEBERSCHRIFT: \"12.2 Expiration\",\r\n UEBERSCHRIFT: \"12. SCOPE AND EXPIRATION OF THE ACCESS AUTHORIZATION\",\r\n },\r\n};\r\nexport default TRANSLATION_EN_NUTZUNGSBEDINGUNGEN;\r\n","export const TRANSLATION_DE_NUTZUNGSBEDINGUNGEN = {\r\n AUSSERGERICHTLICHES: {\r\n TEIL1_TEXT:\r\n \"CPC nimmt nicht an einem Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teil.\",\r\n TEIL1_UEBERSCHRIFT: \"16.1 Streitbeilegung\",\r\n TEIL2_TEXT1:\r\n \"Pflichtgemäß nach der EU-Verordnung Nr. 524/2013 wird jedoch darauf hingewiesen, dass die Europäische Kommission unter\",\r\n TEIL2_TEXT2:\r\n \"eine Plattform zur außergerichtlichen Online-Streitbeilegung (sog. OS-Plattform) betreibt.\",\r\n TEIL2_UEBERSCHRIFT: \"16.2 Online-Streitbeilegung\",\r\n UEBERSCHRIFT: \"16. AUßERGERICHTLICHE STREITBEILEGUNG\",\r\n },\r\n HAFTUNG: {\r\n TEIL1_TEXT:\r\n \"Soweit sich aus Teil I nichts anderes ergibt haftet CPC bei einer etwaigen Pflichtverletzung nach den gesetzlichen Vorschriften.\",\r\n TEIL1_UEBERSCHRIFT: \"13.1 Pflichtverletzungen\",\r\n TEIL2_TEXT:\r\n \"Auf Schadensersatz haftet CPC – gleich aus welchem Rechtsgrund – im Rahmen der Verschuldenshaftung bei Vorsatz und grober Fahrlässigkeit. Bei einfacher Fahrlässigkeit haftet CPC vorbehaltlich eines milderen Haftungsmaßstabs nach gesetzlichen Vorschriften (z.B. für Sorgfalt in eigenen Angelegenheiten) nur \",\r\n TEIL2_UEBERSCHRIFT: \"13.2 Schadenersatz\",\r\n TEIL3_TEXT:\r\n \"Die sich aus Punkt I ergebenden Haftungsbeschränkungen gelten auch bei Pflichtverletzungen durch bzw. zugunsten von Personen, deren Verschulden CPC nach gesetzlichen Vorschriften zu vertreten hat. Sie gelten nicht, soweit CPC einen Mangel arglistig verschwiegen oder eine Garantie für die Beschaffenheit übernommen hat und für etwaige Ansprüche nach dem Produkthaftungsgesetz.\",\r\n TEIL3_UEBERSCHRIFT: \"13.3 Haftungsbeschränkungen\",\r\n UEBERSCHRIFT: \"13. HAFTUNG\",\r\n },\r\n KOMMUNIKATION: {\r\n TEXT: \"Mitteilungen von CPC an die Nutzenden erfolgen per E-Mail.\",\r\n UEBERSCHRIFT: \"14. KOMMUNIKATION\",\r\n },\r\n REGISTRIERUNG: {\r\n TEIL1_LISTE1: \"Name, Vorname\",\r\n TEIL1_LISTE2: \"E-Mail-Adresse\",\r\n TEIL1_LISTE3: \"Firma\",\r\n TEIL1_TEXT1:\r\n \"Die Nutzung der ALGO-Webanwendung und/oder ALGO-App ist nur nach persönlicher Registrierung der nutzenden Person unter Angabe folgender Pflichtdaten möglich:\",\r\n TEIL1_UEBERSCHRIFT: \"10.1 Pflichtdaten\",\r\n TEIL2_TEXT:\r\n \"Die nutzende Person muss einen Nutzernamen und ein Passwort festlegen. Die Nutzung ALGO-Webanwendung und/oder ALGO-App ist nur unter Eingabe des persönlichen Nutzernamens und Passwortes möglich.\",\r\n TEIL2_UEBERSCHRIFT: \"10.2 Nutzername/Passwort\",\r\n TEIL3_TEXT:\r\n \"Die nutzende Person kann sich innerhalb der Anwendung bzw. App zu den jeweiligen Baustellenprojekten unter Angabe der in der Anmeldemaske als Pflichtdaten gekennzeichneten Daten anmelden:\",\r\n TEIL3_UEBERSCHRIFT: \"10.3 Anmeldemaske\",\r\n UEBERSCHRIFT: \"10. REGISTRIERUNG\",\r\n },\r\n SORGFALTSPFLICHTEN: {\r\n TEIL1_TEXT:\r\n \"Die nutzende Person darf das Passwort Dritten nicht offenbaren und hat es sorgfältig zu verwahren, um Missbräuche auszuschließen.\",\r\n TEIL1_UEBERSCHRIFT: \"11.1 Passwort\",\r\n TEIL2_TEXT:\r\n \"Die nutzende Person ist verpflichtet, den Baustellenbetreiber oder CPC unverzüglich zu informieren, wenn das Passwort verloren gegangen ist oder wenn ihm/ihr bekannt wird, dass von ihm/ihr nicht befugte Dritte von dem Passwort Kenntnis erlangt haben. Sofern die nutzende Person nicht den Beweis erbringt, dass ein Dritter den Zugang zur Plattform ohne seine/ihre Zustimmung genutzt hat, werden alle über den Zugang getätigten Eingaben der nutzenden Person zugerechnet.\",\r\n TEIL2_UEBERSCHRIFT:\r\n \"11.2 Informationspflicht über verlorengeganges Passwort\",\r\n TEIL3_TEXT:\r\n \"Die nutzende Person haftet für jeden Missbrauch Dritter, soweit er/sie nicht den Beweis erbringt, dass ihn/ihr hieran kein Verschulden trifft.\",\r\n TEIL3_UEBERSCHRIFT: \"11.3 Haftung\",\r\n TEIL4_TEXT:\r\n \"CPC hat das Recht, die Registrierung jeder nutzenden Person zu deaktivieren, sollte es zu einer missbräuchlichen oder in betrügerischer Absicht vorgenommenen Verwendung der Zugriffsberechtigung kommen.\",\r\n TEIL4_UEBERSCHRIFT: \"11.4 Deaktivierung des Nutzerkontos\",\r\n TEIL5_TEXT:\r\n \"Die eigenden Registrierungs-Daten kann der/die Nutzer*in unter der Rubrik [„Mein Profil - Stammdaten“] jederzeit einsehen und dort korrigieren/ändern.\",\r\n TEIL5_UEBERSCHRIFT: \"11.5 Registrierungs-Daten\",\r\n UEBERSCHRIFT: \"11. SORGFALTSPFLICHTEN DER NUTZENDEN Person\",\r\n },\r\n UEBERSCHRIFT: \"II. ALLGEMEINE NUTZUNGSBEDINGUNGEN\",\r\n VERHAELTNISSE: {\r\n TEXT: \"CPC hat sich keinen speziellen Verhaltenskodizes unterworfen.\",\r\n UEBERSCHRIFT: \"15. VERHÄLTNISSE\",\r\n },\r\n VERTRAGSVERHAELTNIS: {\r\n TEXT: \"CPC stellt die ALGO-Webanwendung und die ALGO-App nur im Auftrag und im Rahmen der Weisungen der baustellenbetreibenden Person dem/der Nutzer*in zur Verfügung. Zwischen der nutzenden Person und der ALGO-Webanwendung bzw. der ALGO-App und CPC besteht kein Vertragsverhältnis. Die Nutzung der App erfolgt durch die nutzende Person ausschließlich zur Umsetzung bzw. Erfüllung des Vertrags- oder sonstigen Rechtsverhältnisses zwischen der baustellenbetreibenden Person des Bauprojekts, für das die Registrierung erfolgt, und dem nutzenden Person.\",\r\n UEBERSCHRIFT: \"9. VERTRAGSVERHÄLTNIS\",\r\n },\r\n ZUGRIFFSBERECHTIGUNG: {\r\n TEIL1_TEXT:\r\n \"Den Umfang der Zugriffsberechtigung legt die baustellenbetreibende Person nach Projektrollen (z.B. Bauherr*in, Bauleitung, Projektkoordination, Nachunternehmer*in) gestaffelt fest. Die nutzende Person hat gegenüber CPC ausdrücklich keinen Anspruch auf Gewährung einer Zugangsberechtigung.\",\r\n TEIL1_UEBERSCHRIFT: \"12.1 Umfang\",\r\n TEIL2_TEXT:\r\n \"Die baustellenbetreibende Person kann CPC jederzeit formlos und ohne Angabe von Gründen anweisen, die Zugangsberechtigung einer nutzenden Person zu löschen. In diesem Fall erlischt die Registrierung der betreffenden nutzenden Person und somit seine/ihre Nutzungsberechtigung mit sofortiger Wirkung oder ggf. mit Wirkung zu dem Zeitpunkt, zu dem die baustellenbetreibende Person die Nutzungsberechtigung entzieht.\",\r\n TEIL2_UEBERSCHRIFT: \"12.2 Erlöschen\",\r\n UEBERSCHRIFT: \"12. UMFANG UND ERLÖSCHEN DER ZUGRIFFSBERECHTIGUNG\",\r\n },\r\n};\r\nexport default TRANSLATION_DE_NUTZUNGSBEDINGUNGEN;\r\n","export const TRANSLATIONS_EN_LAENDER = {\r\n DEUTSCHLAND: \"Germany\",\r\n POLEN: \"Poland\",\r\n TSCHECHIEN: \"Czech Republic\",\r\n RUMÄNIEN: \"Romania\",\r\n ALBANIEN: \"Albania\",\r\n BULGARIEN: \"Bulgaria\",\r\n GRIECHENLAND: \"Greece\",\r\n ITALIEN: \"Italy\",\r\n KROATIEN: \"Croatia\",\r\n LETTLAND: \"Latvia\",\r\n MAZEDONIEN: \"Macedonia\",\r\n NIEDERLANDE: \"Netherlands\",\r\n PORTUGAL: \"Portugal\",\r\n FRANKREICH: \"France\",\r\n RUSSISCHE_FÖDERATION: \"Russian Federation\",\r\n TÜRKEI: \"Turkey\",\r\n AFGHANISTAN: \"Afghanistan\",\r\n ÄGYPTEN: \"Egypt\",\r\n ALGERIEN: \"Algeria\",\r\n ANDORRA: \"Andorra\",\r\n ANGOLA: \"Angola\",\r\n ANTIGUA_UND_BARBUDA: \"Antigua und Barbuda\",\r\n ARABISCHE_EMIRATE: \"United Arab Emirates\",\r\n ÄQUATORIALGUINEA: \"Equatorial Guinea\",\r\n ARGENTINIEN: \"Argentina\",\r\n ARMENIEN: \"Armenia\",\r\n ASERBAIDSCHAN: \"Azerbaijan\",\r\n ÄTHIOPIEN: \"Ethiopia\",\r\n AUSTRALIEN: \"Australia\",\r\n BAHAMAS: \"Bahamas\",\r\n BAHRAIN: \"Bahrain\",\r\n BANGLADESCH: \"Bangladesh\",\r\n BARBADOS: \"Barbados\",\r\n BELGIEN: \"Belgium\",\r\n BELIZE: \" Belize\",\r\n BENIN: \"Benin\",\r\n BHUTAN: \"Bhutan\",\r\n BOLIVIEN: \"Bolivia\",\r\n BOSNIEN_UND_HERZEGOWINA: \"Bosnia and Herzegowina\",\r\n BOTSUANA: \"Botswana\",\r\n BRASILIEN: \"Brazil\",\r\n BRUNEI_DARUSSALAM: \"Brunei Darussalam\",\r\n BULGARIEN: \"Bulgaria\",\r\n BURKINA_FASO: \"Burkina Faso\",\r\n BURUNDI: \"Burundi\",\r\n CABO_VERDE: \"Cape Verde\",\r\n CHILE: \"Chile\",\r\n CHINA: \"China\",\r\n COOKINSELN: \"Cook Islands\",\r\n COSTA_RICA: \"Costa Rica\",\r\n CÔTE_DIVOIRE: \"Côte d’Ivoire\",\r\n DEMOKRATISCHE_VOLKSREPUBLIK_LAOS: \"Laos People's Democratic Republic\",\r\n DOMINICA: \"Dominica\",\r\n DOMINIKANISCHE_REPUBLIK: \"Dominican Republic\",\r\n DSCHIBUTI: \"Djibouti\",\r\n DÄNEMARK: \"Denmark\",\r\n ECUADOR: \"Ecuador\",\r\n EL_SALVADOR: \"El Salvador\",\r\n ERITREA: \"Eritrea\",\r\n ESTLAND: \"Estonia\",\r\n ESWATINI: \"Eswatini\",\r\n FIDSCHI: \"Fiji\",\r\n FINNLAND: \"Finland\",\r\n FÖDERIERTE_STAATEN_VON_MIKRONESIEN: \"Federated States of Micronesia\",\r\n GABUN: \"Gabon\",\r\n GAMBIA: \"Gambia\",\r\n GEORGIEN: \"Georgia\",\r\n GHANA: \"Ghana\",\r\n GRENADA: \"Granada\",\r\n GUATEMALA: \"Guatemala\",\r\n GUINEA: \"Guinea\",\r\n GUINEA_BISSAU: \"Guinea-Bissau\",\r\n GUYANA: \"Guyana\",\r\n HAITI: \"Haiti\",\r\n HONDURAS: \"Honduras\",\r\n INDIEN: \"India\",\r\n INDONESIEN: \"Indonesia\",\r\n IRAK: \"Iraq\",\r\n IRAN: \"Iran\",\r\n IRLAND: \"Ireland\",\r\n ISLAND: \"Iceland\",\r\n ISRAEL: \"Israel\",\r\n ITALIEN: \"Italy\",\r\n JAMAIKA: \"Jamaica\",\r\n JAPAN: \"Japan\",\r\n JEMEN: \"Yemen\",\r\n JORDANIEN: \"Jordan\",\r\n KAMBODSCHA: \"Cambodia\",\r\n KAMERUN: \"Cameroon\",\r\n KANADA: \"Canada\",\r\n KASACHSTAN: \"Kazakhstan\",\r\n KATAR: \"Qatar\",\r\n KENIA: \"Kenya\",\r\n KIRGISISTAN: \"Kyrgyzstan\",\r\n KIRIBATI: \"Kiribati\",\r\n KOLUMBIEN: \"Colombia\",\r\n KOMOREN: \"Comoros\",\r\n KONGO_DEMOKRATISCHE_REPUBLIK: \"Congo, Democratic Republic\",\r\n KONGO_REPUBLIK: \"Congo, Republic\",\r\n KOREA_DEMOKRATISCHE_VOLKSREPUBLIK: \"Korea, People's Democratic Republic\",\r\n KOREA_REPUBLIK: \"Korea, Republic\",\r\n KOSOVO: \"Kosovo\",\r\n KROATIEN: \"Croatia\",\r\n KUBA: \"Cuba\",\r\n KUWAIT: \"Kuwait\",\r\n LESOTHO: \"Lesotho\",\r\n LETTLAND: \"Latvia\",\r\n LIBANON: \"Lebanon\",\r\n LIBERIA: \"Liberia\",\r\n LIBYEN: \"Libya\",\r\n LIECHTENSTEIN: \"Liechtenstein\",\r\n LITAUEN: \"Lithuania\",\r\n LUXEMBURG: \"Luxembourg\",\r\n MADAGASKAR: \"Madagascar\",\r\n MALAWI: \"Malawi\",\r\n MALAYSIA: \"Malaysia\",\r\n MALEDIVEN: \"Maldives\",\r\n MALI: \"Mali\",\r\n MALTA: \"Malta\",\r\n MAROKKO: \"Morocco\",\r\n MARSHALLINSELN: \"Marshall Islands\",\r\n MAURETANIEN: \"Mauritania\",\r\n MAURITIUS: \"Mauritius\",\r\n MAZEDONIEN: \"Macedonia\",\r\n MEXIKO: \"Mexico\",\r\n MOLDAWISCH: \"Moldovan\",\r\n MONACO: \"Monaco\",\r\n MONGOLEI: \"Mongolia\",\r\n MONTENEGRO: \"Montenegro\",\r\n MOSAMBIK: \"Mozambique\",\r\n MYANMAR: \"Myanmar\",\r\n NAMIBIA: \"Namibia\",\r\n NAURU: \"Nauru\",\r\n NEPAL: \"Nepal\",\r\n NEUSEELAND: \"New Zealand\",\r\n NICARAGUA: \"Nicaragua\",\r\n NIGER: \"Niger\",\r\n NIGERIA: \"Nigeria\",\r\n NIUE: \"Niue\",\r\n NORWEGEN: \"Norway\",\r\n ÖSTERREICH: \"Austria\",\r\n OMAN: \"Oman\",\r\n PAKISTAN: \"Pakistan\",\r\n PALAU: \"Palau\",\r\n PALÄSTINA: \"Palestine\",\r\n PANAMA: \"Panama\",\r\n PAPUA_NEUGUINEA: \"Papua New Guinea\",\r\n PARAGUAY: \"Paraguay\",\r\n PERU: \"Peru\",\r\n PHILIPPINEN: \"Philippines\",\r\n POLEN: \"Poland\",\r\n RUANDA: \"Rwanda\",\r\n SALOMONEN: \"Solomon Islands\",\r\n SAMBIA: \"Zambia\",\r\n SAMOA: \"Samoa\",\r\n SAN_MARINO: \"San Marino\",\r\n SAUDI_ARABIEN: \"Saudi Arabia\",\r\n SCHWEDEN: \"Sweden\",\r\n SCHWEIZ: \"Switzerland\",\r\n SENEGAL: \"Senegal\",\r\n SERBIEN: \"Serbia\",\r\n SEYCHELLEN: \"Seychelles\",\r\n SIERRA_LEONE: \"Sierra Leone\",\r\n SIMBABWE: \"Zimbabwe\",\r\n SINGAPUR: \"Singapore\",\r\n SLOWAKEI: \"Slovakia\",\r\n SLOWENIEN: \"Slovenia\",\r\n SOMALIA: \"Somalia\",\r\n SPANIEN: \"Spain\",\r\n SRI_LANKA: \"Sri Lanka\",\r\n ST_KITTS_UND_NEVIS: \"St. Kitts and Nevis\",\r\n ST_LUCIA: \"St. Lucia\",\r\n ST_VINCENT_UND_DIE_GRENADINEN: \"St. Vincent and the Grenadines\",\r\n STAATENLOS: \"Stateless\",\r\n SUDAN: \"Sudan\",\r\n SURINAME: \"Suriname\",\r\n SYRIEN: \"Syria\",\r\n SÃO_TOMÉ_UND_PRÍNCIPE: \"Sao Tome and Principe\",\r\n SÜDAFRIKA: \"South Africa\",\r\n SÜDSUDAN: \"South Sudan\",\r\n TADSCHIKISTAN: \"Tajikistan\",\r\n TANSANIA: \"Tanzania\",\r\n THAILAND: \"Thailand\",\r\n TIMOR_LESTE: \"Timor Leste\",\r\n TOGO: \"Togo\",\r\n TONGA: \"Tonga\",\r\n TRINIDAD_UND_TOBAGO: \"Trinidad und Tobago\",\r\n TSCHAD: \"Chad\",\r\n TUNESIEN: \"Tunisia\",\r\n TURKMENISTAN: \"Turkmenistan\",\r\n TUVALU: \"Tuvalu\",\r\n TÜRKEI: \"Turkey\",\r\n UGANDA: \"Uganda\",\r\n UKRAINE: \"Ukraine\",\r\n UNGARN: \"Hungary\",\r\n URUGUAY: \"Uruguay\",\r\n USBEKISTAN: \"Uzbekistan\",\r\n VANUATU: \"Vanuatu\",\r\n VATIKANSTADT: \"Vatican City\",\r\n VENEZUELA: \"Venezuela\",\r\n VEREINIGTE_STAATEN_VON_AMERIKA: \"United States of America\",\r\n VEREINIGTES_KÖNIGREICH: \"United Kingdom\",\r\n VIETNAM: \"Vietnam\",\r\n WEISSRUSSLAND: \"White Russian\",\r\n ZENTRALAFRIKANISCHE_REPUBLIK: \"Central African Republic\",\r\n ZYPERN: \"Cyprus\",\r\n SPRACHEN: {\r\n ALBANISCH: \"Albanian\",\r\n ARABISCH: \"Arabic\",\r\n BOSNISCH: \"Bosnian\",\r\n BULGARISCH: \"Bulgarian\",\r\n DEUTSCH: \"German\",\r\n ENGLISCH: \"English\",\r\n FRANZÖSISCH: \"French\",\r\n GRIECHISCH: \"Greek\",\r\n ITALIENISCH: \"Italian\",\r\n KROATISCH: \"Croatian\",\r\n LETTISCH: \"Latvian\",\r\n MAZEDONISCH: \"Macedonian\",\r\n NIEDERLÄNDISCH: \"Dutch\",\r\n PERSISCH: \"Persian\",\r\n POLNISCH: \"Polish\",\r\n PORTUGIESISCH: \"Portugese\",\r\n RUMÄNISCH: \"Romanian\",\r\n RUSSISCH: \"Russian\",\r\n SERBISCH: \"Serbian\",\r\n SLOWAKISCH: \"Slovak\",\r\n SLOWENISCH: \"Slovenian\",\r\n SPANISCH: \"Spanish\",\r\n TSCHECHISCH: \"Czech\",\r\n TÜRKISCH: \"Turkish\",\r\n UNGARISCH: \"Hungarian\",\r\n },\r\n};\r\nexport default TRANSLATIONS_EN_LAENDER;\r\n","export const TRANSLATIONS_DE_LAENDER = {\r\n DEUTSCHLAND: \"Deutschland\",\r\n POLEN: \"Polen\",\r\n TSCHECHIEN: \"Tschechien\",\r\n DEUTSCHLAND: \"Deutschland\",\r\n POLEN: \"Polen\",\r\n TSCHECHIEN: \"Tschechien\",\r\n RUMÄNIEN: \"Rumänien\",\r\n ALBANIEN: \"Albanien\",\r\n BULGARIEN: \"Bulgarien\",\r\n GRIECHENLAND: \"Griechenland\",\r\n ITALIEN: \"Italien\",\r\n KROATIEN: \"Kroatien\",\r\n LETTLAND: \"Lettland\",\r\n MAZEDONIEN: \"Mazedonien\",\r\n NIEDERLANDE: \"Niederlande\",\r\n PORTUGAL: \"Portugal\",\r\n FRANKREICH: \"Frankreich\",\r\n RUSSISCHE_FÖDERATION: \"Russische Förderation\",\r\n TÜRKEI: \"Türkei\",\r\n AFGHANISTAN: \" Afghanistan\",\r\n ÄGYPTEN: \"Ägypten\",\r\n ALGERIEN: \"Algerien\",\r\n ANDORRA: \"Andorra\",\r\n ANGOLA: \"Angola\",\r\n ANTIGUA_UND_BARBUDA: \"Antigua und Barbuda\",\r\n ARABISCHE_EMIRATE: \"Arabische Emirate\",\r\n ÄQUATORIALGUINEA: \"Äquatorialguinea\",\r\n ARGENTINIEN: \"Argentinien\",\r\n ARMENIEN: \"Armenien\",\r\n ASERBAIDSCHAN: \"Aserbaidschan\",\r\n ÄTHIOPIEN: \"Äthiopien\",\r\n AUSTRALIEN: \"Australien\",\r\n BAHAMAS: \"Bahamas\",\r\n BAHRAIN: \"Bahrain\",\r\n BANGLADESCH: \"Bangladesch\",\r\n BARBADOS: \"Barbados\",\r\n BELGIEN: \"Belgien\",\r\n BELIZE: \" Belize\",\r\n BENIN: \"Benin\",\r\n BHUTAN: \"Bhutan\",\r\n BOLIVIEN: \"Bolivien\",\r\n BOSNIEN_UND_HERZEGOWINA: \"Bosnien und Herzegowina\",\r\n BOTSUANA: \"Botsuana\",\r\n BRASILIEN: \"Brasilien\",\r\n BRUNEI_DARUSSALAM: \"Brunei Darussalam\",\r\n BULGARIEN: \"Bulgarien\",\r\n BURKINA_FASO: \"Burkina Faso\",\r\n BURUNDI: \"Burundi\",\r\n CABO_VERDE: \"Cabo Verde\",\r\n CHILE: \"Chile\",\r\n CHINA: \"China\",\r\n COOKINSELN: \"Cookinseln\",\r\n COSTA_RICA: \"Costa Rica\",\r\n CÔTE_DIVOIRE: \"Côte d’Ivoire\",\r\n DEMOKRATISCHE_VOLKSREPUBLIK_LAOS: \"Demokratische Volksrepublik Laos\",\r\n DOMINICA: \" Dominica\",\r\n DOMINIKANISCHE_REPUBLIK: \"Dominikanische Republik\",\r\n DSCHIBUTI: \"Dschibuti\",\r\n DÄNEMARK: \"Dänemark\",\r\n ECUADOR: \"Ecuador\",\r\n EL_SALVADOR: \"El Salvador\",\r\n ERITREA: \"Eritrea\",\r\n ESTLAND: \"Estland\",\r\n ESWATINI: \"Eswatini\",\r\n FIDSCHI: \"Fidschi\",\r\n FINNLAND: \"Finnland\",\r\n FÖDERIERTE_STAATEN_VON_MIKRONESIEN: \"Föderierte Staaten von Mikronesien\",\r\n GABUN: \"Gabun\",\r\n GAMBIA: \"Gambia\",\r\n GEORGIEN: \"Georgien\",\r\n GHANA: \"Ghana\",\r\n GRENADA: \"Grenada\",\r\n GUATEMALA: \"Guatemala\",\r\n GUINEA: \"Guinea\",\r\n GUINEA_BISSAU: \"Guinea-Bissau\",\r\n GUYANA: \"Guyana\",\r\n HAITI: \"Haiti\",\r\n HONDURAS: \"Honduras\",\r\n INDIEN: \"Indien\",\r\n INDONESIEN: \"Indonesien\",\r\n IRAK: \"Irak\",\r\n IRAN: \"Iran\",\r\n IRLAND: \"Irland\",\r\n ISLAND: \"Island\",\r\n ISRAEL: \"Israel\",\r\n ITALIEN: \"Italien\",\r\n JAMAIKA: \"Jamaika\",\r\n JAPAN: \"Japan\",\r\n JEMEN: \"Jemen\",\r\n JORDANIEN: \"Jordanien\",\r\n KAMBODSCHA: \"Kambodscha\",\r\n KAMERUN: \"Kamerun\",\r\n KANADA: \"Kanada\",\r\n KASACHSTAN: \"Kasachstan\",\r\n KATAR: \"Katar\",\r\n KENIA: \"Kenia\",\r\n KIRGISISTAN: \"Kirgisistan\",\r\n KIRIBATI: \"Kiribati\",\r\n KOLUMBIEN: \"Kolumbien\",\r\n KOMOREN: \"Komoren\",\r\n KONGO_DEMOKRATISCHE_REPUBLIK: \"Kongo, Demokratische Republik\",\r\n KONGO_REPUBLIK: \"Kongo, Republik\",\r\n KOREA_DEMOKRATISCHE_VOLKSREPUBLIK: \"Korea, Demokratische Volksrepublik\",\r\n KOREA_REPUBLIK: \"Korea, Republik\",\r\n KOSOVO: \"Kosovo\",\r\n KROATIEN: \"Kroatien\",\r\n KUBA: \"Kuba\",\r\n KUWAIT: \"Kuwait\",\r\n LESOTHO: \"Lesotho\",\r\n LETTLAND: \"Lettland\",\r\n LIBANON: \"Libanon\",\r\n LIBERIA: \"Liberia\",\r\n LIBYEN: \"Libyen\",\r\n LIECHTENSTEIN: \"Liechtenstein\",\r\n LITAUEN: \"Litauen\",\r\n LUXEMBURG: \"Luxemburg\",\r\n MADAGASKAR: \"Madagaskar\",\r\n MALAWI: \"Malawi\",\r\n MALAYSIA: \"Malaysia\",\r\n MALEDIVEN: \"Malediven\",\r\n MALI: \"Mali\",\r\n MALTA: \"Malta\",\r\n MAROKKO: \"Marokko\",\r\n MARSHALLINSELN: \"Marshallinseln\",\r\n MAURETANIEN: \"Mauretanien\",\r\n MAURITIUS: \"Mauritius\",\r\n MAZEDONIEN: \"Mazedonien\",\r\n MEXIKO: \"Mexiko\",\r\n MOLDAWISCH: \"Moldawisch\",\r\n MONACO: \"Monaco\",\r\n MONGOLEI: \"Mongolei\",\r\n MONTENEGRO: \"Montenegro\",\r\n MOSAMBIK: \"Mosambik\",\r\n MYANMAR: \"Myanmar\",\r\n NAMIBIA: \"Namibia\",\r\n NAURU: \"Nauru\",\r\n NEPAL: \"Nepal\",\r\n NEUSEELAND: \"Neuseeland\",\r\n NICARAGUA: \"Nicaragua\",\r\n NIGER: \"Niger\",\r\n NIGERIA: \"Nigeria\",\r\n NIUE: \"Niue\",\r\n NORWEGEN: \"Norwegen\",\r\n ÖSTERREICH: \"Österreich\",\r\n OMAN: \"Oman\",\r\n PAKISTAN: \"Pakistan\",\r\n PALAU: \"Palau\",\r\n PALÄSTINA: \"Palästina\",\r\n PANAMA: \"Panama\",\r\n PAPUA_NEUGUINEA: \"Papua-Neuguinea\",\r\n PARAGUAY: \"Paraguay\",\r\n PERU: \"Peru\",\r\n PHILIPPINEN: \"Philippinen\",\r\n POLEN: \"Polen\",\r\n RUANDA: \"Ruanda\",\r\n SALOMONEN: \"Salomonen\",\r\n SAMBIA: \"Sambia\",\r\n SAMOA: \"Samoa\",\r\n SAN_MARINO: \"San Marino\",\r\n SAUDI_ARABIEN: \"Saudi-Arabien\",\r\n SCHWEDEN: \"Schweden\",\r\n SCHWEIZ: \"Schweiz\",\r\n SENEGAL: \"Senegal\",\r\n SERBIEN: \"Serbien\",\r\n SEYCHELLEN: \"Seychellen\",\r\n SIERRA_LEONE: \"Sierra Leone\",\r\n SIMBABWE: \"Simbabwe\",\r\n SINGAPUR: \"Singapur\",\r\n SLOWAKEI: \"Slowakei\",\r\n SLOWENIEN: \"Slowenien\",\r\n SOMALIA: \"Somalia\",\r\n SPANIEN: \"Spanien\",\r\n SRI_LANKA: \"Sri Lanka\",\r\n ST_KITTS_UND_NEVIS: \"St. Kitts und Nevis\",\r\n ST_LUCIA: \"St. Lucia\",\r\n ST_VINCENT_UND_DIE_GRENADINEN: \"St. Vincent und die Grenadinen\",\r\n STAATENLOS: \"Staatenlos\",\r\n SUDAN: \"Sudan\",\r\n SURINAME: \"Suriname\",\r\n SYRIEN: \"Syrien\",\r\n SÃO_TOMÉ_UND_PRÍNCIPE: \"São Tomé und Príncipe\",\r\n SÜDAFRIKA: \"Südafrika\",\r\n SÜDSUDAN: \"Südsudan\",\r\n TADSCHIKISTAN: \"Tadschikistan\",\r\n TANSANIA: \"Tansania\",\r\n THAILAND: \"Thailand\",\r\n TIMOR_LESTE: \"Timor-Leste\",\r\n TOGO: \"Togo\",\r\n TONGA: \"Tonga\",\r\n TRINIDAD_UND_TOBAGO: \"Trinidad und Tobago\",\r\n TSCHAD: \"Tschad\",\r\n TUNESIEN: \"Tunesien\",\r\n TURKMENISTAN: \"Turkmenistan\",\r\n TUVALU: \"Tuvalu\",\r\n TÜRKEI: \"Türkei\",\r\n UGANDA: \"Uganda\",\r\n UKRAINE: \"Ukraine\",\r\n UNGARN: \"Ungarn\",\r\n URUGUAY: \"Uruguay\",\r\n USBEKISTAN: \"Usbekistan\",\r\n VANUATU: \"Vanuatu\",\r\n VATIKANSTADT: \"Vatikanstadt\",\r\n VENEZUELA: \"Venezuela\",\r\n VEREINIGTE_STAATEN_VON_AMERIKA: \"Vereinigte Staaten von Amerika\",\r\n VEREINIGTES_KÖNIGREICH: \"Vereinigtes Königreich\",\r\n VIETNAM: \"Vietnam\",\r\n WEISSRUSSLAND: \"Weißrussland\",\r\n ZENTRALAFRIKANISCHE_REPUBLIK: \" Zentralafrikanische Republik\",\r\n ZYPERN: \"Zypern\",\r\n SPRACHEN: {\r\n ALBANISCH: \"Albanisch\",\r\n ARABISCH: \"Arabisch\",\r\n BOSNISCH: \"Bosnisch\",\r\n BULGARISCH: \"Bulgarisch\",\r\n DEUTSCH: \"Deutsch\",\r\n ENGLISCH: \"Englisch\",\r\n FRANZÖSISCH: \"Französisch\",\r\n GRIECHISCH: \"Griechisch\",\r\n ITALIENISCH: \"Italienisch\",\r\n KROATISCH: \"Kroatisch\",\r\n LETTISCH: \"Lettisch\",\r\n MAZEDONISCH: \"Mazedonisch\",\r\n NIEDERLÄNDISCH: \"Niederländisch\",\r\n PERSISCH: \"Persisch\",\r\n POLNISCH: \"Polnisch\",\r\n PORTUGIESISCH: \"Portugiesisch\",\r\n RUMÄNISCH: \"Rumänisch\",\r\n RUSSISCH: \"Russisch\",\r\n SERBISCH: \"Serbisch\",\r\n SLOWAKISCH: \"Slowakisch\",\r\n SLOWENISCH: \"Slowenisch\",\r\n SPANISCH: \"Spanisch\",\r\n TSCHECHISCH: \"Tschechisch\",\r\n TÜRKISCH: \"Türkisch\",\r\n UNGARISCH: \"Ungarisch\",\r\n },\r\n};\r\nexport default TRANSLATIONS_DE_LAENDER;\r\n","export const TRANSLATIONS_EN_GEWERKE = {\r\n ABBRUCHARBEITEN: \"Demolition work\",\r\n AUFZUGBAUER: \"Elevator builder\",\r\n AUSBAU: \"Expansion\",\r\n AUSSENANLAGEN: \"Outdoor facilities\",\r\n BAUAUFZUG: \"Construction elevator\",\r\n BAUHERR: \"Builder\",\r\n BAULEITUNG: \"Site management\",\r\n BAULOGISTIK: \"Construction logistics\",\r\n BAUSTROM__BAUWASSER: \"Site electricity / site water\",\r\n BETON__UND_STAHLBAUER: \"Concrete and steel workers\",\r\n BLITZSCHUTZ: \"Lightning protection\",\r\n BMA__ELA: \"BMA / ELA\",\r\n BODENLEGER: \"Floor layer\",\r\n BRANDSCHUTZ: \"Fire Protection\",\r\n DACHDECKER: \"Roof Decker\",\r\n DOPPELBODEN: \"Raised floor\",\r\n EISENFLECHTER: \"Iron weaver\",\r\n ELEKTRO: \"Electro\",\r\n ESTRICHARBEITEN: \"Screed work\",\r\n FASSADE: \"Facade\",\r\n FENSTER_UND_TÜRBAUER: \"Window and door builders\",\r\n FLIESENLEGER: \"Tiler\",\r\n GENERALUNTERNEHMER: \"General contractor\",\r\n GERÜSTBAUER: \"Scaffolder\",\r\n HEIZUNG: \"Heater\",\r\n HOHLRAUMBODEN: \"Cavity floor\",\r\n HOLZBAU: \"Timber construction\",\r\n KORROSIONS__UND_OBERFLÄCHENSCHUTZ:\"Corrosion and surface protection\",\r\n LABORTECHNIK: \"Laboratory technology\", \r\n LÜFTUNGSANLAGEN: \"Ventilation systems\",\r\n MALER: \"Painter\",\r\n MAURER: \"Mason\",\r\n METALLBAU: \"Metal construction\",\r\n MSR__GEBÄUDEAUTOMATION: \"MSR / building automation\",\r\n PLANER: \"Planner\",\r\n PUTZER: \"Cleaner\",\r\n RLT: \"RLT\",\r\n ROHBAU: \"Shell\",\r\n RESTAURATOR: \"Restorer\",\r\n SANITÄR: \"Sanitary\",\r\n SCHLOSSER: \"Locksmith\",\r\n SCHOTTUNG: \"Containment\",\r\n SICHERHEIT: \"Safety\",\r\n SPEZIALTIEFBAU: \"Foundation engineering\",\r\n SPRINKLER: \"Sprinkler\",\r\n STAHLTÜRENBAUER: \"Steel door builder\",\r\n STEINMETZ: \"Stonemason\",\r\n TEPPICHLEGER: \"Carpet fitter\",\r\n TGA: \"TGA\",\r\n TIEFGARAGENDÄMMUNG: \"Garage insulation\",\r\n TISCHLERARBEITEN: \"Carpentry\",\r\n TROCKENBAU: \"Drywall\",\r\n VERMESSER: \"Surveyor\",\r\n WDVS: \"WDVS\",\r\n SONSTIGE: \"Other\",\r\n};\r\nexport default TRANSLATIONS_EN_GEWERKE;","export const TRANSLATIONS_DE_GEWERKE = {\r\n ABBRUCHARBEITEN: \"Abbrucharbeiten\",\r\n AUFZUGBAUER: \"Aufzugbauer*in\",\r\n AUSBAU: \"Ausbau\",\r\n AUSSENANLAGEN: \"Außenanlagen\",\r\n BAUAUFZUG: \"Bauaufzug\",\r\n BAUHERR: \"Bauherr*in\",\r\n BAULEITUNG: \"Bauleitung\",\r\n BAULOGISTIK: \"Baulogistik\",\r\n BAUSTROM__BAUWASSER: \"Baustrom / Bauwasser\",\r\n BETON__UND_STAHLBAUER: \"Beton- und Stahlbauer\",\r\n BLITZSCHUTZ: \"Blitzschutz\",\r\n BMA__ELA: \"BMA / ELA\",\r\n BODENLEGER: \"Bodenleger*in\",\r\n BRANDSCHUTZ: \"Brandschutz\",\r\n DACHDECKER: \"Dachdecker*in\",\r\n DOPPELBODEN: \"Doppelboden\",\r\n ELEKTRO: \"Elektro\",\r\n EISENFLECHTER: \"Eisenflechter\",\r\n ESTRICHARBEITEN: \"Estricharbeiten\",\r\n FASSADE: \"Fassade\",\r\n FENSTER_UND_TÜRBAUER: \"Fenster und Türbauer\",\r\n FLIESENLEGER: \"Fliesenleger*in\",\r\n GENERALUNTERNEHMER: \"Generalunternehmung\",\r\n GERÜSTBAUER: \"Gerüstbauer*in\",\r\n HEIZUNG: \"Heizung\",\r\n HOHLRAUMBODEN: \"Hohlraumboden\",\r\n HOLZBAU: \"Holzbau\",\r\n KORROSIONS__UND_OBERFLÄCHENSCHUTZ: \"Korrisons- und Oberflächenschutz\",\r\n LABORTECHNIK: \"Labortechnik\",\r\n LÜFTUNGSANLAGEN: \"Lüftungsanlagen\",\r\n MALER: \"Maler*in\",\r\n MAURER: \"Maurer*in\",\r\n METALLBAU: \"Metallbau\",\r\n MSR__GEBÄUDEAUTOMATION: \"MSR / Gebäudeautomation\",\r\n PLANER: \"Planer*in\",\r\n PUTZER: \"Putzer*in\",\r\n RLT: \"RLT\",\r\n ROHBAU: \"Rohbau\",\r\n RESTAURATOR: \"Restaurator*in\",\r\n SANITÄR: \"Sanitär\",\r\n SCHLOSSER: \"Schlosser*in\",\r\n SCHOTTUNG: \"Schottung\",\r\n SICHERHEIT: \"Sicherheit\",\r\n SPEZIALTIEFBAU: \"Spezialtiefbau\",\r\n SPRINKLER: \"Sprinkler\",\r\n STAHLTÜRENBAUER: \"Stahltürenbauer*in\",\r\n STEINMETZ: \"Steinmetz\",\r\n TEPPICHLEGER: \"Teppichleger*in\",\r\n TGA: \"TGA\",\r\n TIEFGARAGENDÄMMUNG: \"Tiefgaragendämmung\",\r\n TISCHLERARBEITEN: \"Tischlerarbeiten\",\r\n TROCKENBAU: \"Trockenbau\",\r\n VERMESSER: \"Vermesser*in\",\r\n WDVS: \"WDVS\",\r\n SONSTIGE: \"Sonstige\",\r\n};\r\nexport default TRANSLATIONS_DE_GEWERKE;\r\n","export const TRANSLATIONS_EN_DASHBOARD = {\r\n AKTIVE_AUSWEISE: \"Active permits total\",\r\n ANWESENHEIT_GESAMT: \"Total attendance\",\r\n ANWESENHEIT_IM_MONATSVERLAUF: \"Attendance over the course of the month\",\r\n ANWESENHEIT_IM_TAGESABLAUF: \"Attendace over the course of a day\",\r\n ANWESENHEIT_IM_WOCHENVERLAUF: \"Attendance over the course of a week\",\r\n ANWESENHEIT_MITARBEITENE_MO_FR: \"Ø-Attendance employees (Mo - Fr)\",\r\n ANWESENHEIT_MITARBEITENE_MO_FR_TOP_5:\r\n \"Ø-Attendance employees Mo - Fr (Top 5 companies)\",\r\n ANWESENHEIT_MITARBEITENDE_TOP_10: \"Ø-Attendance employees (Top 10 companies)\",\r\n ANWESENHEIT_MITARBEITENDE_TOP_5: \"Attendance employees (Top 5 companies)\",\r\n ANWESENHEIT_OHNE_WOCHENENDE: \"Ø-Attendance employees (without weekends)\",\r\n ANZAHL_MITARBEITERNDE: \"Number employees\",\r\n APRIL: \"April\",\r\n AUGUST: \"August\",\r\n AUSWERTUNGEN: \"Reports\",\r\n DATEN_IN_KUERZE: \"Data available soon\",\r\n DATEN_NICHT_VERFUEGBAR: \"No data available\",\r\n DECEMBER: \"December\",\r\n EINSTELLUNGEN: \"Settings\",\r\n EMAIL: \"Mail address\",\r\n EXPORT_TOAST:\r\n \"Download has been started as a background operation during your work in ALGO. Please do not close ALGO until the download is completed. \",\r\n FEBRUARY: \"February\",\r\n FEHLDRUCKE: \"of them {{anzahl}} wrong prints \",\r\n FRIDAY: \"Fri\",\r\n GESPERRTE_AUSWEISE_GESAMT: \"Suspended permits total\",\r\n GESPERRTE_MITARBEITENDE_TOP_10: \"Suspended employees (Top 10 companies)\",\r\n GESPERRTE_MITARBEITER_GESAMT: \"Suspended employees total\",\r\n JA: \"Yes\",\r\n JANUARY: \"Januaray\",\r\n JUNE: \"June\",\r\n JULY: \"July\",\r\n LEAN_ANWESENHEIT: \"LEAN attendance target/actual\",\r\n LEAN_SOLL_ANWESENHEIT: \"Expected attendance LEAN\",\r\n KEIN_PROJEKTBETEILIGTER: \"No project participant configured\",\r\n KW: \"CW\",\r\n MARCH: \"March\",\r\n MAY: \"May\",\r\n MONAT: \"Month\",\r\n MONATS_AUSWERTUNG_EXPORT: \"Export monthly report\",\r\n MONDAY: \"Mon\",\r\n NEIN: \"No\",\r\n NEU_AUSGESTELLTE_AUSWEISE: \"Newly issued permits total\",\r\n NOVEMBER: \"November\",\r\n OCTOBER: \"October\",\r\n PROJEKTBETEILITGEN_BEARBEITEN: \"Edit project participant\",\r\n PROJEKTBETEILIGTER_HINZUFUEGEN: \"Add project participant\",\r\n PROJEKTBETEILIGTER_LOESCHEN: \"Delete project participant\",\r\n PROJEKTBETEILIGTEN_LOESCHEN_MODAL:\r\n \"Do you really want to delete this project participant?\",\r\n TAG: \"Day\",\r\n TAGE: \"Days\",\r\n TAGES_AUSWERTUNG_EXPORT: \"Export daily report\",\r\n THURSDAY: \"Thur\",\r\n TUESDAY: \"Tue\",\r\n SATURDAY: \"Sat\",\r\n SEPTEMBER: \"September\",\r\n SPERRGRUENDE_MONATSVERLAUF_TOP_5:\r\n \"Reasons for suspension over the course of the month (Top 5)\",\r\n SPERRGRUENDE_TAGESABLAUF_TOP_5:\r\n \"Reasons of suspension over the course of a day (Top 5)\",\r\n SPERRGRUENDE_WOCHENVERLAUF_TOP_5:\r\n \"Reasons of suspension over the course of a week (Top 5)\",\r\n SUNDAY: \"Sun\",\r\n WEDNESDAY: \"Wed\",\r\n WOCHE: \"Week\",\r\n WOCHEN_AUSWERTUNG_EXPORT: \"Export weekly report\",\r\n UHRZEIT: \"Time\",\r\n};\r\nexport default TRANSLATIONS_EN_DASHBOARD;\r\n","export const TRANSLATIONS_DE_DASHBOARD = {\r\n AKTIVE_AUSWEISE: \"Aktive Ausweise gesamt\",\r\n ANWESENHEIT_GESAMT: \"Anwesenheit gesamt\",\r\n ANWESENHEIT_IM_MONATSVERLAUF: \"Anwesenheit im Monatsverlauf\",\r\n ANWESENHEIT_IM_TAGESABLAUF: \"Anwesenheit im Tagesablauf\",\r\n ANWESENHEIT_IM_WOCHENVERLAUF: \"Anwesenheit im Wochenverlauf\",\r\n ANWESENHEIT_MITARBEITENE_MO_FR: \"Ø-Anwesenheit Mitarbeitende (Mo - Fr)\",\r\n ANWESENHEIT_MITARBEITENE_MO_FR_TOP_5:\r\n \"Ø-Anwesenheit Mitarbeitende Mo - Fr (Top 5 Firmen\",\r\n ANWESENHEIT_MITARBEITENDE_TOP_10:\r\n \"Ø-Anwesenheit Mitarbeitende (Top 10 Firmen)\",\r\n ANWESENHEIT_MITARBEITENDE_TOP_5: \"Anwesenheit Mitarbeitende (Top 5 Firmen)\",\r\n ANWESENHEIT_OHNE_WOCHENENDE: \"Ø-Anwesenheit (ohne Wochenende)\",\r\n ANZAHL_MITARBEITERNDE: \"Anzahl Mitarbeitende\",\r\n APRIL: \"April\",\r\n AUGUST: \"August\",\r\n AUSWERTUNGEN: \"Auswertungen\",\r\n DATEN_IN_KUERZE: \"Daten in Kürze verfügbar\",\r\n DATEN_NICHT_VERFUEGBAR: \"Keine Daten verfügbar.\",\r\n DECEMBER: \"Dezember\",\r\n EINSTELLUNGEN: \"Einstellungen\",\r\n EMAIL: \"Email-Adresse\",\r\n EXPORT_TOAST:\r\n \"Der Download wurde gestartet und läuft im Hintergrund während Ihrer Tätigkeiten in ALGO weiter. Bitte schließen Sie derweil ALGO nicht.\",\r\n FEBRUARY: \"Februar\",\r\n FEHLDRUCKE: \"davon {{anzahl}} Fehldrucke \",\r\n FRIDAY: \"Fr\",\r\n GESPERRTE_AUSWEISE_GESAMT: \"Gesperrte Ausweise gesamt\",\r\n GESPERRTE_MITARBEITENDE_TOP_10: \"Gesperrte Mitarbeitende (Top 10 Firmen)\",\r\n GESPERRTE_MITARBEITER_GESAMT: \"Gesperrte Mitarbeiter gesamt\",\r\n JA: \"Ja\",\r\n JANUARY: \"Januar\",\r\n JUNE: \"Juni\",\r\n JULY: \"Juli\",\r\n LEAN_ANWESENHEIT: \"LEAN Anwesenheit Soll/Ist\",\r\n LEAN_SOLL_ANWESENHEIT: \"Sollanwesenheit LEAN\",\r\n KEIN_PROJEKTBETEILIGTER: \"Keine Projektbeteiligte Person konfiguriert.\",\r\n KW: \"KW\",\r\n MARCH: \"März\",\r\n MAY: \"Mai\",\r\n MONAT: \"Monat\",\r\n MONATS_AUSWERTUNG_EXPORT: \"Monatsauswertung exportieren\",\r\n MONDAY: \"Mo\",\r\n NEIN: \"Nein\",\r\n NEU_AUSGESTELLTE_AUSWEISE: \"Neu ausgestellte Ausweise gesamt\",\r\n NOVEMBER: \"November\",\r\n OCTOBER: \"Oktober\",\r\n PROJEKTBETEILITGEN_BEARBEITEN: \"Projektbeteiligte Person aktualisieren\",\r\n PROJEKTBETEILIGTER_HINZUFUEGEN: \"Projektbeteiligte Person hinzufügen\",\r\n PROJEKTBETEILIGTER_LOESCHEN: \"Projektbeteiligte Person löschen\",\r\n PROJEKTBETEILIGTEN_LOESCHEN_MODAL:\r\n \"Wollen Sie diese projektbeteiligte Person wirklich löschen?\",\r\n TAG: \"Tag\",\r\n TAGE: \"Tage\",\r\n TAGES_AUSWERTUNG_EXPORT: \"Tagesauswertung exportieren\",\r\n THURSDAY: \"Do\",\r\n TUESDAY: \"Di\",\r\n SATURDAY: \"Sa\",\r\n SEPTEMBER: \"September\",\r\n SPERRGRUENDE_MONATSVERLAUF_TOP_5:\r\n \"Sperrgründe im Monatsverlauf (Top 5)\",\r\n SPERRGRUENDE_TAGESABLAUF_TOP_5: \"Sperrgründe im Tagesablauf (Top 5)\",\r\n SPERRGRUENDE_WOCHENVERLAUF_TOP_5:\r\n \"Sperrgründe im Wochenverlauf (Top 5)\",\r\n SUNDAY: \"So\",\r\n WEDNESDAY: \"Mi\",\r\n WOCHE: \"Woche\",\r\n WOCHEN_AUSWERTUNG_EXPORT: \"Wochenauswertung exportieren\",\r\n UHRZEIT: \"Uhrzeit\",\r\n};\r\nexport default TRANSLATIONS_DE_DASHBOARD;\r\n","export const TRANSLATIONS_EN_CONTAINER = {\r\n ABBRECHEN: \"Cancel\",\r\n ABFRAGE_AUSSTATTUNG_ARCHIVIEREN:\r\n \"Are you sure you want to delete the equipment?\",\r\n ABFRAGE_BUCHUNG_STONIEREN: \"Are you sure you want to cancel the booking?\",\r\n ABFRAGE_BUCHUNGSUNTERLAGE_ARCHIVIEREN:\r\n \"Are you sure you want to delete the booking document?\",\r\n ABFRAGE_CONTAINER_ARCHIVIEREN:\r\n \"Are you sure you want to delete the container?\",\r\n ABFRAGE_CONTAINERBURG_ARCHIVIEREN:\r\n \"Are you sure you want to delete the container castle?\",\r\n ABFRAGE_CONTAINER_BUCHUNGSUNTERLAGE_ARCHIVIEREN:\r\n \"Are you sure you want to delete the container booking document?\",\r\n ABFRAGE_CONTAINERUNTERLAGE_ARCHIVIEREN:\r\n \"Are you sure you want to delete the document?\",\r\n ABFRAGE_KUENDIGUNG_BESTAETIGEN:\r\n \"Do you really want to cancel the following containers? Then confirm this by clicking on the button.\",\r\n ABRECHNUNGSDETAILS: \"Accounting details\",\r\n ABRECHNUNGSDETAILS_BUCHUNGEN:\r\n \"Booking of {{containerAnzahl}} containers in the period {{buchungVon}} - {{buchungBis}}\",\r\n ABRECHNUNGSDETAILS_EXPORTIEREN: \"Export accounting details\",\r\n ABRECHNUNG_UEBER_BAULOGISTIK: \"Settlement via construction logistician\",\r\n AKTUELL_NICHT_GENEHMIGEN: \"Not approved actually\",\r\n ALLE: \"All\",\r\n ANSPRECHPARTNER_BUCHUNG: \"Contact person of booking\",\r\n ANSPRECHPARTNER_AKTUALISIEREN: \"Update contact person\",\r\n ANSPRECHPARTNER_ERFOLGREICH_AKTUALISIERT:\r\n \"Contact person was updated successfully\",\r\n ANSPRECHPARTNER_KONFIGURIEREN: \"Contact person\",\r\n ANZAHL: \"Count\",\r\n ANZAHL_KOPIEN: \"Copy of Count\",\r\n AUSGEWAEHLTE_UNTERLAGE: \"Selected document\",\r\n AUSSTATTUNG: \"Equipment\",\r\n AUSSTATTUNG_ANZAHL_EINGEBEN: \"The number of equipment can be entered here.\",\r\n AUSSTATTUNG_AKTUALISIEREN: \"Update equipment\",\r\n AUSSTATTUNG_ARCHIVIEREN: \"Delete equipment\",\r\n AUSSTATTUNG_ERFOLGREICH_AKTUALISIERT: \"Equipment was updated succesfully.\",\r\n AUSSTATTUNG_ERFOLGREICH_ARCHIVIERT: \"Equipment was deleted succesfully.\",\r\n AUSSTATTUNG_ERFOLGREICH_ERSTELLT: \"Equipment was created successfully.\",\r\n AUSSTATTUNG_ERSTELLEN: \"Create Equipment\",\r\n AUSSTATTUNG_ID_NICHT_GEFUNDEN: \"Id of equipment couldn't found.\",\r\n AUSSTATTUNG_INFO: \"Information of equipment\",\r\n AUSSTATTUNG_KONFIGURIEREN: \"Equipment\",\r\n AUSSTATTUNG_LOESCHEN: \"Delete equipment\",\r\n AUSSTATTUNG_NAME: \"Equiptment name\",\r\n AUSSTATTUNGSANZAHL: \"Number of equipment\",\r\n AUSSTATTUNGSANZAHL_GESAMT: \"Total number of equipment configured\",\r\n AUSSTATTUNGSANZAHL_VERGEBEN: \"Total number of equipment assigned\",\r\n BENUTZER_MAIL: \"Mail\",\r\n BENUTZER_NACHNAME: \"Lastname\",\r\n BENUTZER_TELEFONNUMMMER: \"Phonenumber\",\r\n BENUTZER_TELEFONNUMMER_EINGEBEN: \"Please enter your phone number\",\r\n BENUTZER_UNTERNEHMEN: \"Company\",\r\n BENUTZER_VORNAME: \"Firstname\",\r\n BESTAETIGE_AENDERUNGEN: \"Please confirm the change of booking\",\r\n BEREITS_GENEHMIGT: \"Container already approved\",\r\n BEREITS_GEKUENDIGT: \"Container already canceled\",\r\n BILD: \"Image\",\r\n BITTE_AUSSTATTUNGEN_WAEHLEN: \"Please select equipment\",\r\n BITTE_CONTAINERBURG_WAEHLEN: \"Please select container castle\",\r\n BITTE_CONTAINER_WAEHLEN: \"Please select container\",\r\n BITTE_CONTAINERTYP_WAEHLEN: \"Please select container type\",\r\n BLOCKIERT: \"Blocked\",\r\n BUCHUNG: \"Booking\",\r\n BUCHUNG_BEARBEITEN: \"Edit the period of booking\",\r\n BUCHUNG_BESTAETIGEN: \"Confirm the booking\",\r\n BUCHUNG_BIS: \"End of booking\",\r\n BUCHUNG_BIS_AUSWAEHLEN: \"Select end of booking\",\r\n BUCHUNG_BIS_GETRENNT: \"End of
booking\",\r\n BUCHUNG_CONTAINER: \"Booking of container\",\r\n BUCHUNG_DETAILS: \"Details of booking\",\r\n BUCHUNG_ERFOLGREICH_AKTUALISIERT: \"Booking was updated successfully\",\r\n BUCHUNG_ERFOLGREICH_BESTAETIGT: \"Booking was confirmed successfully.\",\r\n BUCHUNG_ERFOLGREICH_ERSTELLT: \"Booking was created successfully.\",\r\n BUCHUNG_ERFOLGREICH_GENEHMIGT: \"Booking was approved successfully.\",\r\n BUCHUNG_ERFOLGREICH_STORNIERT: \"Booking was canceled successfully.\",\r\n BUCHUNG_ERFOLGREICH_VERLAENGERT: \"Booking was extended succesfully.\",\r\n BUCHUNG_ERSTELLEN: \"Create book\",\r\n BUCHUNG_GENEHMIGEN: \"Pleas confirm the request of booking\",\r\n BUCHUNG_KUENDIGEN: \"Cancel booking\",\r\n BUCHUNG_STORNIEREN: \"Cancel the booking\",\r\n BUCHUNG_VERLAENGERN: \"Extend booking\",\r\n BUCHUNG_VON: \"Begin of booking\",\r\n BUCHUNG_VON_AUSWAEHLEN: \"Select begin of booking\",\r\n BUCHUNG_VON_GETRENNT: \"Begin of
booking\",\r\n BUCHUNGEN: \"Bookings\",\r\n BUCHUNGEN_ANZEIGEN_TITLE: \"Show bookings\",\r\n BUCHUNGEN_UEBERSICHT: \"Overview of bookings\",\r\n BUCHUNGS_ID_NICHT_GEFUNDEN: \"Id of booking not found\",\r\n BUCHUNGS_UEBERSICHT: \"Overview of bookings\",\r\n BUCHUNGSNAME: \"Booking name\",\r\n BUCHUNGSANFRAGE_ABSCHICKEN: \"Send the booking request\",\r\n BUCHUNGSANFRAGE_ERFOLGREICH_ERSTELLT:\r\n \"Booking request was created successfully.\",\r\n BUCHUNGSANFRAGE_ERSTELLEN: \"Create a booking request\",\r\n BUCHUNGSANFRAGEN_VERWALTEN: \"Booking request administer\",\r\n BUCHUNGSDATEN: \"Booking data\",\r\n BUCHUNGSDATUM_GETRENNT: \"Booking
date\",\r\n BUCHUNGSTATUS: \"State of booking\",\r\n BUCHUNGSTATUS_GETRENNT: \"State of
booking\",\r\n BUCHUNGSUNTERLAGE_AENDERN: \"Change document of booking\",\r\n BUCHUNGSUNTERLAGE_ARCHIVIEREN: \"Delete document of booking\",\r\n BUCHUNGSUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Booking document was updated successfully.\",\r\n BUCHUNGSUNTERLAGE_ERFOLGREICH_ARCHIVIERT:\r\n \"Booking document was deleted successfully.\",\r\n BUCHUNGSUNTERLAGE_ERFOLGREICH_ERSTELLT:\r\n \"Booking document was created successfully.\",\r\n BUCHUNGSUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Booking document was updated successfully.\",\r\n BUCHUNGSUNTERLAGEN: \"Booking documents\",\r\n BUCHUNGSUNTERLAGE_HINZUFUEGEN: \"Add document of container\",\r\n BUCHUNGSUNTERLAGEN_KONFIGURIEREN: \"Booking documents\",\r\n BUCHUNGSZEITRAUM: \"Period of booking\",\r\n CONTAINER_AKTUALISIEREN: \"Change shipping\",\r\n CONTAINER_BEZEICHNUNG: \"Container designation\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN_KONFIGURIEREN: \"Container booking documents\",\r\n CONTAINER_BUCHEN: \"Book a shipping\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN: \"Container booking documents\",\r\n CONTAINER_BUCHUNGSUNTERLAGE_ARCHIVIEREN:\r\n \"Archive container booking document\",\r\n CONTAINER_BUCHUNGSUNTERLAGE_AENDERN: \"Change container booking document\",\r\n CONTAINER_BUCHUNGSUNTERLAGE_ANZEIGEN: \"Show container booking document\",\r\n CONTAINERBUCHUNGSUNTERLAGE_ERFOLGREICH_ARCHIVIERT:\r\n \"Container booking document successfully deleted\",\r\n CONTAINERBUCHUNGSUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Container booking document successfully updated\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN_KONFIGURIEREN: \"Container booking documents\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN_KONFIGURIEREN_TITLE:\r\n \"Configure container booking documents\",\r\n CONTAINER_DATEN: \"Data of shipping\",\r\n CONTAINER_DETAILS: \"Shipping details\",\r\n CONTAINER_ENTFERNTER_EBENE: \"Delete container of removed level\",\r\n CONTAINER_ERFOLGREICH_AKTUALISIERT: \"Container was updated successfully\",\r\n CONTAINER_ERFOLGREICH_ARCHIVIERT: \"Container was deleted successfully\",\r\n CONTAINER_ERFOLGREICH_ERSTELLT: \"Container was created successfully.\",\r\n CONTAINER_ERFOLGREICH_GEKUENDIGT: \"Container was termained successfully\",\r\n CONTAINER_ARCHIVIEREN: \"Delete container\",\r\n CONTAINER_HINZUFUEGEN: \"Add container\",\r\n CONTAINER_GENEHMIGEN: \"Approve the container\",\r\n CONTAINER_KONFIGURIEREN: \"Container- administration\",\r\n CONTAINER_KUENDIGEN: \"Terminate containers\",\r\n CONTAINER_MODUL: \"Container module\",\r\n CONTAINER_NAME: \"Container name\",\r\n CONTAINER_NAME_GETRENNT: \"Container
name\",\r\n CONTAINER_ID_NICHT_GEFUNDEN: \"Container id not found.\",\r\n CONTAINER_STATUS_GETRENNT: \"State of
container\",\r\n CONTAINER_TYP: \"Type of container\",\r\n CONTAINER_TYP_GETRENNT: \"Type of
container\",\r\n CONTAINER_UEBERSICHT: \"Overview of container\",\r\n CONTAINER_UNTERLAGEN_KONFIGURIEREN: \"Container documents\",\r\n CONTAINER_VERLAENGERN: \"Extend container\",\r\n CONTAINERANZAHL: \"Count of container\",\r\n CONTAINERANZAHL_GETRENNT: \"Count of
container\",\r\n CONTAINERBILD_ANZEIGEN: \"Show image\",\r\n CONTAINERBUCHUNGEN: \"Container bookings\",\r\n CONTAINERBURG: \"Container castle\",\r\n CONTAINERBURG_AKTUALISIEREN: \"Update of container castle\",\r\n CONTAINERBURG_ARCHIVIEREN: \"Delete of container castle\",\r\n CONTAINERBURG_BEZEICHNUNG: \"Label of container castle\",\r\n CONTAINERBURG_ERFOLGREICH_AKTUALISIERT:\r\n \"Container castle was update successfully\",\r\n CONTAINERBURG_ERFOLGREICH_ARCHIVIERT:\r\n \"Container castle was deleted successfully\",\r\n CONTAINERBURG_ERFOLGREICH_ERSTELLT:\r\n \"Container castle was created successfully.\",\r\n CONTAINERBURG_EXPORTIEREN: \"Export of container castle\",\r\n CONTAINERBURG_HINZUFUEGEN: \"Add container castle\",\r\n CONTAINERBURG_ID_NICHT_GEFUNDEN: \"Container castle id not found\",\r\n CONTAINERBURG_KONFIGURIEREN: \"Container castle administration\",\r\n CONTAINERBURG_NUMMER: \"Number\",\r\n CONTAINERBURGEN: \"Container castle\",\r\n CONTAINEREINHEIT: \"Container unit\",\r\n CONTAINER_LOESCHEN: \"Delete container\",\r\n CONTAINER_NAME: \"Containername\",\r\n CONTAINERNAME: \"Containername\",\r\n CONTAINERNUMMER_LIEFERANT: \"Container number (Supplier)\",\r\n CONTAINERTYP: \"Container type\",\r\n CONTAINERUNTERLAGEN_AENDERN: \"Edit container document\",\r\n CONTAINERUNTERLAGE_AKTUALISIEREN: \"Update container document\",\r\n CONTAINERUNTERLAGE_ANZEIGEN: \"Show container document\",\r\n CONTAINERUNTERLAGE_ARCHIVIEREN: \"Archive container docucment\",\r\n CONTAINERUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Container document was updated successfully.\",\r\n CONTAINERUNTERLAGE_ERFOLGREICH_ARCHIVIERT:\r\n \"Container document was deleted successfully\",\r\n CONTAINERUNTERLAGE_ERFOLGREICH_ERSTELLT:\r\n \"Container document was created successfully.\",\r\n CONTAINERUNTERLAGE_HINZUFUEGEN: \"Add container document\",\r\n DATEI_AUSWAEHLEN: \"Choose file\",\r\n DOKUMENT: \"Document\",\r\n DOKUMENT_ARCHIVIEREN: \"Delete document\",\r\n DOKUMENT_MODAL_ARCHIVIEREN: \"Would you like to delete the document really?\",\r\n DOWNLOADNAME: \"Downloadname\",\r\n EBENE: \"Levels\",\r\n EBENEN_ANZAHL: \"Count of levels\",\r\n EINSTELLUNGEN: \"Settings\",\r\n EMAIL: \"Emailadress\",\r\n EUFECB_ERFOLGREICH_ERSTELLT:\r\n \"Container booking document successfully created\",\r\n EXPORT_TOAST:\r\n \"Download has been started as a background operation during your work in ALGO. Please do not close ALGO until the download is completed. \",\r\n FEHLENDE_RECHTE: \"Missing permissions\",\r\n FREI: \"Free\",\r\n GENEHMIGE_CONTAINER: \"Approve selected Container\",\r\n GRUENDE_DER_AENDERUNG: \"Reasons of change\",\r\n GRUENDE_DER_BUCHUNG: \"Reasons of booking\",\r\n GRUENDE_DER_STORNIERUNG: \"Reasons of cancel\",\r\n GRUENDE_DER_VERLAENGERUNG: \"Reasons of extend\",\r\n HILFE_TEXT_BLAU: \"Sanitary container\",\r\n HILFE_TEXT_GELB:\r\n \"Container has already been canceled and will be free again\",\r\n HILFE_TEXT_GRUEN: \"Container is freely available\",\r\n HILFE_TEXT_LINKS: \"Left side of the plane\",\r\n HILFE_TEXT_ROT: \"Booked containers\",\r\n HILFE_TEXT_RECHTS: \"Right side of the plane\",\r\n HOCHGELADENE_UNTERLAGE: \"Uploaded document\",\r\n INFO_TITEL: \"Information of container castle view\",\r\n INVALID_FORM: \"Enter fill all input fields.\",\r\n JA: \"Yes\",\r\n KEIN_BILD_VORHANDEN: \"No picture available\",\r\n KEIN_PDF_FORMAT: \"Please upload a document by pdf format\",\r\n KEINE_AUSSTATTUNG: \"No equipment available\",\r\n KEINE_CONTAINER_ZU_GENEHMIGEN: \"No containers to approve\",\r\n KEINE_CONTAINER_ZU_KUENDIGEN: \"No containers to cancel\",\r\n KEINE_CONTAINER_ZU_VERLAENGERN: \"No container to extend\",\r\n KEINE_SONDERAUSSTATTUNG: \"No special equipment booked\",\r\n KEINE_UNTERLAGEN: \"No documents available\",\r\n KEINE_VORLAGE_HOCHGELADEN: \"No template was uploaded\",\r\n KONTAKT: \"Contact\",\r\n KONTAKT_DATEN: \"Contact details\",\r\n KONTAKTDATEN: \"Contact details of container management\",\r\n KONTAKTDATEN_BUCHUNG: \"Contact details of container\",\r\n KONTAKTDATEN_GETRENNT: \"Contact
details\",\r\n KONTAKTPERSON: \"Person of Contact\",\r\n KUENDIGUNG_BESTAETIGEN: \"Accept termination\",\r\n KUENGIGUNG_BIS_AUSWAEHLEN: \"Termination until\",\r\n KUENDIGUNGSTERMIN: \"Termination date\",\r\n LEISTUNGSVERZEICHNIS_NUMMER: \"BOQ-No\",\r\n LINKE_SEITE: \"Left page\",\r\n LINKER_NACHBAR: \"Left neighbour\",\r\n LV_NUMMER: \"LV-No.\",\r\n MAIL_AN_BENUTZER: \"Mail on person of booking\",\r\n MIETGEBUEHREN: \"Rental fees\",\r\n MODULVERANTWORTLICHER_MAIL: \"Mail of responsible\",\r\n MODULVERANTWORTLICHER_TELEFONNUMMER: \"Phonenumber of responsible\",\r\n NACHRICHT: \"Message\",\r\n NACHRICHT_MAIL:\r\n \"The message is sent with the email and is considered information for the person making the booking or the person responsible for the module\",\r\n NACHRICHT_ZUR_GENEHMIGUNG: \"Message of approve\",\r\n NACHRICHT_ZUR_KUENDIGUNG: \"Message of canceled\",\r\n NACHRICHT_ZUR_VERLAENGERUNG: \"Message for extension\",\r\n NAME: \"Name\",\r\n NAME_EINGEBEN: \"Please enter the name\",\r\n NEIN: \"No\",\r\n EUFEB_ANZEIGEN: \"Show booking document as a PDF file\",\r\n EUFECB_ANZEIGEN: \"Show document of container booking as a PDF file\",\r\n EUFEB_HOCHLADEN: \"Upload booking document as a PDF file\",\r\n EUFECB_HOCHLADEN: \"Upload document of container booking as a PDF file\",\r\n PERSONENANZAHL: \"Count of people\",\r\n PERSONENANZAHL_GETRENNT: \"Count of
people\",\r\n RECHNUNGSADRESSE: \"Billing address\",\r\n RECHNUNGSDATEN: \"Data of billing\",\r\n RECHNUNG_PER_MAIL: \"Receive invoice by mail\",\r\n RECHNUNGS_STRASSE: \"Street\",\r\n RECHNUNGS_STADT: \"City\",\r\n RECHNUNGS_POSTLEITZAHL: \"Postal code\",\r\n RECHTE_SEITE: \"Right page\",\r\n RECHTER_NACHBAR: \"Right neighbour\",\r\n SEITE: \"Page\",\r\n SONDERAUSSTATTUNG_INFO_CONTENT:\r\n \"The following equipment is special equipment and is associated with costs:\",\r\n STANDARD_AUSSTATTUNG_INFO_CONTENT:\r\n \"The following equipment is standard equipment and is therefore available for all containers: \",\r\n SONDERAUSSTATTUNG_GETRENNT: \"Special- equipment?\",\r\n STATUS: \"Status\",\r\n STATUS_AUSWAEHLEN: \"Please select state\",\r\n SONDERAUSSTATTUNG: \"Special equipment\",\r\n TELEFONNUMMER: \"Phonenumber\",\r\n TYP: \"Typ\",\r\n UNTERNEHMEN: \"Company\",\r\n UNTERLAGE_ERFOLGREICH_ARCHIVIERT: \"Document was deleted succesfully\",\r\n UNTERLAGE_ERFOLGREICH_HINZUGEFUEGT: \"Document was created successfully\",\r\n UNTERLAGE_HINZUFUEGEN: \"Add document\",\r\n UNTERLAGE_HOCHLADEN: \"Upload document\",\r\n UNTERLAGE_NICHT_GEFUNDEN: \"Document couldn't found\",\r\n UNTERLAGEN: \"Documents\",\r\n UNTERLAGEN_ID_NICHT_GEFUNDEN: \"Id of document not found\",\r\n VERSAND_PER_MAIL: \"Shipping by e-mail\",\r\n VERSAND_PER_POST: \"Shipping by post\",\r\n VORLAGE: \"Template\",\r\n VORLAGE_ANZEIGEN: \"Show template\",\r\n VERBINDLICHE_BUCHUNGSABFRAGE: \"Send binding booking request\",\r\n VERBINDLICHE_BUCHUNGSABFRAGE_CONTENT:\r\n \"The request results in rental fees for you, which you can find in the construction site documents.\",\r\n VERBINDLICHE_BUCHUNGSABFRAGE_ABSCHICKEN_CONTENT:\r\n \"Would you like to send this binding booking request?\",\r\n VERBINDLICHE_MODULVERANTWORTLICHEN_CONTENT:\r\n \"The booking must still be approved by the module supervisor.\",\r\n VERBINDLICHE_MODULVERANTWORTLICHEN_ZUSAGE_CONTENT:\r\n \"Only after approval will you receive a commitment for the bookings of the containers as well as the special equipment.\",\r\n VERBINDLICHE_MODULVERANTWORTLICHEN_ZUSAGE_CONTENT_OHNE:\r\n \"Only after approval will you receive a commitment for the bookings of the containers.\",\r\n VERBINDLICHE_SONDERAUSSTATTUNG_CONTENT:\r\n \"The entry of special equipment may incur costs, which you can find in the booking documents.\",\r\n VERLAENGERN_BESTAETIGEN: \"Confirm Extend\",\r\n VERLAENGERN_BIS_AUSWAEHLEN: \"Extend until\",\r\n WEITERE_UNTERLAGE_HOCHLADEN: \"Upload further document\",\r\n WEITERE_UNTERLAGE_HOCHLADEN_TITLE:\r\n \"Further document which isn't queried above\",\r\n WIRD_NACHGEREICHT: \"will be given later\",\r\n ZEITRAUM: \"Period\",\r\n ZEITRAUM_AUSWAEHLEN: \"Choose a period\",\r\n ZEITRAUM_EINSCHRAENKUNG: \"Restrict period\",\r\n ZURUECK: \"Back\",\r\n};\r\n","export const TRANSLATIONS_DE_CONTAINER = {\r\n ABBRECHEN: \"Abbrechen\",\r\n ABFRAGE_AUSSTATTUNG_ARCHIVIEREN:\r\n \"Möchten Sie die Ausstattung wirklich löschen?\",\r\n ABFRAGE_BUCHUNG_STONIEREN: \"Möchten Sie die Buchung wirklich stornieren?\",\r\n ABFRAGE_BUCHUNGSUNTERLAGE_ARCHIVIEREN:\r\n \"Möchten Sie die Buchungsunterlage wirklich löschen?\",\r\n ABFRAGE_CONTAINER_ARCHIVIEREN:\r\n \"Möchten Sie den Container wirklich löschen?\",\r\n ABFRAGE_CONTAINER_BUCHUNGSUNTERLAGE_ARCHIVIEREN:\r\n \"Möchten Sie die Containerbuchungsunterlage wirklich löschen?\",\r\n ABFRAGE_CONTAINERBURG_ARCHIVIEREN:\r\n \"Möchten Sie die Containerburg wirklich löschen?\",\r\n ABFRAGE_CONTAINERUNTERLAGE_ARCHIVIEREN:\r\n \"Möchten Sie die Unterlage wirklich löschen?\",\r\n ABFRAGE_KUENDIGUNG_BESTAETIGEN:\r\n \"Möchten Sie folgende Container wirklich kündigen? Dann bestätigen Sie dieses mit Klick auf den Button.\",\r\n ABRECHNUNGSDETAILS: \"Abrechnungsdetails\",\r\n ABRECHNUNGSDETAILS_BUCHUNGEN:\r\n \"Buchung von {{containerAnzahl}} Container im Zeitraum {{buchungVon}} - {{buchungBis}}\",\r\n ABRECHNUNGSDETAILS_EXPORTIEREN: \"Abrechnungsdetails exportieren\",\r\n ABRECHNUNG_UEBER_BAULOGISTIK: \"Abrechnung über Baulogistiker\",\r\n AKTUELL_NICHT_GENEHMIGEN: \"Aktuell nicht genehmigen\",\r\n ALLE: \"Alle\",\r\n ANSPRECHPARTNER_BUCHUNG: \"Ansprechpartner der Buchung\",\r\n ANSPRECHPARTNER_AKTUALISIEREN: \"Ansprechpartner aktualisieren\",\r\n ANSPRECHPARTNER_ERFOLGREICH_AKTUALISIERT:\r\n \"Ansprechpartner erfolgreich aktualisiert\",\r\n ANSPRECHPARTNER_KONFIGURIEREN: \"Ansprechpartner\",\r\n ANZAHL: \"Anzahl\",\r\n ANZAHL_KOPIEN: \"Kopienanzahl\",\r\n AUSGEWAEHLTE_UNTERLAGE: \"Ausgewählte Unterlage\",\r\n AUSSTATTUNG: \"Ausstattung\",\r\n AUSSTATTUNG_ANZAHL_EINGEBEN:\r\n \"Hier kann die Anzahl der Ausstattung eingeben werden\",\r\n AUSSTATTUNG_ARCHIVIEREN: \"Ausstattung löschen\",\r\n AUSSTATTUNG_AKTUALISIEREN: \"Ausstattung aktualisieren\",\r\n AUSSTATTUNG_ERFOLGREICH_AKTUALISIERT:\r\n \"Ausstattung erfolgreich aktualisiert.\",\r\n AUSSTATTUNG_ERFOLGREICH_ARCHIVIERT: \"Ausstattung erfolgreich gelöscht.\",\r\n AUSSTATTUNG_ERFOLGREICH_ERSTELLT: \"Ausstattung erfolgreich erstellt.\",\r\n AUSSTATTUNG_ERSTELLEN: \"Ausstattung erstellen\",\r\n AUSSTATTUNG_ID_NICHT_GEFUNDEN:\r\n \"Ausstattung-Id konnte nicht gefunden werden.\",\r\n AUSSTATTUNG_INFO: \"Information zu den Aussattungen\",\r\n AUSSTATTUNG_KONFIGURIEREN: \"Ausstattung\",\r\n AUSSTATTUNG_LOESCHEN: \"Ausstattung löschen\",\r\n AUSSTATTUNG_NAME: \"Ausstattungsname\",\r\n AUSSTATTUNGSANZAHL: \"Ausstattungsanzahl\",\r\n AUSSTATTUNGSANZAHL_GEBUCHT: \"Bereits gebuchte Ausstattung gesamt\",\r\n AUSSTATTUNGSANZAHL_GESAMT: \"Konfigurierte Ausstattungsanzahl gesamt\",\r\n AUSSTATTUNGSANZAHL_PRO_CONTAINER: \"Ausstattungsanzahl pro Container\",\r\n BENUTZER_MAIL: \"Email\",\r\n BENUTZER_NACHNAME: \"Nachname\",\r\n BENUTZER_TELEFONNUMMMER: \"Telefonnummer\",\r\n BENUTZER_TELEFONNUMMER_EINGEBEN: \"Bitte Telefonnummer eingeben\",\r\n BENUTZER_UNTERNEHMEN: \"Unternehmen\",\r\n BENUTZER_VORNAME: \"Vorname\",\r\n BESTAETIGE_AENDERUNGEN: \"Bestätige die Änderung der Buchung\",\r\n BILD: \"Bild\",\r\n BITTE_AUSSTATTUNGEN_WAEHLEN: \"Ausstattung bitte auswählen\",\r\n BITTE_CONTAINERBURG_WAEHLEN: \"Containerburg bitte auswählen\",\r\n BITTE_CONTAINER_WAEHLEN: \"Container bitte auswählen\",\r\n BITTE_CONTAINERTYP_WAEHLEN: \"Containertyp bitte auswählen\",\r\n BEREITS_GENEHMIGT: \"Container bereits genehmigt\",\r\n BEREITS_GEKUENDIGT: \"Container bereits zum {{datum}} gekündigt\",\r\n BLOCKIERT: \"Blockiert\",\r\n BUCHUNG: \"Buchung\",\r\n BUCHUNG_AKTUALISIEREN: \"Buchung aktualisieren\",\r\n BUCHUNG_BEARBEITEN: \"Korrigiere die Buchungseingaben\",\r\n BUCHUNG_BESTAETIGEN: \"Buchung bestätigen\",\r\n BUCHUNG_BIS: \"Buchung bis\",\r\n BUCHUNG_BIS_AUSWAEHLEN: \"Buchung bis auswählen\",\r\n BUCHUNG_BIS_GETRENNT: \"Buchung
bis\",\r\n BUCHUNG_CONTAINER: \"Buchung des Container\",\r\n BUCHUNG_DETAILS: \"Buchungdetails\",\r\n BUCHUNG_ERFOLGREICH_AKTUALISIERT: \"Buchung erfolgreich aktualisiert\",\r\n BUCHUNG_ERFOLGREICH_BESTAETIGT: \"Buchung erfolgreich bestätigt.\",\r\n BUCHUNG_ERFOLGREICH_ERSTELLT: \"Buchung erfolgreich erstellt\",\r\n BUCHUNG_ERFOLGREICH_GENEHMIGT: \"Buchung erfolgreich genehmigt\",\r\n BUCHUNG_ERFOLGREICH_STORNIERT: \"Buchung erfolgreich storniert\",\r\n BUCHUNG_ERFOLGREICH_VERLAENGERT: \"Buchung erfolgreich verlängert\",\r\n BUCHUNG_ERSTELLEN: \"Buchung erstellen\",\r\n BUCHUNG_GENEHMIGEN: \"Bitte bestätigen Sie die Buchungsanfrage\",\r\n BUCHUNG_KUENDIGEN: \"Buchung kündigen\",\r\n BUCHUNG_STORNIEREN: \"Buchung stornieren\",\r\n BUCHUNG_VERLAENGERN: \"Buchung verlängern\",\r\n BUCHUNG_VON: \"Buchung von\",\r\n BUCHUNG_VON_AUSWAEHLEN: \"Buchung von auswählen\",\r\n BUCHUNG_VON_GETRENNT: \"Buchung
von\",\r\n BUCHUNGEN: \"Buchungen\",\r\n BUCHUNGEN_ANZEIGEN_TITLE: \"Buchungen anzeigen\",\r\n BUCHUNGEN_UEBERSICHT: \"Buchungen-Übersicht\",\r\n BUCHUNGS_ID_NICHT_GEFUNDEN: \"Buchungs-Id konnte nicht gefunden werden\",\r\n BUCHUNGS_UEBERSICHT: \"Buchungsübersicht\",\r\n BUCHUNGSANFRAGEN_VERWALTEN: \"Buchungsanfragen verwalten\",\r\n BUCHUNGSDATEN: \"Buchungsdaten\",\r\n BUCHUNGSDATUM_GETRENNT: \"Buchungs
datum\",\r\n BUCHUNGSNAME: \"Buchungsname\",\r\n BUCHUNGSANFRAGE_ABSCHICKEN: \"Buchungsanfrage abschicken\",\r\n BUCHUNGSANFRAGE_ERFOLGREICH_ERSTELLT:\r\n \"Buchungsanfrage wurde erfolgreich erstellt.\",\r\n BUCHUNGSANFRAGE_ERSTELLEN: \"Buchungsanfrage erstellen\",\r\n BUCHUNGSTATUS: \"Buchungstatus\",\r\n BUCHUNGSTATUS_GETRENNT: \"Buchungs
status\",\r\n BUCHUNGSUNTERLAGE_AENDERN: \"Buchungsunterlage ändern\",\r\n BUCHUNGSUNTERLAGE_ARCHIVIEREN: \"Buchungsunterlage archivieren\",\r\n BUCHUNGSUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Buchungsunterlage wurde erfolgreich aktualisiert.\",\r\n BUCHUNGSUNTERLAGE_ERFOLGREICH_ARCHIVIERT:\r\n \"Buchungsunterlage wurde erfolgreich gelöscht.\",\r\n BUCHUNGSUNTERLAGE_ERFOLGREICH_ERSTELLT:\r\n \"Buchungsunterlage wurde erfolgreich erstellt.\",\r\n BUCHUNGSUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Buchungsunterlage wurde erfolgreich aktualisiert.\",\r\n BUCHUNGSUNTERLAGE_HINZUFUEGEN: \"Buchungsunterlage hinzufügen\",\r\n BUCHUNGSUNTERLAGEN: \"Buchungsunterlagen\",\r\n BUCHUNGSUNTERLAGEN_KONFIGURIEREN: \"Buchungsunterlagen\",\r\n BUCHUNGSZEITRAUM: \"Buchungszeitraum\",\r\n CONTAINER_AKTUALISIEREN: \"Container aktualisieren\",\r\n CONTAINER_BEZEICHNUNG: \"Container bezeichnung\",\r\n CONTAINER_BUCHEN: \"Container buchen\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN: \"Containerbuchungsunterlagen\",\r\n CONTAINER_BUCHUNGSUNTERLAGE_AENDERN: \"Containerbuchungsunterlage ändern\",\r\n CONTAINER_BUCHUNGSUNTERLAGE_ANZEIGEN: \"Containerbuchungsunterlage anzeigen\",\r\n CONTAINERBUCHUNGSUNTERLAGE_ERFOLGREICH_ARCHIVIERT:\r\n \"Containerbuchungsunterlage erfolgreich gelöscht\",\r\n CONTAINERBUCHUNGSUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Containerbuchungsunterlage erfolgreich aktualisiert\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN_KONFIGURIEREN: \"Containerbuchungs-unterlagen\",\r\n CONTAINER_BUCHUNGSUNTERLAGEN_KONFIGURIEREN_TITLE:\r\n \"Containerbuchungsunterlagen konfigurieren\",\r\n CONTAINER_DATEN: \"Containerdaten\",\r\n CONTAINER_DETAILS: \"Container details\",\r\n CONTAINER_ENTFERNTER_EBENE: \"Container der entfernten Ebene löschen\",\r\n CONTAINER_ERFOLGREICH_AKTUALISIERT: \"Container erfolgreich aktualisiert\",\r\n CONTAINER_ERFOLGREICH_ARCHIVIERT: \"Container wurde gelöscht.\",\r\n CONTAINER_ERFOLGREICH_ERSTELLT: \"Container wurde erfolgreich erstellt.\",\r\n CONTAINER_ERFOLGREICH_GEKUENDIGT: \"Container wurden erfolgreich gekündigt\",\r\n CONTAINER_ARCHIVIEREN: \"Container löschen\",\r\n CONTAINER_GENEHMIGEN: \"Container genehmigen\",\r\n CONTAINER_HINZUFUEGEN: \"Container hinzufügen\",\r\n CONTAINER_ID_NICHT_GEFUNDEN: \"Container-Id konnte nicht gefunden werden\",\r\n CONTAINER_KUENDIGEN: \"Container kündigen\",\r\n CONTAINER_KONFIGURIEREN: \"Container\",\r\n CONTAINER_MODUL: \"Container-Modul\",\r\n CONTAINER_NAME: \"Containername\",\r\n CONTAINER_NAME_GETRENNT: \"Container
name\",\r\n CONTAINER_STATUS_GETRENNT: \"Container
status\",\r\n CONTAINER_TYP: \"Containertyp\",\r\n CONTAINER_TYP_GETRENNT: \"Container
typ\",\r\n CONTAINER_UEBERSICHT: \"Container-Übersicht\",\r\n CONTAINER_UNTERLAGEN_KONFIGURIEREN: \"Informations- unterlagen\",\r\n CONTAINER_VERLAENGERN: \"Container verlängern\",\r\n CONTAINERANZAHL: \"Containeranzahl\",\r\n CONTAINERANZAHL_GETRENNT: \"Container-
anzahl\",\r\n CONTAINERBILD_ANZEIGEN: \"Bild anzeigen\",\r\n CONTAINERBUCHUNGEN: \"Containerbuchungen\",\r\n CONTAINERBURG: \"Containerburg\",\r\n CONTAINERBURG_AKTUALISIEREN: \"Containerburg aktualisieren\",\r\n CONTAINERBURG_ARCHIVIEREN: \"Containerburg archivieren\",\r\n CONTAINERBURG_BEZEICHNUNG: \"Containerburg-Bezeichnung\",\r\n CONTAINERBURG_ERFOLGREICH_AKTUALISIERT:\r\n \"Containerburg erfolgreich aktualisiert\",\r\n CONTAINERBURG_ERFOLGREICH_ARCHIVIERT:\r\n \"Containerburg erfolgreich archiviert\",\r\n CONTAINERBURG_ERFOLGREICH_ERSTELLT:\r\n \"Containerburg wurde erfolgreich erstellt.\",\r\n CONTAINERBURG_EXPORTIEREN: \"Containerburg exportieren\",\r\n CONTAINERBURG_HINZUFUEGEN: \"Containerburg hinzufügen\",\r\n CONTAINERBURG_ID_NICHT_GEFUNDEN:\r\n \"Containerburg-Id konnte nicht gefunden werden\",\r\n CONTAINERBURG_KONFIGURIEREN: \"Containerburg\",\r\n CONTAINERBURG_NUMMER: \"Nummer\",\r\n CONTAINERBURGEN: \"Containerburgen\",\r\n CONTAINEREINHEIT: \"Containereinheit\",\r\n CONTAINERNAME: \"Containername\",\r\n CONTAINERNUMMER_LIEFERANT: \"Container-Nummer (Lieferant)\",\r\n CONTAINERTYP: \"Containertyp\",\r\n CONTAINER_LOESCHEN: \"Container löschen\",\r\n CONTAINERUNTERLAGE_AENDERN: \"Containerunterlage ändern\",\r\n CONTAINERUNTERLAGE_AKTUALISIEREN: \"Containerunterlage aktualisieren\",\r\n CONTAINERUNTERLAGE_ANZEIGEN: \"Containerunterlage anzeigen\",\r\n CONTAINERUNTERLAGE_ARCHIVIEREN: \"Containerunterlage archivieren\",\r\n CONTAINERUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Containerunterlage erfolgreich aktualisiert\",\r\n CONTAINERUNTERLAGE_ERFOLGREICH_ARCHIVIERT:\r\n \"Containerunterlage erolgreich gelöscht.\",\r\n CONTAINERUNTERLAGE_ERFOLGREICH_ERSTELLT:\r\n \"Containerunterlage erfolgreich erstellt\",\r\n CONTAINERUNTERLAGE_HINZUFUEGEN: \"Containerunterlage hinzufügen\",\r\n DATEI_AUSWAEHLEN: \"Datei auswählen\",\r\n DOKUMENT: \"Dokument\",\r\n DOKUMENT_ARCHIVIEREN: \"Dokument löschen\",\r\n DOKUMENT_MODAL_ARCHIVIEREN: \"Möchten Sie das Dokument wirklich löschen?\",\r\n DOWNLOADNAME: \"Downloadname\",\r\n EBENE: \"Ebene\",\r\n EBENEN_ANZAHL: \"Anzahl der Ebenenen\",\r\n EINSTELLUNGEN: \"Einstellungen\",\r\n EMAIL: \"Emailadresse\",\r\n EUFECB_ERFOLGREICH_ERSTELLT:\r\n \"Containerbuchungsunterlage erfolgreich erstellt\",\r\n EXPORT_TOAST:\r\n \"Der Download wurde gestartet und läuft im Hintergrund während Ihrer Tätigkeiten in ALGO weiter. Bitte schließen Sie derweil ALGO nicht.\",\r\n FEHLENDE_RECHTE: \"Fehlende Berechtigungen\",\r\n FREI: \"Frei\",\r\n GENEHMIGE_CONTAINER: \"Ausgewählte Container genehmigen\",\r\n GRUENDE_DER_AENDERUNG: \"Gründe der Änderung\",\r\n GRUENDE_DER_BUCHUNG: \"Gründe der Buchung\",\r\n GRUENDE_DER_STORNIERUNG: \"Gründe der Stornierung\",\r\n GRUENDE_DER_VERLAENGERUNG: \"Gründe der Verlängerung\",\r\n HILFE_TEXT_BLAU: \"Sanitär-Container\",\r\n HILFE_TEXT_GELB: \"Container wurde bereits gekündigt und wird wieder frei\",\r\n HILFE_TEXT_GRUEN: \"Container ist frei verfügbar\",\r\n HILFE_TEXT_LINKS: \"Linke Seite der Ebene\",\r\n HILFE_TEXT_ROT: \"Gebuchte Container\",\r\n HILFE_TEXT_RECHTS: \"Rechte Seite der Ebene\",\r\n HILFE_TEXT_WEISS: \"Container von Admin blockiert\",\r\n HOCHGELADENE_UNTERLAGE: \"Hochgeladene Unterlage\",\r\n INFO_TITEL: \"Informationen zur Containerburgansicht\",\r\n INVALID_FORM: \"Fülle alle Eingabefelder aus.\",\r\n JA: \"Ja\",\r\n KEIN_BILD_VORHANDEN: \"Kein Bild vorhanden\",\r\n KEIN_PDF_FORMAT: \"Bitte laden Sie PDF-Format hoch\",\r\n KEINE_AUSSTATTUNG: \"Keine Ausstattung vorhanden\",\r\n KEINE_CONTAINER_ZU_GENEHMIGEN: \"Keine Container zu genehmigen\",\r\n KEINE_CONTAINER_ZU_KUENDIGEN: \"Keine Container zu kündigen\",\r\n KEINE_CONTAINER_ZU_VERLAENGERN: \"Keine container zu verlängern\",\r\n KEINE_SONDERAUSSTATTUNG: \"Keine Sonderausstattung gebucht\",\r\n KEINE_UNTERLAGEN: \"Keine Unterlagen vorhanden\",\r\n KEINE_VORLAGE_HOCHGELADEN: \"Keine Vorlage hochgeladen\",\r\n KONTAKTDATEN: \"Kontaktdaten der Container-Verwaltung\",\r\n KONTAKT_DATEN: \"Kontaktdaten\",\r\n KONTAKTDATEN_BUCHUNG: \"Kontaktdaten der Buchung\",\r\n KONTAKTDATEN_GETRENNT: \"Kontakt
daten\",\r\n KONTAKTPERSON: \"Kontaktperson\",\r\n KUENDIGUNG_BESTAETIGEN: \"Kündigung bestätigen\",\r\n KUENGIGUNG_BIS_AUSWAEHLEN: \"Kündigung bis\",\r\n KUENDIGUNGSTERMIN: \"Kündigungstermin\",\r\n LEISTUNGSVERZEICHNIS_NUMMER: \"LV-Nr\",\r\n LINKE_SEITE: \"Linke Seite\",\r\n LINKER_NACHBAR: \"Linker Nachbar\",\r\n LV_NUMMER: \"LV-Nr.\",\r\n MAIL_AN_BENUTZER: \"Mail an buchende Person\",\r\n MIETGEBUEHREN: \"Mietgebühren\",\r\n MODULVERANTWORTLICHER_MAIL: \"Mail des Verantwortlichen\",\r\n MODULVERANTWORTLICHER_TELEFONNUMMER: \"Telefonnummer des Verantwortlichen\",\r\n NACHRICHT: \"Nachricht\",\r\n NACHRICHT_MAIL:\r\n \"Nachricht wird in der Email mit versandt und gilt als Information für den Buchenden oder Modulverantwortlichen\",\r\n NACHRICHT_ZUR_GENEHMIGUNG: \"Nachricht zur Genehmigung\",\r\n NACHRICHT_ZUR_KUENDIGUNG: \"Nachricht zur Kündigung\",\r\n NACHRICHT_ZUR_VERLAENGERUNG: \"Nachricht zur Verlängerung\",\r\n NAME: \"Name\",\r\n NAME_EINGEBEN: \"Bitte Name eingeben\",\r\n NEIN: \"Nein\",\r\n PERSONEN: \"Personen\",\r\n EUFEB_ANZEIGEN: \"Buchungsunterlage als PDF-Datei anzeigen\",\r\n EUFECB_ANZEIGEN: \"Containerbuchungsunterlage als PDF-Datei anzeigen\",\r\n EUFEB_HOCHLADEN: \"Buchungsunterlage als PDF-Datei hochladen\",\r\n EUFECB_HOCHLADEN: \"Containerbuchungsunterlage als PDF-Datei hochladen\",\r\n PERSONENANZAHL: \"Personenanzahl\",\r\n PERSONENANZAHL_GETRENNT: \"Personen
anzahl\",\r\n RECHNUNGSADRESSE: \"Rechnungsadresse\",\r\n RECHNUNGSDATEN: \"Rechnungsdaten\",\r\n RECHNUNG_PER_MAIL: \"Rechnung per Mail empfangen\",\r\n RECHNUNGS_STRASSE: \"Straße\",\r\n RECHNUNGS_STADT: \"Stadt\",\r\n RECHNUNGS_POSTLEITZAHL: \"Postleitzahl\",\r\n RECHTE_SEITE: \"Rechte Seite\",\r\n RECHTER_NACHBAR: \"Rechter Nachbar\",\r\n SEITE: \"Seite\",\r\n SONDERAUSSTATTUNG: \"Sonderausstattung\",\r\n SONDERAUSSTATTUNG_INFO_CONTENT:\r\n \"Die folgenden Ausstattungen sind Sonderausstattungen und sind mit Kosten verbunden:\",\r\n STANDARD_AUSSTATTUNG_INFO_CONTENT:\r\n \"Die folgenden Ausstattungen sind Standardausstattungen und damit bei allen Containern vorhanden: \",\r\n SONDERAUSSTATTUNG_GETRENNT: \"Sonder- ausstattung?\",\r\n STATUS: \"Status\",\r\n STATUS_AUSWAEHLEN: \"Bitte Status auswählen\",\r\n TELEFONNUMMER: \"Telefonnummer\",\r\n TYP: \"Typ\",\r\n UNTERNEHMEN: \"Unternehmen\",\r\n UNTERLAGE_ERFOLGREICH_ARCHIVIERT: \"Unterlage erfolgreich gelöscht\",\r\n UNTERLAGE_ERFOLGREICH_HINZUGEFUEGT: \"Unterlage erfolgreich hinzugefügt.\",\r\n UNTERLAGE_HINZUFUEGEN: \"Unterlage hinzufügen\",\r\n UNTERLAGE_HOCHLADEN: \"Unterlage hochladen\",\r\n UNTERLAGE_NICHT_GEFUNDEN: \"Unterlage konnte nicht gefunden werden\",\r\n UNTERLAGEN: \"Unterlagen\",\r\n UNTERLAGEN_ID_NICHT_GEFUNDEN: \"Unterlagen-Id konnte nicht gefunden werden\",\r\n VERBINDLICHE_BUCHUNGSABFRAGE: \"Verbindliche Buchungsanfrage abschicken\",\r\n VERBINDLICHE_BUCHUNGSABFRAGE_CONTENT:\r\n \"Durch die Anfrage entstehen für Sie Mietgebühren, welche Sie den Baustellenunterlagen, entnehmen können.\",\r\n VERBINDLICHE_BUCHUNGSABFRAGE_ABSCHICKEN_CONTENT:\r\n \"Möchten Sie die diese Buchungsanfrage verbindlich abschicken?\",\r\n VERBINDLICHE_MODULVERANTWORTLICHEN_CONTENT:\r\n \"Die Buchung muss noch vom Modulverantwortlichen genehmigt werden.\",\r\n VERBINDLICHE_MODULVERANTWORTLICHEN_ZUSAGE_CONTENT:\r\n \"Erst nach Genehmigung erhalten Sie eine Zusage für die Buchungen der Container sowie der Sonderausstattung.\",\r\n VERBINDLICHE_MODULVERANTWORTLICHEN_ZUSAGE_CONTENT_OHNE:\r\n \"Erst nach Genehmigung erhalten Sie eine Zusage für die Buchungen der Container.\",\r\n VERBINDLICHE_SONDERAUSSTATTUNG_CONTENT:\r\n \"Durch die Eintragung von Sonderausstattung können Kosten entstehen, welche Sie den Buchungsunterlagen entnehmen können.\",\r\n VERLAENGERN_BESTAETIGEN: \"Verlängern bestätigen\",\r\n VERLAENGERN_BIS_AUSWAEHLEN: \"Verlängern bis\",\r\n VERSAND_PER_MAIL: \"Versand per E-Mail\",\r\n VERSAND_PER_POST: \"Versand per Post\",\r\n VORLAGE: \"Vorlage\",\r\n VORLAGE_ANZEIGEN: \"Vorlage anzeigen\",\r\n WEITERE_UNTERLAGE_HOCHLADEN: \"Weitere Unterlage hochladen\",\r\n WEITERE_UNTERLAGE_HOCHLADEN_TITLE:\r\n \"Weitere Unterlage, welche oben nicht abgefragt wird\",\r\n WIRD_NACHGEREICHT: \"wird nachgereicht\",\r\n ZEITRAUM: \"Zeitraum\",\r\n ZEITRAUM_AUSWAEHLEN: \"Zeitraum auswählen\",\r\n ZEITRAUM_EINSCHRAENKUNG: \"Zeitraum einschränken\",\r\n ZURUECK: \"Zurück\",\r\n};\r\n","export const TRANSLATIONS_EN_AVIS = {\r\n ABFALLSCHLUESSELNUMMER: \"Waste key number\",\r\n ABFRAGE_BESTIMMUNGSORT_ARCHIVIEREN:\r\n \"Do you really want to delete the destination zone?\",\r\n ABFRAGE_MODULUNTERLAGE_ARCHIVIEREN:\r\n \"Do you really want to delete the module document?\",\r\n ABFRAGE_RESSOURCEN_ARCHIVIEREN:\r\n \"Do you really want to delete the resource?\",\r\n ABFRAGE_TRANSPORT_GENEHMIGEN:\r\n \"Do you really want to approve the transport?\",\r\n ABFRAGE_TRANSPORT_STONIEREN: \"Do you really want to cancel the transport?\",\r\n ABHOL_DATEN: \"Pick-up data\",\r\n ABHOLFAHRZEUG: \"Pick-up vehicle\",\r\n ABHOLTERMIN: \"Pick-up date\",\r\n ABFRAGE_ZIELORT_ARCHIVIEREN: \"Do you really want to deleted the zielort\",\r\n ABLIEFERUNGSZEITEN: \"Time of collection\",\r\n ABSENDER: \"Recipient\",\r\n ABTRANSPORT: \"Removal\",\r\n ABTRANSPORTZONE: \"Removal zone\",\r\n ADRESSE: \"Adress\",\r\n ANGEMELDET_AM: \"Registered on\",\r\n ANGEMELDET_VON: \"Registered by\",\r\n ANLIEFERUNG: \"Delivery\",\r\n ANLIEFERUNGSZEITEN: \"Time of Delivery\",\r\n ANLIEFERUNGSZONE: \"Delivery zone\",\r\n ANMELDEN: \"Register\",\r\n AKTUALISIEREN: \"To update\",\r\n ALLE_ANGEMELDETEN_TRANSPORTE_GENEHMIGEN:\r\n \"Approve all registered transport declarations\",\r\n AUSGEWAEHLTE_RESSOURCE: \"Selected resource\",\r\n AUSGEWAEHLTE_UNTERLAGE: \"Selected document\",\r\n AVISIERUNGSART: \"Notification type\",\r\n AVIS_MODUL: \"Notification Module\",\r\n BAUSTELLEINRICHTUNGSPLAN: \"Site layout plan\",\r\n BAUSTELLENOEFFNUNGSZEITEN: \"Opening hours of site\",\r\n BEARBEITET_AM: \"Edited on\",\r\n BEARBEITET_VON: \"Edited by\",\r\n BELADUNG: \"Loading\",\r\n BELADUNGSDAUER: \"Loading time (in minutes)\",\r\n BENUTZEREMAIL: \"Mail\",\r\n BENUTZERNACHNAME: \"Last name\",\r\n BENUTZERUNTERNEHMEN: \"Company\",\r\n BENUTZERTELEFONNUMMER: \"Phonenumber\",\r\n BENUTZERVORNAME: \"First name\",\r\n BEP_WIRD_GELADEN: \"Site layout plan is loading\",\r\n BESTIMMUNGSORT: \"Destination zone\",\r\n BESTIMMUNGSORT_AKTUALISIEREN: \"Update destination zone\",\r\n BESTIMMUNGSORT_AENDERN: \"Edit destination zone\",\r\n BESTIMMUNGSORT_ARCHIVIEREN: \"Delete destination zone\",\r\n BESTIMMUNGSORT_ERFOLGREICH_ARCHIVIERT:\r\n \"Destination zone successfully deleted\",\r\n BESTIMMUNGSORT_ERFOLGREICH_AKTUALISIERT:\r\n \"Destination zone successfully updated\",\r\n BESTIMMUNGSORT_ERFOLGREICH_ERSTELLT:\r\n \"Destination zone successfully created\",\r\n BESTIMMUNGSORT_HINZUFUEGEN: \"Add destination zone\",\r\n BESTIMMUNGSORT_ID_NICHT_GEFUNDEN: \"Destination zone-ID not found\",\r\n BESTIMMUNGSZONE: \"Destination zone\",\r\n BITTE_ABFALLSCHLUESSELNUMMER_EINGEBEN: \"Please enter the waste key number\",\r\n BITTE_ABTRANSPORT_FAHRZEUG_WAEHLEN: \"Please enter your evacuation vehicle\",\r\n BITTE_ABTRANSPORTZONE_WAEHLEN: \"Please enter your evacuation zone\",\r\n BITTE_ADRESSE_EINGEBEN: \"Please enter your adress\",\r\n BITTE_ANLIEFERUNGS_FAHRZEUG_EINGEBEN: \"Please enter your delivery vehicle\",\r\n BITTE_ANLIEFERUNGSZONE_EINGEBEN: \"Please enter your delivery zone\",\r\n BITTE_BELADUNGSZEIT_EINGEBEN: \"Please enter loading time\",\r\n BITTE_ENGLISCHER_UEBERSETZUNG: \"Please enter the english translation\",\r\n BITTE_ENTLADEZEIT_EINGEBEN: \"Please enter time of discharge\",\r\n BITTE_EUROKLASSE_EINGEBEN: \"Please enter the euroclass\",\r\n BITTE_FAHRZEUGANZAHL_EINGEBEN: \"Please enter the count of vehicle\",\r\n BITTE_FRAKTION_WAEHLEN: \"Please enter the fraction\",\r\n BITTE_FRANZOESICHE_UEBERSETZUNG: \"Please enter the french translation\",\r\n BITTE_DEUTSCHER_UEBERSETZUNG: \"Please enter the german translation\",\r\n BITTE_GEBURTSORT_EINGEBEN: \"Please enter your place of birth\",\r\n BITTE_GEWICHT_EINGEBEN: \"Please enter weight\",\r\n BITTE_GEWICHTEINHEIT_WAEHLEN: \"Please enter select unit\",\r\n BITTE_KENNZEICHEN_EINGEBEN: \"Please enter the mark\",\r\n BITTE_LEISTUNGSVERZEICHNISPOSITIONSNUMMER_EINGEBEN:\r\n \"Please enter the list of services postions number\",\r\n BITTE_MAIL_EINGEBEN: \"Please enter the mail\",\r\n BITTE_MATERIAL_EINGEBEN: \"Please enter material\",\r\n BITTE_MATERIALEINHEIT_WAEHLEN: \"Please enter select transport unit\",\r\n BITTE_MENGE_EINGEBEN: \"Please enter quantity\",\r\n BITTE_NACHNAME_EINGEBEN: \"Please enter the lastname\",\r\n BITTE_NAME_EINGEBEN: \"Please enter the name\",\r\n BITTE_POLNISCHE_UEBERSETZUNG: \"Please enter the polish translation\",\r\n BITTE_POSITIONSNUMMER_EINGEBEN: \"Please enter the positon number\",\r\n BITTE_PROJEKTBETILIGTER_AUSWAEHLEN: \"Please enter the project participants\",\r\n BITTE_RESSOURCE_AUSWAEHLEN: \"Please enter resource\",\r\n BITTE_RUSSISCHE_UEBERSETZUNG: \"Please enter the russian translation\",\r\n BITTE_SPANISCHE_UEBERSETZUNG: \"Please enter the spanish translation\",\r\n BITTE_STARTORT_EINGEBEN: \"Please enter your starting loaction\",\r\n BITTE_TAG_AUSWAEHLEN: \"Plese choose your day\",\r\n BITTE_TELEFONNUMMER_EINGEBEN: \"Please enter your phonenummber\",\r\n BITTE_TUERKISCHER_UEBERSETZUNG: \"Please enter turkish translation\",\r\n BITTE_UNTERNEHMEN_EINGEBEN: \"Please enter your organisation\",\r\n BITTE_VORNAME_EINGEBEN: \"Please enter your first name\",\r\n BITTE_VOR_UND_NACHNAME_EINGEBEN: \"Please enter your first and last name\",\r\n BITTE_WIEDERHOLUNGEN_EINGEBEN: \"Please enter repeats\",\r\n BITTE_ZEITABSCHNITT_WAEHLEN: \"Please select time period\",\r\n BITTE_ZIELORT_WAEHLEN: \"Please choose your destination\",\r\n CO2AEQUVIALENT: \"Co2Aequvialent\",\r\n DATEN_IN_KUERZE: \"Data available soon\",\r\n DEINE_NAECHSTEN_TRANSPORTE: \"Your next transports\",\r\n DETAILS: \"Details\",\r\n DETAILS_ZUR_FRAKTION: \"Details of fraction\",\r\n DIENSTAG: \"Thursday\",\r\n DONNERTAG: \"Thuesday\",\r\n EINHEIT: \"Unit\",\r\n EINSTELLUNGEN: \"Settings\",\r\n EINZEL: \"Single\",\r\n EMPFAENGER: \"Receiver\",\r\n EMPFAENGER_DATEN: \"Data of receiver\",\r\n ENDZEIT: \"Time of end\",\r\n ENGLISCH: \"English\",\r\n ENTLADE_DATEN: \"Data of discharge\",\r\n ENTLADUNG: \"Discharge\",\r\n ENTLADEDAUER: \"Discharge duration (in minutes)\",\r\n ENTLADEZEIT: \"Discharge time\",\r\n ENTSORGUNGSART: \"Disposal type\",\r\n EUROKLASSE: \"Euroclass\",\r\n EXPORT_TOAST:\r\n \"The download has started and is continuing in the background while you are working in ALGO. Please do not close ALGO in the meantime\",\r\n FAHRZEUGANZAHL: \"Count of vehicle\",\r\n FCFS_VERFAHREN: \"FCFS-procedure\",\r\n FCFS_HELPER_TEXT_1:\r\n \"If you want to allow only one transport per time slot, please select „Yes“ here.\",\r\n FEHLENDE_RECHTE: \"Missing permissions\",\r\n FORMULAR_NICHT_VALIDE: \"Form is invalid\",\r\n FRACHT: \"Freight\",\r\n FRACHT_DATEN: \"Data of Freight\",\r\n FRAKTION: \"Fraction\",\r\n FRANZOESICH: \"French\",\r\n FREITAG: \"Friday\",\r\n FUELLE_FELD_AUS: \"Fill this field\",\r\n GEBURTSORT: \"Place of birth\",\r\n GEBURTSDATUM: \"Date of birth\",\r\n GENEHMIGEN: \"Approve\",\r\n GESPERRT: \"Locked\",\r\n GEWICHT: \"Weight of transport\",\r\n GEWICHTEINHEIT: \"Unit of weight\",\r\n HEUTIGE_TAGESDISPOSTIONEN: \"Today's daily arrangements\",\r\n HOCHGELADEN_AM: \"Uploaded on\",\r\n HOCHGELADENE_UNTERLAGE: \"Uploaded document\",\r\n ID_NICHT_GEFUNDEN: \"Id was couldn't found\",\r\n INFORMATIONEN: \"Informations\",\r\n JA: \"Yes\",\r\n KEIN_KOMMENTAR: \"No comment was given\",\r\n KEINE_BESTIMMUNGSORT_ZUGEWIESEN:\r\n \"Select a resource to add it to the resource list.\",\r\n KEINE_EMAIL_WHITELIST: \"No email has been added to the whitelist yet.\",\r\n KEINE_TRANSPORTE_ANGEMELDET: \"No registered transports\",\r\n KEINE_UNTERLAGEN: \"No documents\",\r\n KEIN_VERANTWORTLICHE: \"No responsible person available\",\r\n KENNZEICHEN: \"Mark\",\r\n KFZ_KENNZEICHEN: \"Vehicle licence plate\",\r\n KOMMENTAR: \"Comment (non-binding notice)\",\r\n KOMMENTAR_EINGABEFELD: \"You can enter a comment here (non-binding notice)\",\r\n KONTAKTDATEN: \"Contact details of the responsible person\",\r\n LEISTUNGSVERZEICHNISPOSITIONSNUMMER: \"List of services position number\",\r\n LFD_NR: \"serialNo.\",\r\n LIEFERORT: \"Place of deliviery\",\r\n LIEFERTEMIN_LIEGT_AUSSER_ANLIEFERUNGSZEITEN:\r\n \"Time of Delivery \",\r\n LIEFERTERMIN: \"Date of delivery\",\r\n LIEFERZEITEN: \"End of delivery\",\r\n LIEFERTEMIN_LIEGT_AUSSER_OEFFNUNGSZEITEN:\r\n \"Delivery date & unloading time must be within the delivery/delivery times. The date and unloading time must be within the delivery/delivery time.\",\r\n MAIL: \"Mail\",\r\n MATERIAL: \"Material\",\r\n MATERIALEINHEIT: \"Unit of transport\",\r\n MENGE: \"Quantity\",\r\n MODULANGABEN: \"Module information\",\r\n MODULANGABEN_ERFOLGREICH_AKTUALISIERT:\r\n \"Module details successfully updated\",\r\n MODULUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Module document was successfully updated\",\r\n MODULUNTERLAGE_ERFOLGREICH_ARCHIVIERT:\r\n \"Module document was successfully delete\",\r\n MODULUNTERLAGE_ERFOLGREICH_ERSTELLT:\r\n \"Module document was successfully created\",\r\n MODULANGABEN_SPEICHERN: \"Save module details\",\r\n MODULUNTERLAGE_AENDERN: \"Edit of module document\",\r\n MODULUNTERLAGE_AKTUALISIEREN: \"Update module document\",\r\n MODULUNTERLAGE_ANZEIGEN: \"Show module document\",\r\n MODULUNTERLAGE_ARCHIVIEREN: \"Archive module document\",\r\n MODULUNTERLAGE_HINZUFUEGEN: \"Add module document\",\r\n MODULUNTERLAGEN: \"Module documents\",\r\n MODULVERANTWORTLICHER_MAIL: \"Mail of the responsible person\",\r\n MODULVERANTWORTLICHER_MAIL_EINGABE:\r\n \"Please enter mail of responsible person\",\r\n MODULVERANTWORTLICHER_TELEFONNUMMER:\r\n \"Phone number of the responsible person\",\r\n MODULVERANTWORTLICHER_TELEFONNUMMER_EINGABE:\r\n \"Please enter the telephone number of the person responsible\",\r\n MONAT: \"Monat\",\r\n MONTAG: \"Monday\",\r\n MITTWOCH: \"Wednesday\",\r\n NACHNAME: \"Lastname\",\r\n NAME: \"Name\",\r\n NAME_DER_RESSOURCE: \"Resource name\",\r\n NEIN: \"No\",\r\n PDF_DATEI_ANZEIGEN: \"Show document as PDF file\",\r\n POLNISCH: \"Polish\",\r\n POSITIONSNUMMER: \"Position number\",\r\n PREIS: \"Preis\",\r\n RESSOURCE: \"Resource\",\r\n RESSOURCEN: \"Resources\",\r\n RESSOURCENAUSWAHL: \"Ressource selection\",\r\n RESSOURCEN_AENDERN: \"Edit resource\",\r\n RESSOURCEN_AKTUALISIEREN: \"Update resource\",\r\n RESSOURCEN_ARCHIVIEREN: \"Archive resource\",\r\n RESSOURCEN_ERFOLGREICH_AKTUALISIERT: \"Resource was successfully updated\",\r\n RESSOURCEN_ERFOLGREICH_ARCHIVIERT: \"Resource was successfully delete\",\r\n RESSOURCEN_ERFOLGREICH_ERSTELLT: \"Resource was successfully created\",\r\n RESSOURCEN_ID_NICHT_GEFUNDEN: \"Ressource-Id not found\",\r\n RESSOURCEN_HINZUFUEGEN: \"Add resource\",\r\n RUSSISCH: \"Russian\",\r\n SAMMEL: \"Collective\",\r\n SAMSTAG: \"Saturday\",\r\n SERIE: \"Serial\",\r\n SONNTAG: \"Sonday\",\r\n SPANISCH: \"Spanish\",\r\n SPEZIAL: \"Special\",\r\n STARTORT: \"Starting location\",\r\n TAG: \"Tag\",\r\n TAG_0: \"Sunday\",\r\n TAG_1: \"Monday\",\r\n TAG_2: \"Thuesday\",\r\n TAG_3: \"Wednesdey\",\r\n TAG_4: \"Thursday\",\r\n TAG_5: \"Friday\",\r\n TAG_6: \"Saturday\",\r\n STARTZEIT: \"Time of start\",\r\n STORNIEREN: \"Cancel\",\r\n TAGABSCHLIESSEN: \"Close the day\",\r\n TAGABSCHLIESSEN_SICHERHEITSABFRAGE: \"Do you really want to end the day\",\r\n TAGABSCHLIESSEN_TITLE: \"Close the day\",\r\n TAG_BEREITS_ABGESCHLOSSEN: \"Day already completed\",\r\n TAG_ERFOLGREICH_ABGESCHLOSSEN: \"Day was successfully closed\",\r\n TELEFONNUMMER: \"Phonenumber\",\r\n TELEFONNUMMER: \"Telefonnummer\",\r\n TRACKING_HELPER_TEXT_1:\r\n \"Select “Yes” if you want to activate tracking of a transport.\",\r\n TRANSPORT: \"Transport\",\r\n TRANSPORTTYP: \"Transport type\",\r\n TRANSPORT_ABTRANSPORT_LINK:\r\n \"Collection from {{transportFirma}} for {{empfaengerFirma}} - status {{status}}\",\r\n TRANSPORT_ANLIEFERUNG_LINK:\r\n \"{{transportFirma}} delivers {{material} to {{empfaengerFirma}} - status {{status}}\",\r\n TRANSPORT_ANMELDEN: \"Registration transport\",\r\n TRANSPORT_ANMELDEN_FRISTENDE: \"Transport registration deadline\",\r\n TRANSPORT_ANMELDEN_FRISTENDE_EINGABE:\r\n \"Please enter the deadline of the Transport registration\",\r\n TRANSPORT_ANMELDEN_FRISTENDE_HELPER_TEXT_1:\r\n \"Please specify the deadline for registering the transport by indicating the number of days.\",\r\n TRANSPORT_ANMELDEN_FRISTENDE_HELPER_TEXT_2:\r\n \"Example: If you enter „2“, the transport registration will be blocked 2 days in advance.\",\r\n TRANSPORTE: \"Transport\",\r\n TRANSPORT_ANZEIGEN: \"Show transport\",\r\n TRANSPORT_DATEN: \"Data of transport\",\r\n TRANSPORT_ERFOLGREICH_ANGEMELDET: \"Transport was successfully registered\",\r\n TRANSPORT_ERFOLGREICH_GENEHMIGT: \"Transport was successfully approved\",\r\n TRANSPORT_ERFOLGREICH_STORNIERT: \"Transport was succesfully canceled\",\r\n TRANSPORT_GENEHMEN: \"Approve transportation\",\r\n TRANSPORT_UEBERSICHT: \"Overview of transport\",\r\n TRANSPORT_TRACKING: \"Transport-Tracking\",\r\n TRANSPORTEMAIL: \"Mail\",\r\n TRANSPORTUNTERNEHMEN: \"Company\",\r\n TRANSPORTTELEFONNUMMER: \"Phonenumber\",\r\n TRANSPORT_STORNIEREN: \"Cancel transport\",\r\n TRANSPORTSTARTORT: \"Place of start\",\r\n TRANSPORTZIELORT: \"Place of target\",\r\n TRANSPORTEUR: \"Carrier\",\r\n TRANSPORTTYP: \"Transport type\",\r\n TUERKISCH: \"Turkish\",\r\n TYP: \"Type\",\r\n UNTERNEHMEN: \"Organisation\",\r\n UNTERLAGE: \"Document\",\r\n UNTERLAGEN: \"Documents\",\r\n UNTERLAGEN_ID_NICHT_GEFUNDEN: \"Not found document id\",\r\n VORNAME: \"Firstname\",\r\n VORNACHNAME: \"First and surname\",\r\n VOR_UND_NACHNAME: \"First and surname\",\r\n VORSCHAU: \"Preview\",\r\n WEITER: \"Next\",\r\n WHITELIST: \"Whitelist\",\r\n WIEDERHOLUNGEN: \"Repetitions\",\r\n WOCHE: \"Woche\",\r\n ZEITABSCHNITT: \"Time period\",\r\n ZIELORT: \"Destination\",\r\n ZIELORT_AKTUALISIEREN: \"Update destination\",\r\n ZIELORT_AENDERN: \"Edit destination\",\r\n ZIELORT_ARCHIVIEREN: \"Archive destination\",\r\n ZIELORT_ERFOLGREICH_AKTUALISIERT: \"Destination was updated successfully\",\r\n ZIELORT_ERFOLGREICH_ARCHIVIERT: \"Destination was delete successfully\",\r\n ZIELORT_ERFOLGREICH_ERSTELLT: \"Destination was created successfully\",\r\n ZIELORT_HINZUFUEGEN: \"Add destination\",\r\n ZIELORT_ID_NICHT_GEFUNDEN: \"Destination-Id not found\",\r\n ZU_DEN_TRANSPORTEN: \"To the overview of transports\",\r\n ZURUECK: \"Return\",\r\n ZUSAMMENFASSUNG_TRANSPORT_ANMELDUNG:\r\n \"Summary of the data you entered for the transport registration\",\r\n};\r\n","export const TRANSLATIONS_DE_AVIS = {\r\n ABBRECHEN: \"Abbrechen\",\r\n ABFALLSCHLUESSELNUMMER: \"Abfallschlüsselnummer\",\r\n ABFRAGE_BESTIMMUNGSORT_ARCHIVIEREN:\r\n \"Möchten Sie den Bestimmungszone wirklich löschen?\",\r\n ABFRAGE_MODULUNTERLAGE_ARCHIVIEREN:\r\n \"Möchten Sie die Modulunterlage wirklich löschen?\",\r\n ABFRAGE_RESSOURCEN_ARCHIVIEREN:\r\n \"Möchten Sie die Ressource wirklich löschen?\",\r\n ABFRAGE_TRANSPORT_GENEHMIGEN:\r\n \"Möchten Sie den Transport wirklich genehmigen?\",\r\n ABFRAGE_TRANSPORT_STONIEREN:\r\n \"Möchten Sie den Transport wirklich stornieren?\",\r\n ABHOL_DATEN: \"Abholdaten\",\r\n ABHOLFAHRZEUG: \"Abholfahrzeug\",\r\n ABHOLTERMIN: \"Abholtermin\",\r\n ABFRAGE_ZIELORT_ARCHIVIEREN: \"Möchten Sie den Zielort wirklich löschen\",\r\n ABLIEFERUNGSZEITEN: \"Ablieferungszeiten\",\r\n ABSENDER: \"Absender\",\r\n ABTRANSPORT: \"Abtransport\",\r\n ABTRANSPORTZONE: \"Abtransportzone\",\r\n ADRESSE: \"Adresse\",\r\n ANLIEFERUNG: \"Anlieferung\",\r\n ANLIEFERUNGSZONE: \"Anlieferungszone\",\r\n ANGEMELDET_AM: \"Angemeldet am\",\r\n ANGEMELDET_VON: \"Angemeldet von\",\r\n ANMELDEN: \"Anmelden\",\r\n ANLIEFERUNGSZEITEN: \"Anlieferungszeiten\",\r\n AKTUALISIEREN: \"Aktualisieren\",\r\n ALLE_ANGEMELDETEN_TRANSPORTE_GENEHMIGEN:\r\n \"Alle angemeldeten Transportanmeldungen genehmigen?\",\r\n ALLE_AVISIERUNGSARTEN_AKTIVIEREN: \"Alle Avisierungsarten erlauben\",\r\n ALLE_AVISIERUNGSARTEN_HELPER_TEXT:\r\n \"Wählen Sie Ja, wenn alle Nutzer die das Recht „Transport anmelden“ besitzen, die Möglichkeit haben sollen, alle Avisierungsarten (Einzel, Sammel, Serie, Spezial) anmelden zu können. \" +\r\n \"Wählen Sie nein, wenn die Anmeldung von Einzelavisierung möglich sein werden. Sie können in der WhiteList, die E-Mailadressen der Projektbeteiligten auswählen, die trotz Deaktivierung, Sammel-,Serien- und Spezialavisierungen anmelden können sollen.\",\r\n AUSGEWAEHLTE_RESSOURCE: \"Ausgewählte Ressource\",\r\n AUSGEWAEHLTE_UNTERLAGE: \"Ausgewählte Unterlage\",\r\n AVISIERUNGSART_0: \"Einzel\",\r\n AVISIERUNGSART_1: \"Einzel\",\r\n AVISIERUNGSART_2: \"Sammel\",\r\n AVISIERUNGSART_3: \"Serie\",\r\n AVISIERUNGSART: \"Avisierungssart\",\r\n AVIS_MODUL: \"Avisierung-Modul\",\r\n BAUSTELLEINRICHTUNGSPLAN: \"Baustelleinrichtungsplan\",\r\n BAUSTELLENOEFFNUNGSZEITEN: \"Baustellenöffnungszeiten\",\r\n BEARBEITET_AM: \"Bearbeitet am\",\r\n BEARBEITET_VON: \"Bearbeitet von\",\r\n BELADUNG: \"Beladung\",\r\n BELADUNGSDAUER: \"Beladungsdauer (in Minuten)\",\r\n BENUTZEREMAIL: \"E-Mail\",\r\n BENUTZERNACHNAME: \"Nachname\",\r\n BENUTZERUNTERNEHMEN: \"Unternehmen\",\r\n BENUTZERTELEFONNUMMER: \"Telefonnummer\",\r\n BENUTZERVORNAME: \"Vorname\",\r\n BEP_WIRD_GELADEN: \"Baustelleneinrichtungsplan wird geladen\",\r\n BESTIMMUNGSORT: \"Bestimmungszone\",\r\n BESTIMMUNGSORT_AENDERN: \"Bestimmungszone bearbeiten\",\r\n BESTIMMUNGSORT_AKTUALISIEREN: \"Bestimmungszone aktualisieren\",\r\n BESTIMMUNGSORT_ARCHIVIEREN: \"Bestimmungszone löschen\",\r\n BESTIMMUNGSORT_ERFOLGREICH_AKTUALISIERT:\r\n \"Bestimmungszone erfolgreich aktualisiert\",\r\n BESTIMMUNGSORT_ERFOLGREICH_ARCHIVIERT:\r\n \"Bestimmungszone erfolgreich gelöscht\",\r\n BESTIMMUNGSORT_ERFOLGREICH_ERSTELLT: \"Bestimmungszone erfolgreich erstellt\",\r\n BESTIMMUNGSORT_HINZUFUEGEN: \"Bestimmungszone hinzufügen\",\r\n BESTIMMUNGSZONE: \"Bestimmungszone\",\r\n BITTE_ABFALLSCHLUESSELNUMMER_EINGEBEN:\r\n \"Bitte Abfallschlüsselnummer eingeben\",\r\n BESTIMMUNGSORT_ID_NICHT_GEFUNDEN: \"Bestimmungszone-id nicht gefunden\",\r\n BITTE_ABTRANSPORT_FAHRZEUG_WAEHLEN: \"Bitte Abtransportfahrzeug auswählen\",\r\n BITTE_ABTRANSPORTZONE_WAEHLEN: \"Bitte Abtransportzone auswählen\",\r\n BITTE_ADRESSE_EINGEBEN: \"Bitte Adresse eingeben\",\r\n BITTE_ANLIEFERUNGS_FAHRZEUG_WAEHLEN: \"Bitte Anlieferungsfahrzeug auswählen\",\r\n BITTE_ANLIEFERUNGSZONE_WAEHLEN: \"Bitte Anlieferungszone auswählen\",\r\n BITTE_BELADUNGSZEIT_EINGEBEN: \"Bitte Beladungsdauer (in Minuten) eingeben\",\r\n BITTE_ENGLISCHER_UEBERSETZUNG: \"Bitte englische Übersetzung\",\r\n BITTE_EUROKLASSE_EINGEBEN: \"Bitte Euroklasse des Fahrzeuges eingeben\",\r\n BITTE_FAHRZEUGANZAHL_EINGEBEN: \"Bitte Fahrzeuganzahl eingeben\",\r\n BITTE_FRAKTION_WAEHLEN: \"Bitte Fraktion eingeben\",\r\n BITTE_FRANZOESICHE_UEBERSETZUNG: \"Bitte französische Übersetzung\",\r\n BITTE_DEUTSCHER_UEBERSETZUNG: \"Bitte deutsche Übersetzung\",\r\n BITTE_GEBURTSORT_EINGEBEN: \"Bitte Geburtsort eingeben\",\r\n BITTE_GEWICHT_EINGEBEN: \"Bitte Gewicht eingeben\",\r\n BITTE_GEWICHTEINHEIT_WAEHLEN: \"Bitte Gewichteinheit auswählen\",\r\n BITTE_NACHNAME_EINGEBEN: \"Bitte Nachname eingeben\",\r\n BITTE_ENTLADEZEIT_EINGEBEN: \"Bitte Entladedauer (in Minuten) angeben\",\r\n BITTE_NAME_EINGEBEN: \"Bitte Name eingeben\",\r\n BITTE_KENNZEICHEN_EINGEBEN: \"Bitte Kennzeichen eingeben\",\r\n BITTE_LEISTUNGSVERZEICHNISPOSITIONSNUMMER_EINGEBEN:\r\n \"Bitte Leistungsverzeichnispositionsnummer eingeben\",\r\n BITTE_MAIL_EINGEBEN: \"Bitte Email eingeben\",\r\n BITTE_MATERIAL_EINGEBEN: \"Bitte Material eingeben\",\r\n BITTE_MATERIALEINHEIT_WAEHLEN: \"Bitte Transporteinheit auswählen\",\r\n BITTE_MENGE_EINGEBEN: \"Bitte Menge eingeben\",\r\n BITTE_POLNISCHE_UEBERSETZUNG: \"Bitte polnische Übersetzung\",\r\n BITTE_POSITIONSNUMMER_EINGEBEN: \"Bitte Positionsnummer eingeben\",\r\n BITTE_PROJEKTBETILIGTER_AUSWAEHLEN: \"Bitte Projektbeteiligter auswählen\",\r\n BITTE_RESSOURCE_AUSWAEHLEN: \"Bitte Ressource auswaehlen\",\r\n BITTE_RUSSISCHE_UEBERSETZUNG: \"Bitte russische Übersetzung\",\r\n BITTE_SPANISCHE_UEBERSETZUNG: \"Bitte spanische Übersetzung\",\r\n BITTE_STARTORT_EINGEBEN: \"Bitte Startort eingeben\",\r\n BITTE_TAG_AUSWAEHLEN: \"Bitte Tag auswählen\",\r\n BITTE_TELEFONNUMMER_EINGEBEN: \"Bitte Telefonnummer eingeben\",\r\n BITTE_TUERKISCHER_UEBERSETZUNG: \"Bitte türkische Übersetzung\",\r\n BITTE_UNTERNEHMEN_EINGEBEN: \"Bitte Unternehmen eingeben\",\r\n BITTE_VORNAME_EINGEBEN: \"Bitte Vorname eingeben\",\r\n BITTE_VOR_UND_NACHNAME_EINGEBEN: \"Bitte Vor- und Nachname eingeben\",\r\n BITTE_WIEDERHOLUNGEN_EINGEBEN: \"Bitte Wiederholungen eingeben\",\r\n BITTE_ZEITABSCHNITT_WAEHLEN: \"Bitte Zeitabschnitt auswählen\",\r\n BITTE_ZIELORT_WAEHLEN: \"Bitte Zielort auswählen\",\r\n CO2AEQUVIALENT: \"Co2Aequvialent\",\r\n DATEN_IN_KUERZE: \"Daten in Kürze verfügbar\",\r\n DEINE_NAECHSTEN_TRANSPORTE: \"Deine nächsten Transporte\",\r\n DETAILS: \"Details\",\r\n DETAILS_ZUR_FRAKTION: \"Details zur Fraktion\",\r\n DIENSTAG: \"Dienstag\",\r\n DONNERSTAG: \"Donnerstag\",\r\n EINSTELLUNGEN: \"Einstellungen\",\r\n EINZEL: \"Einzel\",\r\n EMPFAENGER: \"Empfänger\",\r\n EMPFAENGER_DATEN: \"Daten des Empfängers\",\r\n ENDZEIT: \"Endzeit\",\r\n ENGLISCH: \"Englisch\",\r\n ENTLADE_DATEN: \"Daten zur Entladung\",\r\n EINHEIT: \"Einheit\",\r\n ENGLISCH: \"Englisch\",\r\n EINSTELLUNGEN: \"Einstellungen\",\r\n ENTLADUNG: \"Entladung\",\r\n ENTLADEDAUER: \"Entladedauer (in Minuten)\",\r\n ENTLADEZEIT: \"Entladezeit\",\r\n ENTSORGUNGSART: \"Entsorgungsart\",\r\n EMPFAENGER: \"Empfänger\",\r\n EUROKLASSE: \"Euroklasse\",\r\n EXPORT_TOAST:\r\n \"Der Download wurde gestartet und läuft im Hintergrund während Ihrer Tätigkeiten in ALGO weiter. Bitte schließen Sie derweil ALGO nicht.\",\r\n FAHRZEUGANZAHL: \"Fahrzeuganzahl\",\r\n FCFS_VERFAHREN: \"FCFS-Verfahren\",\r\n FCFS_HELPER_TEXT_1:\r\n \"Möchten Sie nur ein Transport pro Zeitfenster erlauben, dann wählen Sie hier „Ja“.\",\r\n FEHLENDE_RECHTE: \"Fehlende Berechtigungen\",\r\n FORMULAR_NICHT_VALIDE: \"Formular nicht valide\",\r\n FRACHT: \"Fracht\",\r\n FRACHT_DATEN: \"Daten zur Fracht\",\r\n FRAKTION: \"Fraktion\",\r\n FRANZOESICH: \"Französisch\",\r\n FREITAG: \"Freitag\",\r\n FUELLE_FELD_AUS: \"Fülle dieses Feld aus\",\r\n GEBURTSORT: \"Geburtsort\",\r\n GEBURTSDATUM: \"Geburtsdatum\",\r\n GENEHMIGEN: \"Genehmigen\",\r\n GESPERRT: \"Gesperrt\",\r\n GEWICHT: \"Gewicht pro Transporteinheit\",\r\n GEWICHTEINHEIT: \"Gewichteinheit\",\r\n HEUTIGE_TAGESDISPOSTIONEN: \"Heutige Tagesdispositionen\",\r\n HOCHGELADEN_AM: \"Hochgeladen am\",\r\n HOCHGELADENE_UNTERLAGE: \"Hochgeladene Unterlage\",\r\n ID_NICHT_GEFUNDEN: \"Id konnte nicht gefunden werden\",\r\n INFORMATIONEN: \"Informationen\",\r\n JA: \"Ja\",\r\n KEINE_BESTIMMUNGSORT_ZUGEWIESEN:\r\n \"Wähle eine Ressource aus, um sie der Ressourcenlist hinzuzufügen.\",\r\n KEINE_EMAIL_WHITELIST:\r\n \"Bisher wurde keine E-Mail zur Whitelist hinzugefügt.\",\r\n KEIN_KOMMENTAR: \"Es wurde kein Kommentar angegeben\",\r\n KEINE_TRANSPORTE_ANGEMELDET: \"Keine Transporte angemeldet\",\r\n KEINE_UNTERLAGEN: \"Keine Unterlagen\",\r\n KEIN_VERANTWORTLICHE: \"Kein Verantwortliche vorhanden\",\r\n KENNZEICHEN: \"Kennzeichen\",\r\n KFZ_KENNZEICHEN: \"KFZ-Kennzeichen\",\r\n KOMMENTAR: \"Kommentar (unverbindlicher Hinweis)\",\r\n KOMMENTAR_EINGABEFELD:\r\n \"Hier können Sie einen Kommentar eingeben (unverbindlicher Hinweis)\",\r\n KONTAKTDATEN: \"Kontaktdaten des Verantwortlichen\",\r\n LEISTUNGSVERZEICHNISPOSITIONSNUMMER: \"Leistungsverzeichnispositionsnummer\",\r\n LFD_NR: \"Lfd. Nr\",\r\n LIEFERORT: \"Lieferort\",\r\n LIEFERFAHRZEUG: \"Lieferfahrzeug\",\r\n LIEFERTERMIN: \"Liefertermin\",\r\n LIEFERTEMIN_LIEGT_AUSSER_OEFFNUNGSZEITEN:\r\n \"Anlieferung-/Abholungstermin liegt außerhalb der An-/Ablieferungszeiten. Termin & Entladezeit muss innerhalb der An-/Ablieferungszeit liegen.\",\r\n LIEFERZEITEN: \"Lieferzeiten\",\r\n MAIL: \"Mail\",\r\n MATERIAL: \"Material\",\r\n MATERIALEINHEIT: \"Transporteinheit\",\r\n MENGE: \"Menge\",\r\n MODULANGABEN: \"Modulangaben\",\r\n MODULANGABEN_ERFOLGREICH_AKTUALISIERT:\r\n \"Modulangaben erfolgreich aktualisiert\",\r\n MODULUNTERLAGE_ERFOLGREICH_AKTUALISIERT:\r\n \"Modulunterlage erfolgreich aktualisiert\",\r\n MODULUNTERLAGE_ERFOLGREICH_ARCHIVIERT: \"Modulunterlage erfolgreich löscht\",\r\n MODULUNTERLAGE_ERFOLGREICH_ERSTELLT: \"Modulunterlage erfolgreich erstellt\",\r\n MODULANGABEN_SPEICHERN: \"Modulangaben speichern\",\r\n MODULUNTERLAGE_AENDERN: \"Modulunterlage bearbeiten\",\r\n MODULUNTERLAGE_AKTUALISIEREN: \"Modulunterlage aktualisieren\",\r\n MODULUNTERLAGE_ANZEIGEN: \"Modulunterlage anzeigen\",\r\n MODULUNTERLAGE_ARCHIVIEREN: \"Modulunterlage löschen\",\r\n MODULUNTERLAGE_HINZUFUEGEN: \"Modulunterlage hinzufügen\",\r\n MODULUNTERLAGEN: \"Modulunterlagen\",\r\n MODULVERANTWORTLICHER_MAIL: \"Mail des Verantwortlichen\",\r\n MODULVERANTWORTLICHER_MAIL_EINGABE:\r\n \"Bitte Mail des Verantwortlichen eingeben\",\r\n MODULVERANTWORTLICHER_TELEFONNUMMER: \"Telefonnummer des Verantwortlichen\",\r\n MODULVERANTWORTLICHER_TELEFONNUMMER_EINGABE:\r\n \"Bitte Telefonnummer des Verantwortlichen eingeben\",\r\n MONAT: \"Monat\",\r\n MONTAG: \"Montag\",\r\n MITTWOCH: \"Mittwoch\",\r\n NACHNAME: \"Nachname\",\r\n NAME: \"Name\",\r\n NAME_DER_RESSOURCE: \"Name der Ressource\",\r\n NEIN: \"Nein\",\r\n PDF_DATEI_ANZEIGEN: \"Document als PDF-Datei anzeigen\",\r\n POLNISCH: \"Polnisch\",\r\n POSITIONSNUMMER: \"Positionsnummer\",\r\n PREIS: \"Preis\",\r\n RESSOURCE: \"Ressource\",\r\n RESSOURCEN: \"Ressourcen\",\r\n RESSOURCENAUSWAHL: \"Ressourcenauswahl\",\r\n RESSOURCEN_AENDERN: \"Ressource bearbeiten\",\r\n RESSOURCEN_AKTUALISIEREN: \"Ressource aktualisieren\",\r\n RESSOURCEN_ARCHIVIEREN: \"Ressource löschen\",\r\n RESSOURCEN_ERFOLGREICH_AKTUALISIERT: \"Ressource erfolgreich aktualisiert\",\r\n RESSOURCEN_ERFOLGREICH_ARCHIVIERT: \"Ressource erfolgreich löscht\",\r\n RESSOURCEN_ERFOLGREICH_ERSTELLT: \"Ressource erfolgreich erstellt\",\r\n RESSOURCEN_ID_NICHT_GEFUNDEN: \"Ressource-Id konnte nicht gefunden werden\",\r\n RESSOURCEN_HINZUFUEGEN: \"Ressource hinzufügen\",\r\n RUSSISCH: \"Russisch\",\r\n SAMMEL: \"Sammel\",\r\n SAMSTAG: \"Samstag\",\r\n SONNTAG: \"Sonntag\",\r\n SERIE: \"Serie\",\r\n SPANISCH: \"Spanisch\",\r\n SPEZIAL: \"Spezial\",\r\n STATUS: \"Status\",\r\n STARTORT: \"Startort\",\r\n STARTZEIT: \"Startzeit\",\r\n TAG: \"Tag\",\r\n STORNIEREN: \"Stornieren\",\r\n TAGABSCHLIESSEN: \"Tag abschließen\",\r\n TAGABSCHLIESSEN_SICHERHEITSABFRAGE:\r\n \"Möchten Sie den Tag wirklich abschließen?\",\r\n TAGABSCHLIESSEN_TITLE: \"Tages-Disposition abschließen\",\r\n TAG_0: \"Sonntag\",\r\n TAG_1: \"Montag\",\r\n TAG_2: \"Dienstag\",\r\n TAG_3: \"Mittwoch\",\r\n TAG_4: \"Donnerstag\",\r\n TAG_5: \"Freitag\",\r\n TAG_6: \"Samstag\",\r\n TAG_BEREITS_ABGESCHLOSSEN: \"Tag bereits abgeschlossen\",\r\n TAG_ERFOLGREICH_ABGESCHLOSSEN: \"Tag wurde erfolgreich abgeschlossen\",\r\n TELEFONNUMMER: \"Telefonnummer\",\r\n TRACKING_HELPER_TEXT_1:\r\n \"Wählen Sie „Ja“, wenn Sie das Tracking eines Transportes aktivieren möchten.\",\r\n TRANSPORT: \"Transport\",\r\n TRANSPORT_ABTRANSPORT_LINK:\r\n \"Abholung von {{transportFirma}} für {{empfaengerFirma}} - Status {{status}}\",\r\n TRANSPORT_ANLIEFERUNG_LINK:\r\n \"{{transportFirma}} liefert {{material}} an {{empfaengerFirma}} - Status {{status}}\",\r\n TRANSPORT_ANMELDEN: \"Transport anmelden\",\r\n TRANSPORT_ANMELDEN_FRISTENDE: \"Fristende einer Transportanmeldung\",\r\n TRANSPORT_ANMELDEN_FRISTENDE_EINGABE: \"Bitte Fristende eingeben\",\r\n TRANSPORT_ANMELDEN_FRISTENDE_HELPER_TEXT_1:\r\n \"Bitte geben Sie an, bis zu welchem Zeitpunkt der Transport angemeldet werden kann, indem Sie die Anzahl der Tage angeben.\",\r\n TRANSPORT_ANMELDEN_FRISTENDE_HELPER_TEXT_2:\r\n \"Beispiel: Tragen Sie eine „2“ ein, ist die Transportanmeldung 2 Tage vorher gesperrt.\",\r\n TRANSPORT_ANZEIGEN: \"Transport anzeigen\",\r\n TRANSPORT_DATEN: \"Daten zum Transport\",\r\n TRANSPORT_DISPO: \"Dispositionen\",\r\n TRANSPORT_ERFOLGREICH_ANGEMELDET: \"Transport wurde erfolgreich angemeldet\",\r\n TRANSPORT_ERFOLGREICH_GENEHMIGT: \"Transport wurde erfolgreich genehmigt\",\r\n TRANSPORT_ERFOLGREICH_STORNIERT: \"Transport wurde erfolgreich storniert\",\r\n TRANSPORT_GENEHMEN: \"Genehmige Transport\",\r\n TRANSPORT_UEBERSICHT: \"Transport-Übersicht\",\r\n TRANSPORT_TRACKING: \"Transport-Tracking\",\r\n TRANSPORTEMAIL: \"E-Mail\",\r\n TRANSPORTUNTERNEHMEN: \"Unternehmen\",\r\n TRANSPORTTELEFONNUMMER: \"Telefonnummer\",\r\n TRANSPORT_STORNIEREN: \"Transport stornieren\",\r\n TRANSPORTSTARTORT: \"Startort\",\r\n TRANSPORTZIELORT: \"Zielort\",\r\n TRANSPORTE: \"Transporte\",\r\n TRANSPORTEUR: \"Transporteur\",\r\n TRANSPORTTYP: \"Transporttyp\",\r\n TUERKISCH: \"Türkisch\",\r\n TYP: \"Typ\",\r\n UNTERNEHMEN: \"Unternehmen\",\r\n UNTERLAGE: \"Unterlage\",\r\n UNTERLAGEN: \"Unterlagen\",\r\n UNTERLAGEN_ID_NICHT_GEFUNDEN: \"Unterlagen-Id konnte nicht gefunden werden\",\r\n VORNAME: \"Vorname\",\r\n VORNACHNAME: \"Vor- und Nachname\",\r\n VOR_UND_NACHNAME: \"Vor- und Nachname\",\r\n VORSCHAU: \"Vorschau\",\r\n WEITER: \"Weiter\",\r\n WHITELIST: \"Whitelist\",\r\n WIEDERHOLUNGEN: \"Wiederholungen\",\r\n WOCHE: \"Woche\",\r\n ZEITABSCHNITT: \"Zeitabschnitt\",\r\n ZIELORT: \"Zielort\",\r\n ZIELORT_AKTUALISIEREN: \"Zielort aktualisieren\",\r\n ZIELORT_AENDERN: \"Zielort ändern\",\r\n ZIELORT_ARCHIVIEREN: \"Zielort löschen\",\r\n ZIELORT_ERFOLGREICH_AKTUALISIERT: \"Zielort erfolgreich aktualisiert\",\r\n ZIELORT_ERFOLGREICH_ARCHIVIERT: \"Zielort erfolgreich löscht\",\r\n ZIELORT_ERFOLGREICH_ERSTELLT: \"Zielort erfolgreich erstellt\",\r\n ZIELORT_HINZUFUEGEN: \"Zielort hinzufügen\",\r\n ZIELORT_ID_NICHT_GEFUNDEN: \"Zielort-Id nicht gefunden\",\r\n ZU_DEN_TRANSPORTEN: \"Zu der Transport-Übersicht\",\r\n ZURUECK: \"Zurück\",\r\n ZUSAMMENFASSUNG_TRANSPORT_ANMELDUNG:\r\n \"Zusammenfassung Ihrer eingegeben Daten zur Transportanmeldung\",\r\n};\r\n","export const TRANSLATIONS_EN_NEWS = {\r\n ABBRECHEN: \"Cancel\",\r\n ABFRAGE_NACHRICHT_ARCHIVIEREN: \"Do you really want to delete the message\",\r\n ALLE: \"All\",\r\n AVISIERUNG: \"Notification system\",\r\n BEARBEITER: \"Person of edit\",\r\n BEARBEITERDATUM: \"Date of edit\",\r\n BEARBEITUNGS_MODAL: \"Clicking will open a modal for editing\",\r\n BEDEUTUNG_BLACKLIST:\r\n \"Emails of project participants added to the blacklist will not receive emails from the News module\",\r\n BILD: \"Image\",\r\n BITTE_MODUL_AUSWAEHLEN: \"Please select module\",\r\n BITTE_NACHRICHT_EINGEBEN: \"Please enter a message\",\r\n BITTE_PROJEKTBETILIGTER_AUSWAEHLEN: \"Please enter a Project participants\",\r\n BITTE_TITEL_EINGEBEN: \"Please enter a title\",\r\n CONTAINER: \"Shipping\",\r\n DASHBOARD: \"Dashboard\",\r\n EINSTELLUNGEN: \"Settings\",\r\n ERSTELLER: \"Person of create\",\r\n ERSTELLDATUM: \"Date of create\",\r\n ID_NOT_FOUND: \"Id could not be found\",\r\n JA: \"Yes\",\r\n KEINE_EMAIL_BLACKLIST: \"No email has been added to the blacklist yet.\",\r\n KEINE_NACHRICHTEN: \"The project has no messages yet.\",\r\n KONFIGURATION: \"Configuration\",\r\n KONFIGURATION_ERFOLGREICH_AKTUALISIERT: \"Configuration was successfully updated\",\r\n LOESCH_MODAL: \"Clicking will open a modal for deletion\",\r\n MAIL: \"Mail\",\r\n MAIL_KONFIGURATION_SPEICHERN: \"Save configuration of mail\",\r\n MODUL: \"Module\",\r\n NACHRICHT: \"Message\",\r\n NACHRICHT_AKTUALISIEREN: \"Update message\",\r\n NACHRICHT_ARCHIVIEREN: \"Archive message\",\r\n NACHRICHT_ERFOLGREICH_AKTUALISIERT: \"Message has been successfully updated\",\r\n NACHRICHT_ERFOLGREICH_ARCHIVIERT: \"Message has been successfully archived\",\r\n NACHRICHT_ERFOLGREICH_ERSTELLT: \"Message has been successfully created\",\r\n NACHRICHT_ERSTELLEN: \"Create message\",\r\n NACHRICHTEN: \"News\",\r\n NEIN: \"No\",\r\n NEWS: \"News\",\r\n PROJEKT: \"Project\",\r\n PROJEKTBETEILIGTE: \"Project participants\",\r\n PROJEKTNAME: \"Project Name\",\r\n TITEL: \"Title\",\r\n UEBERSICHT: \"Overview\",\r\n WARNUNG: \"Warning\",\r\n ZUTRITTSKONTROLL: \"Access-Control\",\r\n};\r\n","export const TRANSLATIONS_DE_NEWS = {\r\n ABBRECHEN: \"Abbrechen\",\r\n ABFRAGE_NACHRICHT_ARCHIVIEREN: \"Möchten Sie die Nachricht wirklich löschen\",\r\n ALLE: \"Alle\",\r\n AVISIERUNG: \"Avisierung\",\r\n BEARBEITER: \"Bearbeitende Person\",\r\n BEARBEITERDATUM: \"Bearbeitungsdatum\",\r\n BEARBEITUNGS_MODAL: \"Beim Klicken wird ein Modal zum Bearbeiten geöffnet\",\r\n BEDEUTUNG_BLACKLIST: \"Projektbeteiligten-E-Mails die der BlackList hinzugefügt werden, bekommen keine E-Mails vom News-Modul\",\r\n BILD: \"Bild\",\r\n BITTE_MODUL_AUSWAEHLEN: \"Bitte Modul auswählen\",\r\n BITTE_NACHRICHT_EINGEBEN: \"Bitte Nachricht eingeben\",\r\n BITTE_PROJEKTBETILIGTER_AUSWAEHLEN: \"Bitte Projektbeteiligter auswählen\",\r\n BITTE_TITEL_EINGEBEN: \"Bitte Titel eingeben\",\r\n CONTAINER: \"Container\",\r\n DASHBOARD: \"Dashboard\",\r\n EINSTELLUNGEN: \"Einstellungen\",\r\n ERSTELLER: \"Erstellende Person\",\r\n ERSTELLDATUM: \"Erstellungsdatum\",\r\n ID_NOT_FOUND: \"Id konnte nicht gefunden werden\",\r\n JA: \"Ja\",\r\n KEINE_EMAIL_BLACKLIST: \"Bisher wurde keine E-Mail zur Blacklist hinzugefügt.\",\r\n KEINE_NACHRICHTEN: \"Das Projekt hat noch keine Nachrichten.\",\r\n KONFIGURATION: \"Konfiguration\",\r\n KONFIGURATION_ERFOLGREICH_AKTUALISIERT: \"Konfiguration erfolgreich aktualisiert\",\r\n LOESCH_MODAL: \"Beim Klicken wird ein Modal zum Löschen geöffnet\",\r\n MAIL: \"E-Mail\",\r\n MAIL_KONFIGURATION_SPEICHERN: \"E-Mail-Konfiguration speichern\",\r\n MODUL: \"Modul\",\r\n NACHRICHT: \"Nachricht\",\r\n NACHRICHT_AKTUALISIEREN: \"Nachricht aktualisieren\",\r\n NACHRICHT_ARCHIVIEREN: \"Nachricht archivieren\",\r\n NACHRICHT_ERFOLGREICH_AKTUALISIERT:\r\n \"Nachricht wurde erfolgreich aktualisiert\",\r\n NACHRICHT_ERFOLGREICH_ARCHIVIERT: \"Nachricht wurde erfolgreich archiviert\",\r\n NACHRICHT_ERFOLGREICH_ERSTELLT: \"Nachricht wurde erfolgreich erstellt\",\r\n NACHRICHT_ERSTELLEN: \"Nachricht erstellen\",\r\n NACHRICHTEN: \"Nachrichten\",\r\n NEIN: \"Nein\",\r\n NEWS: \"News\",\r\n PROJEKT: \"Projekt\",\r\n PROJEKTBETEILIGTE: \"Projektbeteiligte\",\r\n PROJEKTNAME: \"Projektname\",\r\n TITEL: \"Titel\",\r\n UEBERSICHT: \"Übersicht\",\r\n WARNUNG: \"Warnung\",\r\n ZUTRITTSKONTROLL: \"Zutrittskontroll\",\r\n};","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nexport { _assertThisInitialized as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nexport { _inherits as default };","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nexport { _possibleConstructorReturn as default };","function _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _toArray(r) {\n return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();\n}\nexport { _toArray as default };","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Logger);\n this.init(concreteLogger, options);\n }\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread$6(_objectSpread$6({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n return Logger;\n}();\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n this.observers = {};\n }\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n var _super = _createSuper$3(ResourceStore);\n function ResourceStore(data) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n _classCallCheck(this, ResourceStore);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n return _this;\n }\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$5(_objectSpread$5({}, pack), resources);\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$5(_objectSpread$5({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n var _super = _createSuper$2(Translator);\n function Translator(services) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Translator);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (_typeof(options) === 'object') options = _objectSpread$4({}, options);\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: \"\".concat(namespace).concat(nsSeparator).concat(key),\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace\n };\n }\n return key;\n }\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$4(_objectSpread$4({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$4(_objectSpread$4({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$4(_objectSpread$4({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$4(_objectSpread$4({}, options), {\n interpolation: _objectSpread$4(_objectSpread$4({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n return null;\n }\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$4({\n i18nResolved: resolved\n }, options) : options, this);\n }\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n var possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n var cleanedLng = _this.formatLanguageCode(code);\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n var lngOnly = _this.getLanguagePartFromCode(code);\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, PluralResolver);\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction deepFindWithDefaults(data, defaultData, key) {\n var keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n var ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Interpolator);\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n this.init(options);\n }\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = deepFindWithDefaults(data, defaultData, key, _this.options.keySeparator, _this.options.ignoreJSONStructure);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(deepFindWithDefaults(data, defaultData, k, _this.options.keySeparator, _this.options.ignoreJSONStructure), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n var clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n clonedOptions = _objectSpread$3({}, options);\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n var doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n }]);\n return Interpolator;\n}();\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Formatter);\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$2(_objectSpread$2({}, opt), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val, opt.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, opt) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$2({}, opt));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng) {\n var _this = this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var formats = _format.split(this.formatSeparator);\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n if (_this.formats[formatName]) {\n var formatted = mem;\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$2(_objectSpread$2(_objectSpread$2({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n return mem;\n }, value);\n return result;\n }\n }]);\n return Formatter;\n}();\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n var _super = _createSuper$1(Connector);\n function Connector(backend, store, services) {\n var _this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _classCallCheck(this, Connector);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(function (n) {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n this.readingCalls++;\n var resolver = function resolver(err, data) {\n _this3.readingCalls--;\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n var fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n var r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return resolver(null, data);\n })[\"catch\"](resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function () {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n var opts = _objectSpread$1(_objectSpread$1({}, options), {}, {\n isUpdate: isUpdate\n });\n var fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n var r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(function (data) {\n return clb(null, data);\n })[\"catch\"](clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n var _super = _createSuper(I18n);\n function I18n() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n _classCallCheck(this, I18n);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n var defOpts = get();\n this.options = _objectSpread(_objectSpread(_objectSpread({}, defOpts), this.options), transformOptions(options));\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread(_objectSpread({}, defOpts.interpolation), this.options.interpolation);\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n var formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n return _this2;\n };\n });\n var deferred = defer();\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n _this4.setResolvedLanguage(l);\n };\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n _this4.translator.changeLanguage(l);\n _this4.isLanguageChangingTo = undefined;\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector && _this4.services.languageDetector.cacheUserLanguage) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n var fixedT = function fixedT(key, opts) {\n var options;\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(function (k) {\n return \"\".concat(options.keyPrefix).concat(keySeparator).concat(k);\n });\n } else {\n resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n }\n return _this5.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n var lng = options.lng || this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n var deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n var languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var mergedOptions = _objectSpread(_objectSpread(_objectSpread({}, this.options), options), {\n isClone: true\n });\n var clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n return I18n;\n}(EventEmitter);\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar dir = instance.dir;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import { TRANSLATIONS_EN } from \"./locales/en/translation.js\";\r\nimport { TRANSLATIONS_DE } from \"./locales/de/translation.js\";\r\nimport { TRANSLATIONS_DE_ZUKO } from \"./locales/de/translation-zuko.js\";\r\nimport { TRANSLATIONS_EN_ZUKO } from \"./locales/en/translation-zuko.js\";\r\nimport { TRANSLATIONS_DE_PROJEKT } from \"./locales/de/translation-projekt.js\";\r\nimport { TRANSLATIONS_EN_PROJEKT } from \"./locales/en/translation-projekt.js\";\r\nimport { TRANSLATION_EN_DATENSCHUTZ } from \"./locales/en/translation-datenschutz.js\";\r\nimport { TRANSLATION_DE_DATENSCHUTZ } from \"./locales/de/translation-datenschutz.js\";\r\nimport { TRANSLATION_EN_NUTZUNGSBEDINGUNGEN } from \"./locales/en/translation-agb.js\";\r\nimport { TRANSLATION_DE_NUTZUNGSBEDINGUNGEN } from \"./locales/de/translation-agb.js\";\r\nimport { TRANSLATIONS_EN_LAENDER } from \"./locales/en/translation-laender.js\";\r\nimport { TRANSLATIONS_DE_LAENDER } from \"./locales/de/translation-laender.js\";\r\nimport { TRANSLATIONS_EN_GEWERKE } from \"./locales/en/translation-gewerke\";\r\nimport { TRANSLATIONS_DE_GEWERKE } from \"./locales/de/translation-gewerke.js\";\r\nimport { TRANSLATIONS_EN_DASHBOARD } from \"./locales/en/translation-dashboard.js\";\r\nimport { TRANSLATIONS_DE_DASHBOARD } from \"./locales/de/translation-dashboard.js\";\r\nimport { TRANSLATIONS_EN_CONTAINER } from \"./locales/en/translation-container.js\";\r\nimport { TRANSLATIONS_DE_CONTAINER } from \"./locales/de/translation-container.js\";\r\nimport { TRANSLATIONS_EN_AVIS } from \"./locales/en/translation-avis.js\";\r\nimport { TRANSLATIONS_DE_AVIS } from \"./locales/de/translation-avis.js\";\r\nimport { TRANSLATIONS_EN_NEWS } from \"./locales/en/translation-news.js\";\r\nimport { TRANSLATIONS_DE_NEWS } from \"./locales/de/translation-news.js\";\r\nimport i18next from \"i18next\";\r\n\r\nexport const init = async () => {\r\n var language = localStorage.getItem(\"language\") || navigator.language;\r\n var lang = language?.split(\"-\")[0];\r\n await i18next.init({\r\n debug: false,\r\n fallbackLng: \"de\",\r\n initImmediate: false,\r\n keySeparator: \".\",\r\n resources: {\r\n de: {\r\n translation: {\r\n ALLGEMEIN: TRANSLATIONS_DE,\r\n AVIS: TRANSLATIONS_DE_AVIS,\r\n CONTAINER: TRANSLATIONS_DE_CONTAINER,\r\n DASHBOARD: TRANSLATIONS_DE_DASHBOARD,\r\n DATENSCHUTZ: TRANSLATION_DE_DATENSCHUTZ,\r\n GEWERKE: TRANSLATIONS_DE_GEWERKE,\r\n LAENDER: TRANSLATIONS_DE_LAENDER,\r\n NEWS: TRANSLATIONS_DE_NEWS,\r\n NUTZUNGSBEDINGUNGEN: TRANSLATION_DE_NUTZUNGSBEDINGUNGEN,\r\n PROJEKT: TRANSLATIONS_DE_PROJEKT,\r\n ZUKO: TRANSLATIONS_DE_ZUKO,\r\n },\r\n },\r\n en: {\r\n translation: {\r\n ALLGEMEIN: TRANSLATIONS_EN,\r\n AVIS: TRANSLATIONS_EN_AVIS,\r\n CONTAINER: TRANSLATIONS_EN_CONTAINER,\r\n DASHBOARD: TRANSLATIONS_EN_DASHBOARD,\r\n DATENSCHUTZ: TRANSLATION_EN_DATENSCHUTZ,\r\n GEWERKE: TRANSLATIONS_EN_GEWERKE,\r\n LAENDER: TRANSLATIONS_EN_LAENDER,\r\n NEWS: TRANSLATIONS_EN_NEWS,\r\n NUTZUNGSBEDINGUNGEN: TRANSLATION_EN_NUTZUNGSBEDINGUNGEN,\r\n PROJEKT: TRANSLATIONS_EN_PROJEKT,\r\n ZUKO: TRANSLATIONS_EN_ZUKO,\r\n },\r\n },\r\n },\r\n lng: lang,\r\n saveMissing: true,\r\n });\r\n};\r\n\r\nexport const changeLanguage = async (language) => {\r\n i18next.changeLanguage(language);\r\n};\r\n\r\nexport function translate(name, object) {\r\n return i18next.t(name, object);\r\n}\r\n\r\nexport function replaceSonderzeichen(name) {\r\n const result = name\r\n .split(\" \")\r\n .join(\"_\")\r\n .split(\"-\")\r\n .join(\"_\")\r\n .replace(/[´`~!@#$%^&*()|+\\=?;:'\"^,’.<>\\{\\}\\[\\]\\\\\\/]/gi, \"\");\r\n return result;\r\n}\r\n","import { navigate, showToast } from \"./algo-app\";\r\nimport { translate } from \"../../i18n.js\";\r\n\r\nconst errorHandler = (err) => (dispatch) => {\r\n let error;\r\n if (err && err.payload) {\r\n error = translate(\"ALLGEMEIN.ERROR_HANDLER.FOLGENDE_FEHLER\") + \":\\n \";\r\n for (const [key, value] of Object.entries(err.payload)) {\r\n if (value && value.length > 0) error += value + \"\\n\";\r\n }\r\n dispatch(showToast({ text: error, type: \"error\" }));\r\n return;\r\n }\r\n if (err && err.error != null) {\r\n dispatch(showToast({ text: err.error?.errorMessage, type: \"error\" }));\r\n return;\r\n }\r\n if (err?.status !== null) {\r\n if (err?.status === 404) {\r\n dispatch(\r\n showToast({\r\n text: translate(\"ALLGEMEIN.ERROR_HANDLER.NICHT_GEFUNDEN\"),\r\n type: \"error\",\r\n })\r\n );\r\n return;\r\n }\r\n if (err?.status === 401) {\r\n dispatch(\r\n navigate({\r\n view: \"identity-anmelden-view\",\r\n layout: \"blank-layout\",\r\n })\r\n );\r\n dispatch(\r\n showToast({\r\n text: translate(\"ALLGEMEIN.ERROR_HANDLER.NICHT_ANGEMELDET\"),\r\n type: \"error\",\r\n })\r\n );\r\n return;\r\n }\r\n if (err?.status === 500) {\r\n dispatch(\r\n showToast({\r\n text: translate(\"ALLGEMEIN.ERROR_HANDLER.SERVER_ERROR\"),\r\n type: \"error\",\r\n })\r\n );\r\n return;\r\n }\r\n if (err?.status === 502) {\r\n dispatch(\r\n showToast({\r\n text: translate(\r\n \"ALLGEMEIN.ERROR_HANDLER.SERVER_NICHT_ERREICHBAR\"\r\n ),\r\n type: \"error\",\r\n })\r\n );\r\n return;\r\n }\r\n if (err?.status === 499) {\r\n dispatch(\r\n showToast({\r\n text: translate(\r\n \"ALLGEMEIN.ERROR_HANDLER.ZEITUEBERSCHREITUNG\"\r\n ),\r\n type: \"error\",\r\n })\r\n );\r\n return;\r\n }\r\n dispatch(\r\n showToast({\r\n text: translate(\r\n \"ALLGEMEIN.ERROR_HANDLER.ES_IST_EIN_FEHLER_AUFGETRETEN\"\r\n ),\r\n type: \"error\",\r\n })\r\n );\r\n return;\r\n } else {\r\n dispatch(\r\n showToast({\r\n text: translate(\r\n \"ALLGEMEIN.ERROR_HANDLER.ES_IST_EIN_FEHLER_AUFGETRETEN\"\r\n ),\r\n type: \"error\",\r\n })\r\n );\r\n return;\r\n }\r\n};\r\n\r\nexport default errorHandler;\r\n","import errorHandler from \"./errorHandling\";\r\n\r\nexport const LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\r\nexport const ABMELDEN_SUCCESS = \"ABMELDEN_SUCCESS\";\r\nexport const REGISTRIEREN_SUCCESS = \"REGISTRIEREN_SUCCESS\";\r\nexport const IDENTITY_ACTION_FAIL = \"IDENTITY_ACTION_FAIL\";\r\nexport const IDENTITY_ACTION_BEGIN = \"IDENTITY_ACTION_BEGIN\";\r\nexport const RESET_PASSWORD_SUCCESS = \"RESET_PASSWORD_SUCCESS\";\r\nexport const FETCH_BENUTZERPROFIL_SUCCESS = \"FETCH_BENUTZERPROFIL_SUCCESS\";\r\nexport const GENERATE_PASSWORD_RESET_TOKEN_SUCCESS =\r\n \"GENERATE_PASSWORD_RESET_TOKEN_SUCCESS\";\r\n\r\nconst apiHost = window.Algo.apiHost,\r\n appInsights = window.Algo.appInsights,\r\n getRequestOptions = window.Algo.getRequestOptions,\r\n postRequestOptions = window.Algo.postRequestOptions;\r\n\r\nexport const abmelden = () => async (dispatch) => {\r\n appInsights.startTrackEvent(\"abmelden\");\r\n dispatch({ type: IDENTITY_ACTION_BEGIN });\r\n const response = await fetch(\r\n `${apiHost}/api/identity/v3/abmelden/`,\r\n postRequestOptions\r\n );\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: json });\r\n appInsights.stopTrackEvent(\"abmelden\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch(errorHandler(response));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: response });\r\n appInsights.stopTrackEvent(\"abmelden\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({ type: ABMELDEN_SUCCESS, payload: json.payload });\r\n appInsights.stopTrackEvent(\"abmelden\", { success: json.success });\r\n }\r\n};\r\n\r\nexport const anmelden = (data) => async (dispatch) => {\r\n appInsights.startTrackEvent(\"anmelden\");\r\n dispatch({ type: IDENTITY_ACTION_BEGIN });\r\n const response = await fetch(`${apiHost}/api/identity/v3/anmelden/`, {\r\n method: \"POST\",\r\n body: data,\r\n });\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: json });\r\n appInsights.stopTrackEvent(\"anmelden\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: response });\r\n appInsights.stopTrackEvent(\"anmelden\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({ type: LOGIN_SUCCESS, payload: json.payload });\r\n appInsights.stopTrackEvent(\"anmelden\", { success: json.success });\r\n }\r\n};\r\n\r\nexport const registrieren = (data) => async (dispatch) => {\r\n appInsights.startTrackEvent(\"registrieren\");\r\n dispatch({ type: IDENTITY_ACTION_BEGIN });\r\n const response = await fetch(`${apiHost}/api/identity/v3/registrieren/`, {\r\n method: \"POST\",\r\n body: data,\r\n });\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: json });\r\n appInsights.stopTrackEvent(\"registrieren\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch(errorHandler(response));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: response });\r\n appInsights.stopTrackEvent(\"registrieren\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({ type: REGISTRIEREN_SUCCESS, payload: json.payload });\r\n appInsights.stopTrackEvent(\"registrieren\", { success: json.success });\r\n }\r\n};\r\n\r\nexport const kennwortzuruecksetzung = (data) => async (dispatch) => {\r\n appInsights.startTrackEvent(\"kennwortzuruecksetzung\");\r\n dispatch({ type: IDENTITY_ACTION_BEGIN });\r\n const response = await fetch(\r\n `${apiHost}/api/identity/v3/kennwortzuruecksetzung/`,\r\n {\r\n method: \"POST\",\r\n body: data,\r\n }\r\n );\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: json });\r\n appInsights.stopTrackEvent(\"kennwortzuruecksetzung\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch(errorHandler(response));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: response });\r\n appInsights.stopTrackEvent(\"kennwortzuruecksetzung\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({ type: RESET_PASSWORD_SUCCESS, payload: json.payload });\r\n appInsights.stopTrackEvent(\"kennwortzuruecksetzung\", {\r\n success: json.success,\r\n });\r\n }\r\n};\r\n\r\nexport const fetchBenutzerprofil = () => async (dispatch) => {\r\n appInsights.startTrackEvent(\"fetchBenutzerprofil\");\r\n dispatch({ type: IDENTITY_ACTION_BEGIN });\r\n const response = await fetch(\r\n `${apiHost}/api/identity/v3/benutzerprofil/`,\r\n getRequestOptions\r\n );\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: json });\r\n appInsights.stopTrackEvent(\"fetchBenutzerprofil\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: response });\r\n appInsights.stopTrackEvent(\"fetchBenutzerprofil\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({ type: FETCH_BENUTZERPROFIL_SUCCESS, payload: json.payload });\r\n appInsights.stopTrackEvent(\"fetchBenutzerprofil\", {\r\n success: json.success,\r\n });\r\n }\r\n};\r\n\r\nexport const kennwortzuruecksetzungsAnfrage = (data) => async (dispatch) => {\r\n appInsights.startTrackEvent(\"kennwortzuruecksetzungsAnfrage\");\r\n dispatch({ type: IDENTITY_ACTION_BEGIN });\r\n const response = await fetch(\r\n `${apiHost}/api/identity/v3/kennwortzuruecksetzungs-anfrage`,\r\n {\r\n method: \"POST\",\r\n body: data,\r\n }\r\n );\r\n let json;\r\n try{\r\n json = await response.json();\r\n }catch(error){\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: json });\r\n appInsights.stopTrackEvent(\"kennwortzuruecksetzungsAnfrage\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch(errorHandler(response));\r\n dispatch({ type: IDENTITY_ACTION_FAIL, error: response });\r\n appInsights.stopTrackEvent(\"kennwortzuruecksetzungsAnfrage\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({ type: GENERATE_PASSWORD_RESET_TOKEN_SUCCESS });\r\n appInsights.stopTrackEvent(\"kennwortzuruecksetzungsAnfrage\", {\r\n success: json.payload,\r\n });\r\n }\r\n};\r\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","export const PROJEKT_ACTION_FAIL = \"PROJEKT_ACTION_FAIL\";\r\nexport const PROJEKT_ACTION_BEGIN = \"PROJEKT_ACTION_BEGIN\";\r\nexport const FETCH_PROJEKT_SUCCESS = \"FETCH_PROJEKT_SUCCESS\";\r\nexport const RESET_PROJEKT_SUCCESS = \"RESET_PROJEKT_SUCCESS\";\r\nexport const POST_PROJEKT_ERSTELLEN_SUCCESS = \"POST_PROJEKT_ERSTELLEN_SUCCESS\";\r\n\r\n//#region fetchProjektStammdaten\r\nexport const FETCH_PROJEKT_KONFIGURATION_ACTION_BEGIN =\r\n \"FETCH_PROJEKT_KONFIGURATION_ACTION_BEGIN\";\r\nexport const FETCH_PROJEKT_KONFIGURATION_ACTION_FAIL =\r\n \"FETCH_PROJEKT_KONFIGURATION_ACTION_FAIL\";\r\nexport const FETCH_PROJEKT_KONFIGURATION_ACTION_SUCCESS =\r\n \"FETCH_PROJEKT_KONFIGURATION_ACTION_SUCCESS\";\r\nexport const RESET_PROJEKT_STAMMDATEN_SUCCESS =\r\n \"RESET_PROJEKT_STAMMDATEN_SUCCESS\";\r\n//#endregion\r\nimport errorHandler from \"../errorHandling.js\";\r\nimport moment from \"moment\";\r\n\r\nconst apiHost = window.Algo.apiHost,\r\n appInsights = window.Algo.appInsights,\r\n getRequestOptions = window.Algo.getRequestOptions;\r\nlet abortProjektKonfiguration;\r\n\r\nexport const resetProjekt = () => (dispatch) => {\r\n dispatch({ type: RESET_PROJEKT_SUCCESS });\r\n appInsights.trackEvent({ name: \"resetProjekt\" });\r\n};\r\n\r\nexport const cancelProjektStammdatenRequests = () => (dispatch) => {\r\n try {\r\n abortProjektKonfiguration?.abort();\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n\r\n dispatch({ type: RESET_PROJEKT_STAMMDATEN_SUCCESS });\r\n appInsights.trackEvent({ name: \"cancelProjektStammdatenRequests\" });\r\n};\r\n\r\nexport const fetchProjekt = (projektId) => async (dispatch) => {\r\n appInsights.startTrackEvent(\"fetchProjekt\");\r\n dispatch({ type: PROJEKT_ACTION_BEGIN });\r\n const response = await fetch(\r\n `${apiHost}/api/projekt/v2/${projektId}/projekt.json/`,\r\n getRequestOptions\r\n );\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({ type: PROJEKT_ACTION_FAIL, error: json });\r\n appInsights.stopTrackEvent(\"fetchProjekt\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch(errorHandler(response));\r\n dispatch({ type: PROJEKT_ACTION_FAIL, error: response });\r\n appInsights.stopTrackEvent(\"fetchProjekt\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({ type: FETCH_PROJEKT_SUCCESS, payload: json.payload });\r\n appInsights.stopTrackEvent(\"fetchProjekt\", { success: json.success });\r\n return json.payload;\r\n }\r\n};\r\n\r\nexport const post_projektErstellenAsync = (e) => async (dispatch) => {\r\n appInsights.startTrackEvent(\"post_projektErstellenAsync\");\r\n dispatch({ type: PROJEKT_ACTION_BEGIN });\r\n const form = e.srcElement || e.target;\r\n const url = form.dataset.url;\r\n const formData = new FormData(form);\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n body: formData,\r\n });\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({ type: PROJEKT_ACTION_FAIL, error: json });\r\n appInsights.stopTrackEvent(\"fetchProjekt\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch(errorHandler(response));\r\n dispatch({ type: PROJEKT_ACTION_FAIL, error: response });\r\n appInsights.stopTrackEvent(\"fetchProjekt\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({\r\n type: POST_PROJEKT_ERSTELLEN_SUCCESS,\r\n payload: json.payload,\r\n });\r\n appInsights.stopTrackEvent(\"fetchProjekt\", { success: json.success });\r\n return json.payload;\r\n }\r\n};\r\n\r\nexport const fetchProjektKonfiguration = (projektId) => async (dispatch) => {\r\n appInsights.startTrackEvent(\"fetchProjektKonfiguration\");\r\n dispatch({\r\n type: FETCH_PROJEKT_KONFIGURATION_ACTION_BEGIN,\r\n });\r\n abortProjektKonfiguration =\r\n typeof \"AbortController\" !== \"undefined\" && new AbortController();\r\n const response = await fetch(\r\n `${apiHost}/api/projekt/admin/${projektId}/projekt-konfiguration`,\r\n {\r\n method: \"GET\",\r\n signal: abortProjektKonfiguration.signal,\r\n }\r\n );\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({\r\n type: FETCH_PROJEKT_KONFIGURATION_ACTION_FAIL,\r\n error: { errorMessage: json },\r\n });\r\n appInsights.stopTrackEvent(\"fetchProjektKonfiguration\", {\r\n success: json.success,\r\n error: { errorMessage: json },\r\n });\r\n } else {\r\n dispatch(errorHandler(response));\r\n dispatch({\r\n type: FETCH_PROJEKT_KONFIGURATION_ACTION_FAIL,\r\n error: { errorMessage: response },\r\n });\r\n appInsights.stopTrackEvent(\"fetchProjektKonfiguration\", {\r\n success: response.ok,\r\n error: { errorMessage: response },\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({\r\n type: FETCH_PROJEKT_KONFIGURATION_ACTION_SUCCESS,\r\n payload: json.payload,\r\n });\r\n appInsights.stopTrackEvent(\"fetchProjektKonfiguration\", {\r\n success: json.success,\r\n });\r\n return json.payload;\r\n }\r\n};\r\nexport const aktualisiereProjektKonfiguration = (e) => async (dispatch) => {\r\n appInsights.startTrackEvent(\"aktualisiereProjektKonfiguration\");\r\n dispatch({ type: FETCH_PROJEKT_KONFIGURATION_ACTION_BEGIN });\r\n const form = e.srcElement || e.target,\r\n url = form.dataset.url,\r\n formData = new FormData(form);\r\n formData?.forEach((value, key) => {\r\n if (key?.indexOf(\"Oeffnung\") > -1 || key?.indexOf(\"Schliessung\") > -1) {\r\n formData.set(key, moment(value, \"HH:mm\").utc().format(\"HH:mm\"));\r\n }\r\n });\r\n\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n body: formData,\r\n });\r\n let json;\r\n try {\r\n json = await response.json();\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n if (!response.ok) {\r\n if (json && !json.success) {\r\n dispatch(errorHandler(json));\r\n dispatch({\r\n type: FETCH_PROJEKT_KONFIGURATION_ACTION_FAIL,\r\n error: json,\r\n });\r\n appInsights.stopTrackEvent(\"aktualisiereProjektKonfiguration\", {\r\n success: json.success,\r\n error: json,\r\n });\r\n } else {\r\n dispatch(errorHandler(response));\r\n dispatch({\r\n type: FETCH_PROJEKT_KONFIGURATION_ACTION_FAIL,\r\n error: response,\r\n });\r\n appInsights.stopTrackEvent(\"aktualisiereProjektKonfiguration\", {\r\n success: response.ok,\r\n error: response,\r\n });\r\n }\r\n }\r\n if (json?.success) {\r\n dispatch({\r\n type: FETCH_PROJEKT_KONFIGURATION_ACTION_SUCCESS,\r\n payload: json.payload,\r\n });\r\n appInsights.stopTrackEvent(\"aktualisiereProjektKonfiguration\", {\r\n success: json.success,\r\n });\r\n return json.payload;\r\n }\r\n};\r\n\r\nexport const holeDSGVO =\r\n (projektId, datenschutzverordnungFielName) => async (dispatch) => {\r\n const response = await fetch(\r\n `${apiHost}/api/projekt/admin/${projektId}/download-dsgvo?datenschutzverordnungFielName=${datenschutzverordnungFielName}`,\r\n getRequestOptions\r\n );\r\n let json;\r\n try {\r\n json = await response.blob();\r\n return json;\r\n } catch (error) {\r\n dispatch(errorHandler(error));\r\n }\r\n };\r\n","import {\r\n ALGO_APP_NAVIGATE_SUCCESS,\r\n ALGO_APP_SHOW_TOAST_SUCCESS,\r\n ALGO_APP_RESET_TOAST_SUCCESS,\r\n ALGO_APP_TOGGLE_SIDEBAR_SUCCESS,\r\n ALGO_APP_SET_PROJEKT_ID_SUCCESS,\r\n} from '../actions/algo-app.js';\r\n\r\nconst algoAppState = {\r\n toast: {},\r\n navigator: {},\r\n projektId: '',\r\n isSidebarToggled: false,\r\n};\r\n\r\n\r\nconst savedState = localStorage.getItem('savedState') || JSON.stringify({ ...algoAppState });\r\nconst INITIAL_STATE = JSON.parse(savedState).algoAppState || algoAppState;\r\n\r\nconst algoApp = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n case ALGO_APP_NAVIGATE_SUCCESS:\r\n return {\r\n ...state,\r\n navigator: action.payload\r\n };\r\n case ALGO_APP_SHOW_TOAST_SUCCESS:\r\n return {\r\n ...state,\r\n toast: action.payload\r\n };\r\n case ALGO_APP_RESET_TOAST_SUCCESS:\r\n return {\r\n ...state,\r\n toast: {}\r\n };\r\n case ALGO_APP_TOGGLE_SIDEBAR_SUCCESS:\r\n return {\r\n ...state,\r\n isSidebarToggled: !state.isSidebarToggled\r\n };\r\n case ALGO_APP_SET_PROJEKT_ID_SUCCESS:\r\n return {\r\n ...state,\r\n projektId: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default algoApp;","import {\r\n LOGIN_SUCCESS,\r\n ABMELDEN_SUCCESS,\r\n IDENTITY_ACTION_FAIL,\r\n REGISTRIEREN_SUCCESS,\r\n IDENTITY_ACTION_BEGIN,\r\n RESET_PASSWORD_SUCCESS,\r\n FETCH_BENUTZERPROFIL_SUCCESS,\r\n GENERATE_PASSWORD_RESET_TOKEN_SUCCESS\r\n} from '../actions/identity';\r\n\r\nconst identityState = {\r\n error: null,\r\n loading: false,\r\n benutzerprofil: {},\r\n};\r\n\r\nconst savedState = localStorage.getItem('savedState') || JSON.stringify({ ...identityState });\r\nconst INITIAL_STATE = JSON.parse(savedState).identityState || identityState;\r\n\r\nconst identity = (state = INITIAL_STATE, action) => {\r\n switch (action.type) {\r\n case LOGIN_SUCCESS:\r\n return {\r\n ...state,\r\n error: null,\r\n loading: false,\r\n benutzerprofil: action.payload\r\n };\r\n case REGISTRIEREN_SUCCESS:\r\n return {\r\n ...state,\r\n error: null,\r\n loading: false\r\n };\r\n case GENERATE_PASSWORD_RESET_TOKEN_SUCCESS:\r\n return {\r\n ...state,\r\n error: null,\r\n loading: false\r\n };\r\n case RESET_PASSWORD_SUCCESS:\r\n return {\r\n ...state,\r\n error: null,\r\n loading: false,\r\n benutzerprofil: action.payload\r\n };\r\n case ABMELDEN_SUCCESS:\r\n return {\r\n ...state,\r\n error: null,\r\n loading: false,\r\n benutzerprofil: action.payload\r\n };\r\n case IDENTITY_ACTION_FAIL:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error\r\n };\r\n case IDENTITY_ACTION_BEGIN:\r\n return {\r\n ...state,\r\n error: null,\r\n loading: true,\r\n };\r\n case FETCH_BENUTZERPROFIL_SUCCESS:\r\n return {\r\n ...state,\r\n error: null,\r\n loading: false,\r\n benutzerprofil: action.payload\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default identity;","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nexport const nativeShadow = !(\n window['ShadyDOM'] && window['ShadyDOM']['inUse']\n);\n/** @type {boolean} */\nlet nativeCssVariables_;\n\n/**\n * @param {(ShadyCSSOptions | ShadyCSSInterface)=} settings\n */\nfunction calcCssVariables(settings) {\n if (settings && settings.shimcssproperties) {\n nativeCssVariables_ = false;\n } else {\n // chrome 49 has semi-working css vars, check if box-shadow works\n // safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782\n // However, shim css custom properties are only supported with ShadyDOM enabled,\n // so fall back on native if we do not detect ShadyDOM\n // Edge 15: custom properties used in ::before and ::after will also be used in the parent element\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/\n nativeCssVariables_ =\n nativeShadow ||\n Boolean(\n !navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/) &&\n window.CSS &&\n CSS.supports &&\n CSS.supports('box-shadow', '0 0 0 var(--foo)')\n );\n }\n}\n\n/** @type {string | undefined} */\nexport let cssBuild;\nif (window.ShadyCSS && window.ShadyCSS.cssBuild !== undefined) {\n cssBuild = window.ShadyCSS.cssBuild;\n}\n\n/** @type {boolean} */\nexport const disableRuntime = Boolean(\n window.ShadyCSS && window.ShadyCSS.disableRuntime\n);\n\nif (window.ShadyCSS && window.ShadyCSS.nativeCss !== undefined) {\n nativeCssVariables_ = window.ShadyCSS.nativeCss;\n} else if (window.ShadyCSS) {\n calcCssVariables(window.ShadyCSS);\n // reset window variable to let ShadyCSS API take its place\n window.ShadyCSS = undefined;\n} else {\n calcCssVariables(window['WebComponents'] && window['WebComponents']['flags']);\n}\n\n// Hack for type error under new type inference which doesn't like that\n// nativeCssVariables is updated in a function and assigns the type\n// `function(): ?` instead of `boolean`.\nexport const nativeCssVariables = /** @type {boolean} */ (nativeCssVariables_);\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/*\nExtremely simple css parser. Intended to be not more than what we need\nand definitely not necessarily correct =).\n*/\n\n'use strict';\n\n/** @unrestricted */\nclass StyleNode {\n constructor() {\n /** @type {number} */\n this['start'] = 0;\n /** @type {number} */\n this['end'] = 0;\n /** @type {StyleNode} */\n this['previous'] = null;\n /** @type {StyleNode} */\n this['parent'] = null;\n /** @type {Array} */\n this['rules'] = null;\n /** @type {string} */\n this['parsedCssText'] = '';\n /** @type {string} */\n this['cssText'] = '';\n /** @type {boolean} */\n this['atRule'] = false;\n /** @type {number} */\n this['type'] = 0;\n /** @type {string} */\n this['keyframesName'] = '';\n /** @type {string} */\n this['selector'] = '';\n /** @type {string} */\n this['parsedSelector'] = '';\n }\n}\n\nexport {StyleNode};\n\n// given a string of css, return a simple rule tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nexport function parse(text) {\n text = clean(text);\n return parseCss(lex(text), text);\n}\n\n// remove stuff we don't care about that may hinder parsing\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction clean(cssText) {\n return cssText.replace(RX.comments, '').replace(RX.port, '');\n}\n\n// super simple {...} lexer that returns a node tree\n/**\n * @param {string} text\n * @return {!StyleNode}\n */\nfunction lex(text) {\n let root = new StyleNode();\n root['start'] = 0;\n root['end'] = text.length;\n let n = root;\n for (let i = 0, l = text.length; i < l; i++) {\n if (text[i] === OPEN_BRACE) {\n if (!n['rules']) {\n n['rules'] = [];\n }\n let p = n;\n let previous = p['rules'][p['rules'].length - 1] || null;\n n = new StyleNode();\n n['start'] = i + 1;\n n['parent'] = p;\n n['previous'] = previous;\n p['rules'].push(n);\n } else if (text[i] === CLOSE_BRACE) {\n n['end'] = i + 1;\n n = n['parent'] || root;\n }\n }\n return root;\n}\n\n// add selectors/cssText to node tree\n/**\n * @param {StyleNode} node\n * @param {string} text\n * @return {!StyleNode}\n */\nfunction parseCss(node, text) {\n let t = text.substring(node['start'], node['end'] - 1);\n node['parsedCssText'] = node['cssText'] = t.trim();\n if (node['parent']) {\n let ss = node['previous']\n ? node['previous']['end']\n : node['parent']['start'];\n t = text.substring(ss, node['start'] - 1);\n t = _expandUnicodeEscapes(t);\n t = t.replace(RX.multipleSpaces, ' ');\n // TODO(sorvell): ad hoc; make selector include only after last ;\n // helps with mixin syntax\n t = t.substring(t.lastIndexOf(';') + 1);\n let s = (node['parsedSelector'] = node['selector'] = t.trim());\n node['atRule'] = s.indexOf(AT_START) === 0;\n // note, support a subset of rule types...\n if (node['atRule']) {\n if (s.indexOf(MEDIA_START) === 0) {\n node['type'] = types.MEDIA_RULE;\n } else if (s.match(RX.keyframesRule)) {\n node['type'] = types.KEYFRAMES_RULE;\n node['keyframesName'] = node['selector'].split(RX.multipleSpaces).pop();\n }\n } else {\n if (s.indexOf(VAR_START) === 0) {\n node['type'] = types.MIXIN_RULE;\n } else {\n node['type'] = types.STYLE_RULE;\n }\n }\n }\n let r$ = node['rules'];\n if (r$) {\n for (let i = 0, l = r$.length, r; i < l && (r = r$[i]); i++) {\n parseCss(r, text);\n }\n }\n return node;\n}\n\n/**\n * conversion of sort unicode escapes with spaces like `\\33 ` (and longer) into\n * expanded form that doesn't require trailing space `\\000033`\n * @param {string} s\n * @return {string}\n */\nfunction _expandUnicodeEscapes(s) {\n return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi, function () {\n let code = arguments[1],\n repeat = 6 - code.length;\n while (repeat--) {\n code = '0' + code;\n }\n return '\\\\' + code;\n });\n}\n\n/**\n * stringify parsed css.\n * @param {StyleNode} node\n * @param {boolean=} preserveProperties\n * @param {string=} text\n * @return {string}\n */\nexport function stringify(node, preserveProperties, text = '') {\n // calc rule cssText\n let cssText = '';\n if (node['cssText'] || node['rules']) {\n let r$ = node['rules'];\n if (r$ && !_hasMixinRules(r$)) {\n for (let i = 0, l = r$.length, r; i < l && (r = r$[i]); i++) {\n cssText = stringify(r, preserveProperties, cssText);\n }\n } else {\n cssText = preserveProperties\n ? node['cssText']\n : removeCustomProps(node['cssText']);\n cssText = cssText.trim();\n if (cssText) {\n cssText = ' ' + cssText + '\\n';\n }\n }\n }\n // emit rule if there is cssText\n if (cssText) {\n if (node['selector']) {\n text += node['selector'] + ' ' + OPEN_BRACE + '\\n';\n }\n text += cssText;\n if (node['selector']) {\n text += CLOSE_BRACE + '\\n\\n';\n }\n }\n return text;\n}\n\n/**\n * @param {Array} rules\n * @return {boolean}\n */\nfunction _hasMixinRules(rules) {\n let r = rules[0];\n return (\n Boolean(r) &&\n Boolean(r['selector']) &&\n r['selector'].indexOf(VAR_START) === 0\n );\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomProps(cssText) {\n cssText = removeCustomPropAssignment(cssText);\n return removeCustomPropApply(cssText);\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nexport function removeCustomPropAssignment(cssText) {\n return cssText.replace(RX.customProp, '').replace(RX.mixinProp, '');\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomPropApply(cssText) {\n return cssText.replace(RX.mixinApply, '').replace(RX.varApply, '');\n}\n\n/** @enum {number} */\nexport const types = {\n STYLE_RULE: 1,\n KEYFRAMES_RULE: 7,\n MEDIA_RULE: 4,\n MIXIN_RULE: 1000,\n};\n\nconst OPEN_BRACE = '{';\nconst CLOSE_BRACE = '}';\n\n// helper regexp's\nconst RX = {\n comments: /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n port: /@import[^;]*;/gim,\n customProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,\n mixinProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,\n mixinApply: /@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,\n varApply: /[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,\n keyframesRule: /^@[^\\s]*keyframes/,\n multipleSpaces: /\\s+/g,\n};\n\nconst VAR_START = '--';\nconst MEDIA_START = '@media';\nconst AT_START = '@';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media\\s(.*)/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {!Set} */\nconst styleTextSet = new Set();\n\nexport const scopingAttribute = 'shady-unscoped';\n\n/**\n * Add a specifically-marked style to the document directly, and only one copy of that style.\n *\n * @param {!HTMLStyleElement} style\n * @return {undefined}\n */\nexport function processUnscopedStyle(style) {\n const text = style.textContent;\n if (!styleTextSet.has(text)) {\n styleTextSet.add(text);\n const newStyle = document.createElement('style');\n newStyle.setAttribute('shady-unscoped', '');\n newStyle.textContent = text;\n document.head.appendChild(newStyle);\n }\n}\n\n/**\n * Check if a style is supposed to be unscoped\n * @param {!HTMLStyleElement} style\n * @return {boolean} true if the style has the unscoping attribute\n */\nexport function isUnscopedStyle(style) {\n return style.hasAttribute(scopingAttribute);\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables, cssBuild} from './style-settings.js';\nimport {parse, stringify, types, StyleNode} from './css-parse.js'; // eslint-disable-line @typescript-eslint/no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.js';\n// prettier-ignore\nimport {processUnscopedStyle, isUnscopedStyle} from './unscoped-style-handler.js';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText(rules, callback) {\n if (!rules) {\n return '';\n }\n if (typeof rules === 'string') {\n rules = parse(rules);\n }\n if (callback) {\n forEachRule(rules, callback);\n }\n return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n if (!style['__cssRules'] && style.textContent) {\n style['__cssRules'] = parse(style.textContent);\n }\n return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n return (\n Boolean(rule['parent']) && rule['parent']['type'] === types.KEYFRAMES_RULE\n );\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(\n node,\n styleRuleCallback,\n keyframesRuleCallback,\n onlyActiveRules\n) {\n if (!node) {\n return;\n }\n let skipRules = false;\n let type = node['type'];\n if (onlyActiveRules) {\n if (type === types.MEDIA_RULE) {\n let matchMedia = node['selector'].match(MEDIA_MATCH);\n if (matchMedia) {\n // if rule is a non matching @media rule, skip subrules\n if (!window.matchMedia(matchMedia[1]).matches) {\n skipRules = true;\n }\n }\n }\n }\n if (type === types.STYLE_RULE) {\n styleRuleCallback(node);\n } else if (keyframesRuleCallback && type === types.KEYFRAMES_RULE) {\n keyframesRuleCallback(node);\n } else if (type === types.MIXIN_RULE) {\n skipRules = true;\n }\n let r$ = node['rules'];\n if (r$ && !skipRules) {\n for (let i = 0, l = r$.length, r; i < l && (r = r$[i]); i++) {\n forEachRule(r, styleRuleCallback, keyframesRuleCallback, onlyActiveRules);\n }\n }\n}\n\n// add a string of cssText to the document.\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @param {Node} target\n * @param {Node} contextNode\n * @return {HTMLStyleElement}\n */\nexport function applyCss(cssText, moniker, target, contextNode) {\n let style = createScopeStyle(cssText, moniker);\n applyStyle(style, target, contextNode);\n return style;\n}\n\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @return {!HTMLStyleElement}\n */\nexport function createScopeStyle(cssText, moniker) {\n let style = /** @type {HTMLStyleElement} */ (document.createElement('style'));\n if (moniker) {\n style.setAttribute('scope', moniker);\n }\n style.textContent = cssText;\n return style;\n}\n\n/**\n * Track the position of the last added style for placing placeholders\n * @type {Node}\n */\nlet lastHeadApplyNode = null;\n\n// insert a comment node as a styling position placeholder.\n/**\n * @param {string} moniker\n * @return {!Comment}\n */\nexport function applyStylePlaceHolder(moniker) {\n let placeHolder = document.createComment(\n ' Shady DOM styles for ' + moniker + ' '\n );\n let after = lastHeadApplyNode ? lastHeadApplyNode['nextSibling'] : null;\n let scope = document.head;\n scope.insertBefore(placeHolder, after || scope.firstChild);\n lastHeadApplyNode = placeHolder;\n return placeHolder;\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @param {?Node} target\n * @param {?Node} contextNode\n */\nexport function applyStyle(style, target, contextNode) {\n target = target || document.head;\n let after = (contextNode && contextNode.nextSibling) || target.firstChild;\n target.insertBefore(style, after);\n if (!lastHeadApplyNode) {\n lastHeadApplyNode = style;\n } else {\n // only update lastHeadApplyNode if the new style is inserted after the old lastHeadApplyNode\n let position = style.compareDocumentPosition(lastHeadApplyNode);\n if (position === Node.DOCUMENT_POSITION_PRECEDING) {\n lastHeadApplyNode = style;\n }\n }\n}\n\n/**\n * @param {string} buildType\n * @return {boolean}\n */\nexport function isTargetedBuild(buildType) {\n return nativeShadow ? buildType === 'shadow' : buildType === 'shady';\n}\n\n/**\n * Walk from text[start] matching parens and\n * returns position of the outer end paren\n * @param {string} text\n * @param {number} start\n * @return {number}\n */\nexport function findMatchingParen(text, start) {\n let level = 0;\n for (let i = start, l = text.length; i < l; i++) {\n if (text[i] === '(') {\n level++;\n } else if (text[i] === ')') {\n if (--level === 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\n/**\n * @param {string} str\n * @param {function(string, string, string, string)} callback\n */\nexport function processVariableAndFallback(str, callback) {\n // find 'var('\n let start = str.indexOf('var(');\n if (start === -1) {\n // no var?, everything is prefix\n return callback(str, '', '', '');\n }\n //${prefix}var(${inner})${suffix}\n let end = findMatchingParen(str, start + 3);\n let inner = str.substring(start + 4, end);\n let prefix = str.substring(0, start);\n // suffix may have other variables\n let suffix = processVariableAndFallback(str.substring(end + 1), callback);\n let comma = inner.indexOf(',');\n // value and fallback args should be trimmed to match in property lookup\n if (comma === -1) {\n // variable, no fallback\n return callback(prefix, inner.trim(), '', suffix);\n }\n // var(${value},${fallback})\n let value = inner.substring(0, comma).trim();\n let fallback = inner.substring(comma + 1).trim();\n return callback(prefix, value, fallback, suffix);\n}\n\n/**\n * @param {Element} element\n * @param {string} value\n */\nexport function setElementClassRaw(element, value) {\n // use native setAttribute provided by ShadyDOM when setAttribute is patched\n if (nativeShadow) {\n element.setAttribute('class', value);\n } else {\n window['ShadyDOM']['nativeMethods']['setAttribute'].call(\n element,\n 'class',\n value\n );\n }\n}\n\n/**\n * @type {function(*):*}\n */\nexport const wrap =\n (window['ShadyDOM'] && window['ShadyDOM']['wrap']) || ((node) => node);\n\n/**\n * @param {Element | {is: string, extends: string}} element\n * @return {{is: string, typeExtension: string}}\n */\nexport function getIsExtends(element) {\n let localName = element['localName'];\n let is = '',\n typeExtension = '';\n /*\n NOTE: technically, this can be wrong for certain svg elements\n with `-` in the name like ``\n */\n if (localName) {\n if (localName.indexOf('-') > -1) {\n is = localName;\n } else {\n typeExtension = localName;\n is = (element.getAttribute && element.getAttribute('is')) || '';\n }\n } else {\n is = /** @type {?} */ (element).is;\n typeExtension = /** @type {?} */ (element).extends;\n }\n return {is, typeExtension};\n}\n\n/**\n * @param {Element|DocumentFragment} element\n * @return {string}\n */\nexport function gatherStyleText(element) {\n /** @type {!Array} */\n const styleTextParts = [];\n const styles = /** @type {!NodeList} */ (element.querySelectorAll(\n 'style'\n ));\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n if (isUnscopedStyle(style)) {\n if (!nativeShadow) {\n processUnscopedStyle(style);\n style.parentNode.removeChild(style);\n }\n } else {\n styleTextParts.push(style.textContent);\n style.parentNode.removeChild(style);\n }\n }\n return styleTextParts.join('').trim();\n}\n\n/**\n * Split a selector separated by commas into an array in a smart way\n * @param {string} selector\n * @return {!Array}\n */\nexport function splitSelectorList(selector) {\n const parts = [];\n let part = '';\n for (let i = 0; i >= 0 && i < selector.length; i++) {\n // A selector with parentheses will be one complete part\n if (selector[i] === '(') {\n // find the matching paren\n const end = findMatchingParen(selector, i);\n // push the paren block into the part\n part += selector.slice(i, end + 1);\n // move the index to after the paren block\n i = end;\n } else if (selector[i] === ',') {\n parts.push(part);\n part = '';\n } else {\n part += selector[i];\n }\n }\n // catch any pieces after the last comma\n if (part) {\n parts.push(part);\n }\n return parts;\n}\n\nconst CSS_BUILD_ATTR = 'css-build';\n\n/**\n * Return the polymer-css-build \"build type\" applied to this element\n *\n * @param {!HTMLElement} element\n * @return {string} Can be \"\", \"shady\", or \"shadow\"\n */\nexport function getCssBuild(element) {\n if (cssBuild !== undefined) {\n return /** @type {string} */ (cssBuild);\n }\n if (element.__cssBuild === undefined) {\n // try attribute first, as it is the common case\n const attrValue = element.getAttribute(CSS_BUILD_ATTR);\n if (attrValue) {\n element.__cssBuild = attrValue;\n } else {\n const buildComment = getBuildComment(element);\n if (buildComment !== '') {\n // remove build comment so it is not needlessly copied into every element instance\n removeBuildComment(element);\n }\n element.__cssBuild = buildComment;\n }\n }\n return element.__cssBuild || '';\n}\n\n/**\n * Check if the given element, either a