);
@@ -284,7 +297,7 @@ class SaveAsWebmapDialog extends React.PureComponent
{
Please{' '}
sign in
@@ -307,7 +320,7 @@ class SaveAsWebmapDialog extends React.PureComponent {
}
render() {
- const { onClose, userRole } = this.props;
+ const { userRole } = this.props;
const { isWebmapReady } = this.state;
@@ -331,36 +344,10 @@ class SaveAsWebmapDialog extends React.PureComponent {
: null;
return (
-
-
-
-
- {editDialogContent}
-
- {openWebmapContent}
-
- {warningMessage4OrgUser}
-
+
+ {editDialogContent}
+ {openWebmapContent}
+ {warningMessage4OrgUser}
);
}
diff --git a/src/components/SearchWidget/SearchWidget.tsx b/src/components/SearchWidget/SearchWidget.tsx
index 33ed11f..8539427 100644
--- a/src/components/SearchWidget/SearchWidget.tsx
+++ b/src/components/SearchWidget/SearchWidget.tsx
@@ -27,16 +27,16 @@ import Graphic from '@arcgis/core/Graphic';
import Search from '@arcgis/core/widgets/Search';
import Portal from '@arcgis/core/portal/Portal';
-type UIAddPosition =
- | 'bottom-leading'
- | 'bottom-left'
- | 'bottom-right'
- | 'bottom-trailing'
- | 'top-leading'
- | 'top-left'
- | 'top-right'
- | 'top-trailing'
- | 'manual';
+// type UIAddPosition =
+// | 'bottom-leading'
+// | 'bottom-left'
+// | 'bottom-right'
+// | 'bottom-trailing'
+// | 'top-leading'
+// | 'top-left'
+// | 'top-right'
+// | 'top-trailing'
+// | 'manual';
type SearchResult = {
extent: Extent;
@@ -46,7 +46,7 @@ type SearchResult = {
};
type Props = {
- position?: UIAddPosition;
+ // position?: UIAddPosition;
containerId?: string;
portalUrl?: string;
mapView?: MapView;
@@ -54,8 +54,8 @@ type Props = {
};
const SearchWidget: React.FC
= ({
- position,
- containerId,
+ // position,
+ // containerId,
portalUrl,
mapView,
searchCompletedHandler,
@@ -67,13 +67,13 @@ const SearchWidget: React.FC = ({
// return;
// }
- const portal = portalUrl ? new Portal({ url: portalUrl }) : null;
+ // const portal = portalUrl ? new Portal({ url: portalUrl }) : null;
const searchWidget = new Search({
view: mapView,
resultGraphicEnabled: false,
popupEnabled: false,
- portal,
+ // portal,
container: containerRef.current,
});
diff --git a/src/components/SettingDialog/SettingDialogContainer.tsx b/src/components/SettingDialog/SettingDialogContainer.tsx
index 815c9e9..9b30a22 100644
--- a/src/components/SettingDialog/SettingDialogContainer.tsx
+++ b/src/components/SettingDialog/SettingDialogContainer.tsx
@@ -17,8 +17,6 @@ import React, { useContext } from 'react';
import { useSelector, useDispatch } from 'react-redux';
-import SetttingDialog from './index';
-
import {
isSettingModalOpenSelector,
isSettingModalOpenToggled,
@@ -29,6 +27,8 @@ import { mapExtentSelector } from '@store/Map/reducer';
// import { AppContext } from '@contexts/AppContextProvider';
import { isAnonymouns, signIn, signOut } from '@utils/Esri-OAuth';
+import SettingDialogContent from './SettingDialogContent';
+import { Modal } from '@components/Modal/Modal';
const SettingDialogContainer = () => {
const dispatch = useDispatch();
@@ -55,17 +55,27 @@ const SettingDialogContainer = () => {
// dispatch(shouldOnlyShowItemsWithLocalChangeToggled(val));
// };
- return isOpen ? (
-
- ) : null;
+ // return isOpen ? (
+ //
+ // ) : null;
+
+ return (
+
+
+
+ );
};
export default SettingDialogContainer;
diff --git a/src/components/SettingDialog/index.tsx b/src/components/SettingDialog/SettingDialogContent.tsx
similarity index 50%
rename from src/components/SettingDialog/index.tsx
rename to src/components/SettingDialog/SettingDialogContent.tsx
index b4ea67e..078a2c9 100644
--- a/src/components/SettingDialog/index.tsx
+++ b/src/components/SettingDialog/SettingDialogContent.tsx
@@ -13,7 +13,6 @@
* limitations under the License.
*/
-import './style.css';
import React from 'react';
import classnames from 'classnames';
import {
@@ -24,6 +23,7 @@ import {
// getShouldShowUpdatesWithLocalChanges,
} from '@utils/LocalStorage';
import { IExtentGeomety } from '@typings/index';
+import { Switch } from './Switch';
// import config from './config';
type SaveBtnLabelValue = 'Save' | 'Saved';
@@ -31,13 +31,11 @@ type SaveBtnLabelValue = 'Save' | 'Saved';
interface IProps {
mapExtent?: IExtentGeomety;
signedInAlready?: boolean;
-
toggleSignInBtnOnClick: (shouldSignIn: boolean) => void;
// shouldShowLocalChangesByDefaultOnClick: (
// shouldShowLocalChangesByDefault: boolean
// ) => void;
-
- onClose: () => void;
+ // onClose: () => void;
}
interface IState {
@@ -52,7 +50,7 @@ type StateKeys = keyof IState;
const CustomUrlFromLocalStorage = getCustomPortalUrl();
-class SettingDialog extends React.PureComponent {
+class SettingDialogContent extends React.PureComponent {
constructor(props: IProps) {
super(props);
@@ -98,7 +96,7 @@ class SettingDialog extends React.PureComponent {
// shouldShowLocalChangesByDefault,
} = this.state;
- const { onClose, mapExtent } = this.props;
+ const { mapExtent } = this.props;
if (shouldSaveAsDefaultExtent) {
// const mapExt = getMapExtent();
@@ -132,7 +130,7 @@ class SettingDialog extends React.PureComponent {
// this.close();
- onClose();
+ // onClose();
}
toggleSaveBtnLabel(isSaved = false) {
@@ -172,7 +170,7 @@ class SettingDialog extends React.PureComponent {
// }
render() {
- const { signedInAlready, toggleSignInBtnOnClick, onClose } = this.props;
+ const { signedInAlready, toggleSignInBtnOnClick } = this.props;
const {
portalUrl,
shouldUseCustomPortalUrl,
@@ -185,136 +183,129 @@ class SettingDialog extends React.PureComponent {
// shouldShowLocalChangesByDefault !==
// getShouldShowUpdatesWithLocalChanges();
- const saveBtnClasses = classnames('btn', {
- 'btn-disabled': !portalUrl && !shouldSaveAsDefaultExtent,
- });
+ // const saveBtnClasses = classnames('btn', {
+ // 'btn-disabled': !portalUrl && !shouldSaveAsDefaultExtent,
+ // });
const signOutBtn = (
-
Sign Out
-
+
);
return (
-
-
-
-
-
-
-
-
-
Settings
-
-
-
-
-
-
- Save current map extent as default
-
-
-
+ <>
+
Settings
+
+
+ {/*
+
+
+
+ Save current map extent as default
+
+ */}
+
+ {
+ // console.log('on change')
+ this.toggleBooleanStateVal(
+ 'shouldSaveAsDefaultExtent'
+ );
+ }}
+ />
+
- {/*
-
-
-
-
- Show only versions with local changes by default
-
-
-
*/}
-
-
-
-
- {signedInAlready ? signOutBtn : null}
-
+
+
+ {signedInAlready ? signOutBtn : null}
+
-
+
+
{saveBtnLable}
-
+
+ {/*
+ {saveBtnLable}
+ */}
-
+ >
);
}
}
-export default SettingDialog;
+export default SettingDialogContent;
diff --git a/src/components/SettingDialog/Switch.tsx b/src/components/SettingDialog/Switch.tsx
new file mode 100644
index 0000000..a4ac697
--- /dev/null
+++ b/src/components/SettingDialog/Switch.tsx
@@ -0,0 +1,43 @@
+import React, { FC, useEffect, useRef } from 'react';
+
+type Props = {
+ /**
+ * emits when user click on the Switch button
+ * @returns
+ */
+ onChange: (checked: boolean) => void;
+ /**
+ * label text to be placed next to the switch button
+ */
+ label: string;
+ /**
+ * if true, the switch button should be checked
+ */
+ checked: boolean;
+};
+
+export const Switch: FC
= ({ label, checked, onChange }) => {
+ const switchRef = useRef();
+
+ const props = {};
+
+ if (checked) {
+ props['checked'] = true;
+ }
+
+ useEffect(() => {
+ switchRef.current.addEventListener(
+ 'calciteSwitchChange',
+ (evt: any) => {
+ onChange(evt.target?.checked);
+ }
+ );
+ }, []);
+
+ return (
+
+
+ {label}
+
+ );
+};
diff --git a/src/components/SettingDialog/style.css b/src/components/SettingDialog/style.css
deleted file mode 100644
index 07f9a31..0000000
--- a/src/components/SettingDialog/style.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.setting-dialog .btn-transparent {
- color: #fff;
-}
diff --git a/src/components/ShareDialog/index.tsx b/src/components/ShareDialog/index.tsx
deleted file mode 100644
index 6418680..0000000
--- a/src/components/ShareDialog/index.tsx
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Copyright 2024 Esri
- *
- * Licensed under the Apache License Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import './style.css';
-import React from 'react';
-import config from './config';
-
-interface IProps {
- currentUrl: string;
- onClose: () => void;
-}
-
-interface IState {
- copyBtnLabel: string;
-}
-
-class ShareDialog extends React.PureComponent {
- private textInputRef = React.createRef();
-
- constructor(props: IProps) {
- super(props);
-
- this.state = {
- copyBtnLabel: 'Copy',
- };
-
- this.copyToClipboard = this.copyToClipboard.bind(this);
- }
-
- copyToClipboard() {
- const textInput = this.textInputRef.current;
- textInput.select();
- document.execCommand('copy');
-
- this.updateCopyBtnLabel('Copied');
- }
-
- updateCopyBtnLabel(label = 'Copy') {
- this.setState({
- copyBtnLabel: label,
- });
-
- if (label === 'Copied') {
- setTimeout(() => {
- this.updateCopyBtnLabel('Copy');
- }, 1500);
- }
- }
-
- componentDidMount() {
- // modal();
- }
-
- render() {
- const { currentUrl, onClose } = this.props;
-
- const { copyBtnLabel } = this.state;
-
- const share2TwitterLink = `https://arcgis.com/home/socialnetwork.html?t=${config.title}&n=tw&u=${currentUrl}`;
- const share2facebookLink = `https://arcgis.com/home/socialnetwork.html?t=${config.title}&n=fb&u=${currentUrl}`;
- const share2LinkedInLink = `https://www.linkedin.com/shareArticle?url=${currentUrl}&title=${config.title}&summary=${config.description}?mini=true&source=livingatlas.arcgis.com`;
-
- return (
-
-
-
-
-
-
-
-
-
-
- Share World Imagery Wayback
-
-
-
-
-
-
-
-
- {copyBtnLabel}
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default ShareDialog;
diff --git a/src/components/ShareDialog/style.css b/src/components/ShareDialog/style.css
deleted file mode 100644
index 2c54606..0000000
--- a/src/components/ShareDialog/style.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.social-media-icons [class*="icon-social-"] {
- width: 35px;
- height: 35px;
- background-size: cover;
-}
\ No newline at end of file
diff --git a/src/components/ShowLocalChangesCheckboxToggle/index.tsx b/src/components/ShowLocalChangesCheckboxToggle/index.tsx
index 554ac13..6e2468b 100644
--- a/src/components/ShowLocalChangesCheckboxToggle/index.tsx
+++ b/src/components/ShowLocalChangesCheckboxToggle/index.tsx
@@ -31,7 +31,7 @@ class CheckboxToggle extends React.PureComponent {
return (
{isActive ? (
diff --git a/src/components/Sidebar/Sidebar.tsx b/src/components/Sidebar/Sidebar.tsx
index 69fecf0..1d7be1b 100644
--- a/src/components/Sidebar/Sidebar.tsx
+++ b/src/components/Sidebar/Sidebar.tsx
@@ -14,11 +14,7 @@
*/
import React from 'react';
-import {
- DEFAULT_BACKGROUND_COLOR,
- GUTTER_WIDTH,
- SIDEBAR_WIDTH,
-} from '@constants/UI';
+import { GUTTER_WIDTH, SIDEBAR_WIDTH } from '@constants/UI';
type Props = {
isHide: boolean;
@@ -41,7 +37,7 @@ const Sidebar: React.FC
= ({
right: 0,
left: isGutterHide ? 0 : GUTTER_WIDTH,
width: isGutterHide ? '100%' : 'calc(100% - 50px)',
- maxHeight: 300,
+ maxHeight: 400,
padding: '.5rem 0',
};
@@ -52,7 +48,6 @@ const Sidebar: React.FC = ({
width: SIDEBAR_WIDTH,
height: '100%',
padding: '1rem 0',
- backgroundColor: DEFAULT_BACKGROUND_COLOR,
// overflow: hidden;
boxSizing: 'border-box',
zIndex: 1,
@@ -65,15 +60,25 @@ const Sidebar: React.FC = ({
alignItems: 'stretch',
};
- return isMobile
- ? ({
- ...defaultStyle,
- ...mobileStyle,
- } as React.CSSProperties)
- : defaultStyle;
+ if (isMobile) {
+ return {
+ ...defaultStyle,
+ ...mobileStyle,
+ } as React.CSSProperties;
+ }
+
+ return defaultStyle;
};
- return !isHide ? {children}
: null;
+ if (isHide) {
+ return null;
+ }
+
+ return (
+
+ {children}
+
+ );
};
export default Sidebar;
diff --git a/src/components/SwipeWidgetLayerSelector/SwipeWidgetLayerSelector.tsx b/src/components/SwipeWidgetLayerSelector/SwipeWidgetLayerSelector.tsx
index a0f96c0..571ed0f 100644
--- a/src/components/SwipeWidgetLayerSelector/SwipeWidgetLayerSelector.tsx
+++ b/src/components/SwipeWidgetLayerSelector/SwipeWidgetLayerSelector.tsx
@@ -20,7 +20,7 @@ import classnames from 'classnames';
import { LayerSelector } from '../';
-export const SwipeWidgetLayerSelectorWidth = 210;
+export const SwipeWidgetLayerSelectorWidth = 220;
export type SwipeWidgetLayer = 'leading' | 'trailing';
@@ -54,43 +54,6 @@ const SwipeWidgetLayerSelector: React.FC = ({
const { releaseDateLabel, itemID } = d;
const isSelected =
selectedItem && selectedItem.itemID === itemID;
- const classNames = classnames(
- 'swipe-widget-layer-selector-item',
- {
- 'is-selected': isSelected,
- 'is-arrow-on-left': targetLayerType === 'trailing',
- }
- );
- // return (
- //
- // {releaseDateLabel}
- //
- // );
return (
= ({
});
return (
-
+
-
+
Versions with{' '}
local changes
@@ -127,20 +86,14 @@ const SwipeWidgetLayerSelector: React.FC = ({
}
return (
-
-
+
+
{targetLayerType === 'leading' ? 'Left' : 'Right'} Selection
{selectedItem.releaseDateLabel}
-
+
Click map for imagery details
@@ -155,21 +108,24 @@ const SwipeWidgetLayerSelector: React.FC
= ({
return (
-
+ {/* */}
+
);
};
return (
= ({
top: 0,
left: targetLayerType === 'leading' ? 0 : 'unset',
right: targetLayerType === 'trailing' ? 0 : 'unset',
- backgroundColor: '#121212',
- padding: '1rem',
boxSizing: 'border-box',
- display: 'flex',
- alignItems: 'center',
+ // display: 'flex',
+ // alignItems: 'center',
}}
>
{getTitle()}
diff --git a/src/components/Title4ActiveItem/index.tsx b/src/components/Title4ActiveItem/index.tsx
index 2bae28d..46fe087 100644
--- a/src/components/Title4ActiveItem/index.tsx
+++ b/src/components/Title4ActiveItem/index.tsx
@@ -42,8 +42,8 @@ class Title4ActiveItem extends React.PureComponent
{
: activeWaybackItem.releaseDateLabel;
return (
-
-
+
+
Selected release
{releaseDate}
diff --git a/src/components/WaybackLayer/WaybackLayer.tsx b/src/components/WaybackLayer/WaybackLayer.tsx
index 7cfa3c2..7a382d8 100644
--- a/src/components/WaybackLayer/WaybackLayer.tsx
+++ b/src/components/WaybackLayer/WaybackLayer.tsx
@@ -26,11 +26,16 @@ import { IWaybackItem } from '@typings/index';
import { getWaybackLayer } from './getWaybackLayer';
type Props = {
+ isVisible: boolean;
activeWaybackItem: IWaybackItem;
mapView?: MapView;
};
-const WaybackLayer: React.FC
= ({ activeWaybackItem, mapView }) => {
+const WaybackLayer: React.FC = ({
+ isVisible,
+ activeWaybackItem,
+ mapView,
+}) => {
const waybackLayerRef = useRef();
const updateWaybackLayer = () => {
@@ -71,6 +76,14 @@ const WaybackLayer: React.FC = ({ activeWaybackItem, mapView }) => {
}
}, [mapView, activeWaybackItem]);
+ useEffect(() => {
+ if (!waybackLayerRef.current) {
+ return;
+ }
+
+ waybackLayerRef.current.visible = isVisible;
+ }, [isVisible]);
+
return null;
};
diff --git a/src/components/WaybackLayer/WaybackLayerContainer.tsx b/src/components/WaybackLayer/WaybackLayerContainer.tsx
index 2c52b8d..9b2b9d8 100644
--- a/src/components/WaybackLayer/WaybackLayerContainer.tsx
+++ b/src/components/WaybackLayer/WaybackLayerContainer.tsx
@@ -13,7 +13,7 @@
* limitations under the License.
*/
-import React, { useEffect } from 'react';
+import React, { useEffect, useMemo } from 'react';
import { useSelector } from 'react-redux';
@@ -24,6 +24,7 @@ import WaybackLayer from './WaybackLayer';
// import IMapView from 'esri/views/MapView';
import MapView from '@arcgis/core/views/MapView';
+import { selectAnimationStatus } from '@store/AnimationMode/reducer';
type Props = {
mapView?: MapView;
@@ -32,6 +33,16 @@ type Props = {
const WaybackLayerContainer: React.FC = ({ mapView }: Props) => {
const activeWaybackItem = useSelector(activeWaybackItemSelector);
+ const animationStatus = useSelector(selectAnimationStatus);
+
+ const isVisible = useMemo(() => {
+ // if(animationStatus !== null){
+ // return false
+ // }
+
+ return true;
+ }, [animationStatus]);
+
useEffect(() => {
saveReleaseNum4ActiveWaybackItemInURLQueryParam(
activeWaybackItem.releaseNum
@@ -39,7 +50,11 @@ const WaybackLayerContainer: React.FC = ({ mapView }: Props) => {
}, [activeWaybackItem]);
return (
-
+
);
};
diff --git a/src/components/index.ts b/src/components/index.ts
index efba292..f006f53 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -29,7 +29,7 @@ export { default as ReferenceLayer } from './ReferenceLayer/ReferenceLayerContai
export { default as ReferenceLayerToggle } from './ReferenceLayerToggle/ReferenceLayerToggleContainer';
export { default as Sidebar } from './Sidebar/SidebarContainer';
export { default as SearchWidget } from './SearchWidget/SearchWidget';
-export { default as ShareDialog } from './ShareDialog/ShareDialogContainer';
+// export { default as ShareDialog } from './ShareDialog/ShareDialogContainer';
export { default as SwipeWidget } from './SwipeWidget/SwipeWidgetContainer';
export { default as SaveAsWebMapDialog } from './SaveAsWebmapDialog/SaveAsWebmapDialogContainer';
export { default as SwipeWidgetToggleBtn } from './SwipeWidgetToggleBtn/SwipeWidgetToggleBtnContainer';
@@ -47,7 +47,7 @@ export { default as LayerSelector } from './LayerSelector/LayerSelector';
export { default as ZoomWidget } from './ZoomWidget/ZoomWidget';
export { default as TilePreviewWindow } from './PreviewWindow/PreviewWindowContainer';
-export { default as AnimationPanel } from './AnimationPanel/AnimationPanelContainer';
+// export { default as AnimationPanel } from './AnimationPanel/AnimationPanelContainer';
export { OpenDownloadPanelBtn } from './OpenDownloadPanelBtn/OpenDownloadPanelBtn';
export { DownloadDialog } from './DownloadDialog';
diff --git a/src/constants/UI.ts b/src/constants/UI.ts
index aef3ef6..ba7d1d3 100644
--- a/src/constants/UI.ts
+++ b/src/constants/UI.ts
@@ -18,4 +18,9 @@ export const SIDEBAR_HEIGHT_MOBILE = 300;
export const GUTTER_WIDTH = 50;
export const MOBILE_HEADER_HEIGHT = 45;
-export const DEFAULT_BACKGROUND_COLOR = '#121212';
+// export const DEFAULT_BACKGROUND_COLOR = '#121212';
+
+/**
+ * milliseconds to wait before turn off the copy link message
+ */
+export const COPIED_LINK_MESSAGE_TIME_TO_STAY_OPEN_IN_MILLISECONDS = 3000;
diff --git a/src/constants/strings.ts b/src/constants/strings.ts
index 140d543..9547d3c 100644
--- a/src/constants/strings.ts
+++ b/src/constants/strings.ts
@@ -13,4 +13,4 @@
* limitations under the License.
*/
-export const APP_TITLE = 'World Imagery Wayback';
+export const APP_TITLE = 'ESRI | World Imagery Wayback';
diff --git a/src/hooks/useSaveAppState2URLHashParams.tsx b/src/hooks/useSaveAppState2URLHashParams.tsx
new file mode 100644
index 0000000..3dd24ac
--- /dev/null
+++ b/src/hooks/useSaveAppState2URLHashParams.tsx
@@ -0,0 +1,35 @@
+/* Copyright 2024 Esri
+ *
+ * Licensed under the Apache License Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, { useEffect } from 'react';
+import { useSelector } from 'react-redux';
+
+import {
+ animationSpeedSelector,
+ selectAnimationStatus,
+} from '@store/AnimationMode/reducer';
+import { saveAnimationSpeedInURLQueryParam } from '@utils/UrlSearchParam';
+
+export const useSaveAppState2URLHashParams = () => {
+ const animationSpeed = useSelector(animationSpeedSelector);
+
+ const animationStatus = useSelector(selectAnimationStatus);
+
+ useEffect(() => {
+ saveAnimationSpeedInURLQueryParam(
+ animationStatus !== null ? animationSpeed : undefined
+ );
+ }, [animationSpeed, animationStatus]);
+};
diff --git a/src/services/wayback/ChangeDetector.ts b/src/services/wayback/ChangeDetector.ts
index f09e4c2..fdd339b 100644
--- a/src/services/wayback/ChangeDetector.ts
+++ b/src/services/wayback/ChangeDetector.ts
@@ -1,314 +1,314 @@
-/* Copyright 2024 Esri
- *
- * Licensed under the Apache License Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import axios from 'axios';
-import {
- queryFeatures,
- IQueryFeaturesResponse,
- IFeature,
-} from '@esri/arcgis-rest-feature-service';
-import { geometryFns } from 'helper-toolkit-ts';
-import { IWaybackConfig, IMapPointInfo, IWaybackItem } from '@typings/index';
-import config from './config';
-
-interface ICandidates {
- rNum: number;
- url: string;
-}
-
-interface IParamGetTileUrl {
- rNum?: number;
- column: number;
- row: number;
- level: number;
-}
-
-interface IOptionsWaybackChangeDetector {
- waybackMapServerBaseUrl?: string;
- changeDetectionLayerUrl?: string;
- waybackconfig: IWaybackConfig;
- shouldUseChangdeDetectorLayer?: boolean;
- waybackItems: Array;
-}
-
-interface IResponseGetImageBlob {
- rNum: number;
- dataUri: string;
-}
-
-interface IResponseWaybackTilemap {
- data: Array;
- select: Array;
- valid: boolean;
- location: {
- left: number;
- top: number;
- width: number;
- height: number;
- };
-}
-
-class WaybackChangeDetector {
- // original wayback config JSON file
- private waybackconfig: IWaybackConfig;
- private waybackMapServerBaseUrl: string;
- private changeDetectionLayerUrl: string;
- private shouldUseChangdeDetectorLayer: boolean;
- private waybackItems: Array;
- private rNum2IndexLookup: { [key: number]: number };
-
- constructor({
- waybackMapServerBaseUrl = '',
- changeDetectionLayerUrl = '',
- waybackconfig = null,
- shouldUseChangdeDetectorLayer = false,
- waybackItems = [],
- }: IOptionsWaybackChangeDetector) {
- this.waybackMapServerBaseUrl = waybackMapServerBaseUrl;
- this.changeDetectionLayerUrl = changeDetectionLayerUrl;
- this.waybackconfig = waybackconfig;
- this.waybackItems = waybackItems;
- this.shouldUseChangdeDetectorLayer = shouldUseChangdeDetectorLayer;
-
- // console.log('waybackItems', this.waybackItems);
- }
-
- // get array of release numbers for wayback items that come with changes for input area
- async findChanges(pointInfo: IMapPointInfo): Promise> {
- try {
- const level = +pointInfo.zoom.toFixed(0);
- const column = geometryFns.long2tile(pointInfo.longitude, level);
- const row = geometryFns.lat2tile(pointInfo.latitude, level);
-
- const candidatesRNums = this.shouldUseChangdeDetectorLayer
- ? await this.getRNumsFromDetectionLayer(pointInfo, level)
- : await this.getRNumsFromTilemap({ column, row, level });
-
- const candidates = candidatesRNums.map((rNum) => {
- return {
- rNum,
- url: this.getTileImageUrl({ column, row, level, rNum }),
- };
- });
- // console.log(candidates)
-
- const rNumsNoDuplicates = await this.removeDuplicates(candidates);
- // console.log(rNumsNoDuplicates)
-
- return rNumsNoDuplicates;
- } catch (err) {
- console.error('failed to find changes', err);
- return null;
- }
- }
-
- getPreviousReleaseNum(rNum: number) {
- if (!this.rNum2IndexLookup) {
- const lookup = {};
-
- this.waybackItems.forEach((item, index) => {
- lookup[item.releaseNum] = index;
- });
-
- this.rNum2IndexLookup = lookup;
- }
-
- const index4InputRNum = this.rNum2IndexLookup[rNum];
-
- const previousReleaseNum = this.waybackItems[index4InputRNum + 1]
- ? this.waybackItems[index4InputRNum + 1].releaseNum
- : null;
-
- return previousReleaseNum;
- }
-
- async getRNumsFromTilemap({
- column = null,
- row = null,
- level = null,
- }: IParamGetTileUrl): Promise> {
- return new Promise((resolve, reject) => {
- const results: Array = [];
-
- const mostRecentRelease = this.waybackItems[0].releaseNum;
-
- const tilemapRequest = async (rNum: number) => {
- try {
- const requestUrl = `${this.waybackMapServerBaseUrl}/tilemap/${rNum}/${level}/${row}/${column}`;
-
- const response = await axios.get(requestUrl);
-
- const tilemapResponse: IResponseWaybackTilemap =
- response.data || null;
-
- const lastRelease =
- tilemapResponse.select && tilemapResponse.select[0]
- ? +tilemapResponse.select[0]
- : rNum;
-
- if (tilemapResponse.data[0]) {
- results.push(lastRelease);
- }
-
- const nextReleaseToCheck = tilemapResponse.data[0]
- ? this.getPreviousReleaseNum(lastRelease)
- : null;
-
- if (nextReleaseToCheck) {
- tilemapRequest(nextReleaseToCheck);
- } else {
- resolve(results);
- }
- } catch (err) {
- console.error(err);
- reject(null);
- }
- };
-
- tilemapRequest(mostRecentRelease);
- });
- }
-
- async getRNumsFromDetectionLayer(
- pointInfo: IMapPointInfo,
- zoomLevel: number
- ): Promise> {
- const queryUrl = this.changeDetectionLayerUrl + '/query';
-
- const fields = config['change-detection-layer'].fields;
-
- const FIELD_NAME_ZOOM = fields[0].fieldname;
- const FIELD_NAME_RELEASE_NUM = fields[1].fieldname;
- const FIELD_NAME_RELEASE_NAME = fields[2].fieldname;
-
- try {
- const queryResponse = (await queryFeatures({
- url: queryUrl,
- geometry: pointInfo.geometry,
- geometryType: 'esriGeometryPoint',
- spatialRel: 'esriSpatialRelIntersects',
- where: `${FIELD_NAME_ZOOM} = ${zoomLevel}`,
- outFields: [FIELD_NAME_RELEASE_NUM],
- orderByFields: FIELD_NAME_RELEASE_NAME,
- returnGeometry: false,
- f: 'json',
- })) as IQueryFeaturesResponse;
-
- const rNums: Array =
- queryResponse.features && queryResponse.features.length
- ? queryResponse.features.map((feature: IFeature) => {
- return feature.attributes[FIELD_NAME_RELEASE_NUM];
- })
- : [];
-
- return rNums;
- } catch (err) {
- console.error(err);
- return [];
- }
- }
-
- getTileImageUrl({
- column = null,
- row = null,
- level = null,
- rNum = null,
- }: IParamGetTileUrl) {
- const urlTemplate = this.waybackconfig[rNum].itemURL;
- return urlTemplate
- .replace('{level}', level.toString())
- .replace('{row}', row.toString())
- .replace('{col}', column.toString());
- }
-
- async removeDuplicates(
- candidates?: Array
- ): Promise> {
- if (!candidates.length) {
- return [];
- }
-
- const finalResults: Array = [];
-
- // reverse the candidates list so the wayback items will be sorted by release dates in ascending order (oldest >>> latest)
- const imageDataUriRequests = candidates.reverse().map((candidate) => {
- return this.getSampledImagedDataUri(candidate.url, candidate.rNum);
- });
-
- try {
- const imageDataUriResults = await Promise.all(imageDataUriRequests);
-
- let dataUri4PrevRelease = '';
-
- for (const { dataUri, rNum } of imageDataUriResults) {
- if (dataUri === dataUri4PrevRelease) {
- continue;
- }
-
- finalResults.push(rNum);
- dataUri4PrevRelease = dataUri;
- }
- } catch (err) {
- console.error('failed to fetch all image data uri', err);
- }
-
- return finalResults;
- }
-
- async getSampledImagedDataUri(
- imageUrl: string,
- rNum: number
- ): Promise {
- const samplePoints = [512, 1000, 2500, 5000, 7500, 10000, 12500, 15000];
-
- return new Promise((resolve, reject) => {
- const xhr = new XMLHttpRequest();
- xhr.open('GET', imageUrl, true);
- xhr.responseType = 'arraybuffer';
-
- xhr.onload = function (e) {
- if (this.status == 200) {
- const uInt8Array = new Uint8Array(this.response);
- let i = uInt8Array.length;
- const binaryString = new Array(i);
- while (i--) {
- binaryString[i] = String.fromCharCode(uInt8Array[i]);
- }
- const data = binaryString.join('');
- const base64 = window.btoa(data);
- // console.log(base64.length)
-
- let dataUri = ''; //base64.substr(512, 5000);
- // console.log(tileImageDataUri);
-
- for (const point of samplePoints) {
- dataUri += base64.substr(point, 500);
- }
-
- resolve({
- rNum,
- dataUri,
- });
- } else {
- reject(null);
- }
- };
-
- xhr.send();
- });
- }
-}
-
-export default WaybackChangeDetector;
+// /* Copyright 2024 Esri
+// *
+// * Licensed under the Apache License Version 2.0 (the "License");
+// * you may not use this file except in compliance with the License.
+// * You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+// */
+
+// import axios from 'axios';
+// import {
+// queryFeatures,
+// IQueryFeaturesResponse,
+// IFeature,
+// } from '@esri/arcgis-rest-feature-service';
+// import { geometryFns } from 'helper-toolkit-ts';
+// import { IWaybackConfig, IMapPointInfo, IWaybackItem } from '@typings/index';
+// import config from './config';
+
+// interface ICandidates {
+// rNum: number;
+// url: string;
+// }
+
+// interface IParamGetTileUrl {
+// rNum?: number;
+// column: number;
+// row: number;
+// level: number;
+// }
+
+// interface IOptionsWaybackChangeDetector {
+// waybackMapServerBaseUrl?: string;
+// changeDetectionLayerUrl?: string;
+// waybackconfig: IWaybackConfig;
+// shouldUseChangdeDetectorLayer?: boolean;
+// waybackItems: Array;
+// }
+
+// interface IResponseGetImageBlob {
+// rNum: number;
+// dataUri: string;
+// }
+
+// interface IResponseWaybackTilemap {
+// data: Array;
+// select: Array;
+// valid: boolean;
+// location: {
+// left: number;
+// top: number;
+// width: number;
+// height: number;
+// };
+// }
+
+// class WaybackChangeDetector {
+// // original wayback config JSON file
+// private waybackconfig: IWaybackConfig;
+// private waybackMapServerBaseUrl: string;
+// private changeDetectionLayerUrl: string;
+// private shouldUseChangdeDetectorLayer: boolean;
+// private waybackItems: Array;
+// private rNum2IndexLookup: { [key: number]: number };
+
+// constructor({
+// waybackMapServerBaseUrl = '',
+// changeDetectionLayerUrl = '',
+// waybackconfig = null,
+// shouldUseChangdeDetectorLayer = false,
+// waybackItems = [],
+// }: IOptionsWaybackChangeDetector) {
+// this.waybackMapServerBaseUrl = waybackMapServerBaseUrl;
+// this.changeDetectionLayerUrl = changeDetectionLayerUrl;
+// this.waybackconfig = waybackconfig;
+// this.waybackItems = waybackItems;
+// this.shouldUseChangdeDetectorLayer = shouldUseChangdeDetectorLayer;
+
+// // console.log('waybackItems', this.waybackItems);
+// }
+
+// // get array of release numbers for wayback items that come with changes for input area
+// async findChanges(pointInfo: IMapPointInfo): Promise> {
+// try {
+// const level = +pointInfo.zoom.toFixed(0);
+// const column = geometryFns.long2tile(pointInfo.longitude, level);
+// const row = geometryFns.lat2tile(pointInfo.latitude, level);
+
+// const candidatesRNums = this.shouldUseChangdeDetectorLayer
+// ? await this.getRNumsFromDetectionLayer(pointInfo, level)
+// : await this.getRNumsFromTilemap({ column, row, level });
+
+// const candidates = candidatesRNums.map((rNum) => {
+// return {
+// rNum,
+// url: this.getTileImageUrl({ column, row, level, rNum }),
+// };
+// });
+// // console.log(candidates)
+
+// const rNumsNoDuplicates = await this.removeDuplicates(candidates);
+// // console.log(rNumsNoDuplicates)
+
+// return rNumsNoDuplicates;
+// } catch (err) {
+// console.error('failed to find changes', err);
+// return null;
+// }
+// }
+
+// getPreviousReleaseNum(rNum: number) {
+// if (!this.rNum2IndexLookup) {
+// const lookup = {};
+
+// this.waybackItems.forEach((item, index) => {
+// lookup[item.releaseNum] = index;
+// });
+
+// this.rNum2IndexLookup = lookup;
+// }
+
+// const index4InputRNum = this.rNum2IndexLookup[rNum];
+
+// const previousReleaseNum = this.waybackItems[index4InputRNum + 1]
+// ? this.waybackItems[index4InputRNum + 1].releaseNum
+// : null;
+
+// return previousReleaseNum;
+// }
+
+// async getRNumsFromTilemap({
+// column = null,
+// row = null,
+// level = null,
+// }: IParamGetTileUrl): Promise> {
+// return new Promise((resolve, reject) => {
+// const results: Array = [];
+
+// const mostRecentRelease = this.waybackItems[0].releaseNum;
+
+// const tilemapRequest = async (rNum: number) => {
+// try {
+// const requestUrl = `${this.waybackMapServerBaseUrl}/tilemap/${rNum}/${level}/${row}/${column}`;
+
+// const response = await axios.get(requestUrl);
+
+// const tilemapResponse: IResponseWaybackTilemap =
+// response.data || null;
+
+// const lastRelease =
+// tilemapResponse.select && tilemapResponse.select[0]
+// ? +tilemapResponse.select[0]
+// : rNum;
+
+// if (tilemapResponse.data[0]) {
+// results.push(lastRelease);
+// }
+
+// const nextReleaseToCheck = tilemapResponse.data[0]
+// ? this.getPreviousReleaseNum(lastRelease)
+// : null;
+
+// if (nextReleaseToCheck) {
+// tilemapRequest(nextReleaseToCheck);
+// } else {
+// resolve(results);
+// }
+// } catch (err) {
+// console.error(err);
+// reject(null);
+// }
+// };
+
+// tilemapRequest(mostRecentRelease);
+// });
+// }
+
+// async getRNumsFromDetectionLayer(
+// pointInfo: IMapPointInfo,
+// zoomLevel: number
+// ): Promise> {
+// const queryUrl = this.changeDetectionLayerUrl + '/query';
+
+// const fields = config['change-detection-layer'].fields;
+
+// const FIELD_NAME_ZOOM = fields[0].fieldname;
+// const FIELD_NAME_RELEASE_NUM = fields[1].fieldname;
+// const FIELD_NAME_RELEASE_NAME = fields[2].fieldname;
+
+// try {
+// const queryResponse = (await queryFeatures({
+// url: queryUrl,
+// geometry: pointInfo.geometry,
+// geometryType: 'esriGeometryPoint',
+// spatialRel: 'esriSpatialRelIntersects',
+// where: `${FIELD_NAME_ZOOM} = ${zoomLevel}`,
+// outFields: [FIELD_NAME_RELEASE_NUM],
+// orderByFields: FIELD_NAME_RELEASE_NAME,
+// returnGeometry: false,
+// f: 'json',
+// })) as IQueryFeaturesResponse;
+
+// const rNums: Array =
+// queryResponse.features && queryResponse.features.length
+// ? queryResponse.features.map((feature: IFeature) => {
+// return feature.attributes[FIELD_NAME_RELEASE_NUM];
+// })
+// : [];
+
+// return rNums;
+// } catch (err) {
+// console.error(err);
+// return [];
+// }
+// }
+
+// getTileImageUrl({
+// column = null,
+// row = null,
+// level = null,
+// rNum = null,
+// }: IParamGetTileUrl) {
+// const urlTemplate = this.waybackconfig[rNum].itemURL;
+// return urlTemplate
+// .replace('{level}', level.toString())
+// .replace('{row}', row.toString())
+// .replace('{col}', column.toString());
+// }
+
+// async removeDuplicates(
+// candidates?: Array
+// ): Promise> {
+// if (!candidates.length) {
+// return [];
+// }
+
+// const finalResults: Array = [];
+
+// // reverse the candidates list so the wayback items will be sorted by release dates in ascending order (oldest >>> latest)
+// const imageDataUriRequests = candidates.reverse().map((candidate) => {
+// return this.getSampledImagedDataUri(candidate.url, candidate.rNum);
+// });
+
+// try {
+// const imageDataUriResults = await Promise.all(imageDataUriRequests);
+
+// let dataUri4PrevRelease = '';
+
+// for (const { dataUri, rNum } of imageDataUriResults) {
+// if (dataUri === dataUri4PrevRelease) {
+// continue;
+// }
+
+// finalResults.push(rNum);
+// dataUri4PrevRelease = dataUri;
+// }
+// } catch (err) {
+// console.error('failed to fetch all image data uri', err);
+// }
+
+// return finalResults;
+// }
+
+// async getSampledImagedDataUri(
+// imageUrl: string,
+// rNum: number
+// ): Promise {
+// const samplePoints = [512, 1000, 2500, 5000, 7500, 10000, 12500, 15000];
+
+// return new Promise((resolve, reject) => {
+// const xhr = new XMLHttpRequest();
+// xhr.open('GET', imageUrl, true);
+// xhr.responseType = 'arraybuffer';
+
+// xhr.onload = function (e) {
+// if (this.status == 200) {
+// const uInt8Array = new Uint8Array(this.response);
+// let i = uInt8Array.length;
+// const binaryString = new Array(i);
+// while (i--) {
+// binaryString[i] = String.fromCharCode(uInt8Array[i]);
+// }
+// const data = binaryString.join('');
+// const base64 = window.btoa(data);
+// // console.log(base64.length)
+
+// let dataUri = ''; //base64.substr(512, 5000);
+// // console.log(tileImageDataUri);
+
+// for (const point of samplePoints) {
+// dataUri += base64.substr(point, 500);
+// }
+
+// resolve({
+// rNum,
+// dataUri,
+// });
+// } else {
+// reject(null);
+// }
+// };
+
+// xhr.send();
+// });
+// }
+// }
+
+// export default WaybackChangeDetector;
diff --git a/src/services/wayback/Metadata.ts b/src/services/wayback/Metadata.ts
index d57dd7a..82173b4 100644
--- a/src/services/wayback/Metadata.ts
+++ b/src/services/wayback/Metadata.ts
@@ -1,107 +1,107 @@
-/* Copyright 2024 Esri
- *
- * Licensed under the Apache License Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {
- queryFeatures,
- IQueryFeaturesResponse,
- IFeature,
-} from '@esri/arcgis-rest-feature-service';
-import { IWaybackConfig, IWaybackMetadataQueryResult } from '@typings/index';
-import { IParamsQueryMetadata } from './types';
-import config from './config';
-
-class MetadataManager {
- // original wayback config JSON file
- private waybackconfig: IWaybackConfig;
-
- // can only get metadata when the map is between the min and max zoom level (10 <= mapZoom <= 23)
- private readonly MAX_ZOOM = 23;
- private readonly MIN_ZOOM = 10;
-
- constructor(waybackconfig: IWaybackConfig) {
- this.waybackconfig = waybackconfig;
- }
-
- // setWaybackConfig(waybackconfig:IWaybackConfig){
- // this.waybackconfig = waybackconfig;
- // // console.log('set waybackconfig for metadata manager', waybackconfig);
- // }
-
- async queryData(
- params: IParamsQueryMetadata
- ): Promise {
- const fields = config['metadata-layer'].fields;
-
- const FIELD_NAME_SRC_DATE = fields[0].fieldname;
- const FIELD_NAME_SRC_PROVIDER = fields[1].fieldname;
- const FIELD_NAME_SRC_NAME = fields[2].fieldname;
- const FIELD_NAME_SRC_RES = fields[3].fieldname;
- const FIELD_NAME_SRC_ACC = fields[4].fieldname;
-
- const queryUrl = this.getQueryUrl(params.releaseNum, params.zoom);
-
- const outFields = fields.map((d) => d.fieldname);
-
- try {
- const queryResponse = (await queryFeatures({
- url: queryUrl,
- geometry: params.pointGeometry,
- geometryType: 'esriGeometryPoint',
- spatialRel: 'esriSpatialRelIntersects',
- outFields,
- returnGeometry: false,
- f: 'json',
- })) as IQueryFeaturesResponse;
-
- const feature: IFeature =
- queryResponse.features && queryResponse.features.length
- ? queryResponse.features[0]
- : null;
-
- const date = feature.attributes[FIELD_NAME_SRC_DATE];
- const provider = feature.attributes[FIELD_NAME_SRC_PROVIDER];
- const source = feature.attributes[FIELD_NAME_SRC_NAME];
- const resolution = feature.attributes[FIELD_NAME_SRC_RES];
- const accuracy = feature.attributes[FIELD_NAME_SRC_ACC];
-
- return {
- date,
- provider,
- source,
- resolution,
- accuracy,
- };
- } catch (err) {
- return null;
- }
- }
-
- private getQueryUrl(releaseNum: number, zoom: number) {
- const metadataLayerUrl =
- this.waybackconfig[releaseNum].metadataLayerUrl;
- const layerId = this.getLayerId(zoom);
- return `${metadataLayerUrl}/${layerId}/query`;
- }
-
- private getLayerId(zoom: number) {
- zoom = +zoom;
- const layerID = this.MAX_ZOOM - zoom;
- // the service has 14 sub layers that provide metadata up to zoom level 10 (layer ID 14), if the zoom level is small that (e.g. 5), there are no metadata
- const layerIdForMinZoom = this.MAX_ZOOM - this.MIN_ZOOM;
- return layerID <= layerIdForMinZoom ? layerID : layerIdForMinZoom;
- }
-}
-
-export default MetadataManager;
+// /* Copyright 2024 Esri
+// *
+// * Licensed under the Apache License Version 2.0 (the "License");
+// * you may not use this file except in compliance with the License.
+// * You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+// */
+
+// import {
+// queryFeatures,
+// IQueryFeaturesResponse,
+// IFeature,
+// } from '@esri/arcgis-rest-feature-service';
+// import { IWaybackConfig, IWaybackMetadataQueryResult } from '@typings/index';
+// import { IParamsQueryMetadata } from './types';
+// import config from './config';
+
+// class MetadataManager {
+// // original wayback config JSON file
+// private waybackconfig: IWaybackConfig;
+
+// // can only get metadata when the map is between the min and max zoom level (10 <= mapZoom <= 23)
+// private readonly MAX_ZOOM = 23;
+// private readonly MIN_ZOOM = 10;
+
+// constructor(waybackconfig: IWaybackConfig) {
+// this.waybackconfig = waybackconfig;
+// }
+
+// // setWaybackConfig(waybackconfig:IWaybackConfig){
+// // this.waybackconfig = waybackconfig;
+// // // console.log('set waybackconfig for metadata manager', waybackconfig);
+// // }
+
+// async queryData(
+// params: IParamsQueryMetadata
+// ): Promise {
+// const fields = config['metadata-layer'].fields;
+
+// const FIELD_NAME_SRC_DATE = fields[0].fieldname;
+// const FIELD_NAME_SRC_PROVIDER = fields[1].fieldname;
+// const FIELD_NAME_SRC_NAME = fields[2].fieldname;
+// const FIELD_NAME_SRC_RES = fields[3].fieldname;
+// const FIELD_NAME_SRC_ACC = fields[4].fieldname;
+
+// const queryUrl = this.getQueryUrl(params.releaseNum, params.zoom);
+
+// const outFields = fields.map((d) => d.fieldname);
+
+// try {
+// const queryResponse = (await queryFeatures({
+// url: queryUrl,
+// geometry: params.pointGeometry,
+// geometryType: 'esriGeometryPoint',
+// spatialRel: 'esriSpatialRelIntersects',
+// outFields,
+// returnGeometry: false,
+// f: 'json',
+// })) as IQueryFeaturesResponse;
+
+// const feature: IFeature =
+// queryResponse.features && queryResponse.features.length
+// ? queryResponse.features[0]
+// : null;
+
+// const date = feature.attributes[FIELD_NAME_SRC_DATE];
+// const provider = feature.attributes[FIELD_NAME_SRC_PROVIDER];
+// const source = feature.attributes[FIELD_NAME_SRC_NAME];
+// const resolution = feature.attributes[FIELD_NAME_SRC_RES];
+// const accuracy = feature.attributes[FIELD_NAME_SRC_ACC];
+
+// return {
+// date,
+// provider,
+// source,
+// resolution,
+// accuracy,
+// };
+// } catch (err) {
+// return null;
+// }
+// }
+
+// private getQueryUrl(releaseNum: number, zoom: number) {
+// const metadataLayerUrl =
+// this.waybackconfig[releaseNum].metadataLayerUrl;
+// const layerId = this.getLayerId(zoom);
+// return `${metadataLayerUrl}/${layerId}/query`;
+// }
+
+// private getLayerId(zoom: number) {
+// zoom = +zoom;
+// const layerID = this.MAX_ZOOM - zoom;
+// // the service has 14 sub layers that provide metadata up to zoom level 10 (layer ID 14), if the zoom level is small that (e.g. 5), there are no metadata
+// const layerIdForMinZoom = this.MAX_ZOOM - this.MIN_ZOOM;
+// return layerID <= layerIdForMinZoom ? layerID : layerIdForMinZoom;
+// }
+// }
+
+// export default MetadataManager;
diff --git a/src/services/wayback/config.ts b/src/services/wayback/config.ts
index 93673fd..dfe8da1 100644
--- a/src/services/wayback/config.ts
+++ b/src/services/wayback/config.ts
@@ -1,49 +1,49 @@
-/* Copyright 2024 Esri
- *
- * Licensed under the Apache License Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// /* Copyright 2024 Esri
+// *
+// * Licensed under the Apache License Version 2.0 (the "License");
+// * you may not use this file except in compliance with the License.
+// * You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+// */
-export default {
- 'metadata-layer': {
- fields: [
- {
- fieldname: 'SRC_DATE2',
- },
- {
- fieldname: 'NICE_DESC',
- },
- {
- fieldname: 'SRC_DESC',
- },
- {
- fieldname: 'SAMP_RES',
- },
- {
- fieldname: 'SRC_ACC',
- },
- ],
- },
- 'change-detection-layer': {
- fields: [
- {
- fieldname: 'MapLevel',
- },
- {
- fieldname: 'ClumpID',
- },
- {
- fieldname: 'Clump',
- },
- ],
- },
-};
+// export default {
+// 'metadata-layer': {
+// fields: [
+// {
+// fieldname: 'SRC_DATE2',
+// },
+// {
+// fieldname: 'NICE_DESC',
+// },
+// {
+// fieldname: 'SRC_DESC',
+// },
+// {
+// fieldname: 'SAMP_RES',
+// },
+// {
+// fieldname: 'SRC_ACC',
+// },
+// ],
+// },
+// 'change-detection-layer': {
+// fields: [
+// {
+// fieldname: 'MapLevel',
+// },
+// {
+// fieldname: 'ClumpID',
+// },
+// {
+// fieldname: 'Clump',
+// },
+// ],
+// },
+// };
diff --git a/src/services/wayback/helpers.ts b/src/services/wayback/helpers.ts
index 147cc6c..0359044 100644
--- a/src/services/wayback/helpers.ts
+++ b/src/services/wayback/helpers.ts
@@ -1,39 +1,39 @@
-/* Copyright 2024 Esri
- *
- * Licensed under the Apache License Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// /* Copyright 2024 Esri
+// *
+// * Licensed under the Apache License Version 2.0 (the "License");
+// * you may not use this file except in compliance with the License.
+// * You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+// */
-const convertDateFromWaybackItemTitle = (dateString = '') => {
- const dateParts = dateString.split('-');
- const year = +dateParts[0];
- const mon = +dateParts[1] - 1;
- const day = +dateParts[2];
- return new Date(year, mon, day);
-};
+// const convertDateFromWaybackItemTitle = (dateString = '') => {
+// const dateParts = dateString.split('-');
+// const year = +dateParts[0];
+// const mon = +dateParts[1] - 1;
+// const day = +dateParts[2];
+// return new Date(year, mon, day);
+// };
-// the title of wayback item is like "World Imagery (Wayback 2014-02-20)",
-// therefore need to call this method to extract "2014-02-20" from string
-const extractDateFromWaybackItemTitle = (waybackItemTitle = '') => {
- const regexpYYYYMMDD = /\d{4}-\d{2}-\d{2}/g;
- const results = waybackItemTitle.match(regexpYYYYMMDD);
+// // the title of wayback item is like "World Imagery (Wayback 2014-02-20)",
+// // therefore need to call this method to extract "2014-02-20" from string
+// const extractDateFromWaybackItemTitle = (waybackItemTitle = '') => {
+// const regexpYYYYMMDD = /\d{4}-\d{2}-\d{2}/g;
+// const results = waybackItemTitle.match(regexpYYYYMMDD);
- const dateString = results.length ? results[0] : waybackItemTitle;
- const datetime = convertDateFromWaybackItemTitle(dateString);
+// const dateString = results.length ? results[0] : waybackItemTitle;
+// const datetime = convertDateFromWaybackItemTitle(dateString);
- return {
- releaseDateLabel: dateString,
- releaseDatetime: datetime.getTime(),
- };
-};
+// return {
+// releaseDateLabel: dateString,
+// releaseDatetime: datetime.getTime(),
+// };
+// };
-export { extractDateFromWaybackItemTitle };
+// export { extractDateFromWaybackItemTitle };
diff --git a/src/services/wayback/index.ts b/src/services/wayback/index.ts
index ce8762f..d721c79 100644
--- a/src/services/wayback/index.ts
+++ b/src/services/wayback/index.ts
@@ -1,145 +1,145 @@
-/* Copyright 2024 Esri
- *
- * Licensed under the Apache License Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import config from '../../app-config';
-import axios from 'axios';
-
-import { getServiceUrl } from '@utils/Tier';
-import { IWaybackItem, IWaybackConfig, IMapPointInfo } from '@typings/index';
-import { IParamsQueryMetadata } from './types';
-import { extractDateFromWaybackItemTitle } from './helpers';
-import MetadataManager from './Metadata';
-import ChangeDetector from './ChangeDetector';
-import { getRoundedDate } from 'helper-toolkit-ts/dist/date';
-
-class WaybackManager {
- // module to query the wayback metadata
- private metadataManager: MetadataManager;
- private changeDetector: ChangeDetector;
-
- // original wayback config JSON file
- private waybackconfig: IWaybackConfig;
-
- // array of wayback items with more attributes
- private waybackItems: Array;
-
- // constructor() {}
-
- async init() {
- this.waybackconfig = await this.fetchWaybackConfig();
- // console.log(this.waybackconfig);
-
- this.waybackItems = this.getWaybackItems();
-
- this.metadataManager = new MetadataManager(this.waybackconfig);
-
- this.changeDetector = new ChangeDetector({
- waybackMapServerBaseUrl: getServiceUrl('wayback-imagery-base'),
- changeDetectionLayerUrl: getServiceUrl(
- 'wayback-change-detector-layer'
- ),
- waybackconfig: this.waybackconfig,
- waybackItems: this.waybackItems,
- shouldUseChangdeDetectorLayer:
- config.shouldUseWaybackFootprintsLayer,
- });
-
- return {
- waybackItems: this.waybackItems,
- };
- }
-
- getWaybackItems() {
- const waybackItems = Object.keys(this.waybackconfig).map(
- (key: string) => {
- const releaseNum = +key;
-
- const waybackconfigItem = this.waybackconfig[+releaseNum];
-
- const releaseDate = extractDateFromWaybackItemTitle(
- waybackconfigItem.itemTitle
- );
-
- const waybackItem = {
- releaseNum,
- ...releaseDate,
- ...waybackconfigItem,
- };
-
- return waybackItem;
- }
- );
-
- waybackItems.sort((a, b) => {
- return b.releaseDatetime - a.releaseDatetime;
- });
-
- return waybackItems;
- }
-
- async getLocalChanges(pointInfo: IMapPointInfo) {
- try {
- const localChangeQueryRes = await this.changeDetector.findChanges(
- pointInfo
- );
- return localChangeQueryRes;
- } catch (err) {
- console.error(err);
- return null;
- }
- }
-
- async getMetadata(params: IParamsQueryMetadata) {
- try {
- const metadataQueryRes = await this.metadataManager.queryData(
- params
- );
- return metadataQueryRes;
- } catch (err) {
- console.error(err);
- return null;
- }
- }
-
- private fetchWaybackConfig(): Promise {
- // make sure we can get the latest version of the wayback config file
- const requestUrl =
- getServiceUrl('wayback-config') + `?modified=${getRoundedDate(5)}`;
-
- return new Promise((resolve, reject) => {
- axios
- .get(requestUrl)
- .then((response) => {
- // handle success
- // console.log(response);
-
- if (response.data) {
- resolve(response.data);
- } else {
- reject({
- error: 'failed to fetch wayback config data',
- });
- }
- })
- .catch((error) => {
- // handle error
- console.log(error);
- reject(error);
- });
- });
- }
-}
-
-export default WaybackManager;
+// /* Copyright 2024 Esri
+// *
+// * Licensed under the Apache License Version 2.0 (the "License");
+// * you may not use this file except in compliance with the License.
+// * You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+// */
+
+// import config from '../../app-config';
+// import axios from 'axios';
+
+// import { getServiceUrl } from '@utils/Tier';
+// import { IWaybackItem, IWaybackConfig, IMapPointInfo } from '@typings/index';
+// import { IParamsQueryMetadata } from './types';
+// import { extractDateFromWaybackItemTitle } from './helpers';
+// import MetadataManager from './Metadata';
+// import ChangeDetector from './ChangeDetector';
+// import { getRoundedDate } from 'helper-toolkit-ts/dist/date';
+
+// class WaybackManager {
+// // module to query the wayback metadata
+// private metadataManager: MetadataManager;
+// private changeDetector: ChangeDetector;
+
+// // original wayback config JSON file
+// private waybackconfig: IWaybackConfig;
+
+// // array of wayback items with more attributes
+// private waybackItems: Array;
+
+// // constructor() {}
+
+// async init() {
+// this.waybackconfig = await this.fetchWaybackConfig();
+// // console.log(this.waybackconfig);
+
+// this.waybackItems = this.getWaybackItems();
+
+// this.metadataManager = new MetadataManager(this.waybackconfig);
+
+// this.changeDetector = new ChangeDetector({
+// waybackMapServerBaseUrl: getServiceUrl('wayback-imagery-base'),
+// changeDetectionLayerUrl: getServiceUrl(
+// 'wayback-change-detector-layer'
+// ),
+// waybackconfig: this.waybackconfig,
+// waybackItems: this.waybackItems,
+// shouldUseChangdeDetectorLayer:
+// config.shouldUseWaybackFootprintsLayer,
+// });
+
+// return {
+// waybackItems: this.waybackItems,
+// };
+// }
+
+// getWaybackItems() {
+// const waybackItems = Object.keys(this.waybackconfig).map(
+// (key: string) => {
+// const releaseNum = +key;
+
+// const waybackconfigItem = this.waybackconfig[+releaseNum];
+
+// const releaseDate = extractDateFromWaybackItemTitle(
+// waybackconfigItem.itemTitle
+// );
+
+// const waybackItem = {
+// releaseNum,
+// ...releaseDate,
+// ...waybackconfigItem,
+// };
+
+// return waybackItem;
+// }
+// );
+
+// waybackItems.sort((a, b) => {
+// return b.releaseDatetime - a.releaseDatetime;
+// });
+
+// return waybackItems;
+// }
+
+// async getLocalChanges(pointInfo: IMapPointInfo) {
+// try {
+// const localChangeQueryRes = await this.changeDetector.findChanges(
+// pointInfo
+// );
+// return localChangeQueryRes;
+// } catch (err) {
+// console.error(err);
+// return null;
+// }
+// }
+
+// async getMetadata(params: IParamsQueryMetadata) {
+// try {
+// const metadataQueryRes = await this.metadataManager.queryData(
+// params
+// );
+// return metadataQueryRes;
+// } catch (err) {
+// console.error(err);
+// return null;
+// }
+// }
+
+// private fetchWaybackConfig(): Promise {
+// // make sure we can get the latest version of the wayback config file
+// const requestUrl =
+// getServiceUrl('wayback-config') + `?modified=${getRoundedDate(5)}`;
+
+// return new Promise((resolve, reject) => {
+// axios
+// .get(requestUrl)
+// .then((response) => {
+// // handle success
+// // console.log(response);
+
+// if (response.data) {
+// resolve(response.data);
+// } else {
+// reject({
+// error: 'failed to fetch wayback config data',
+// });
+// }
+// })
+// .catch((error) => {
+// // handle error
+// console.log(error);
+// reject(error);
+// });
+// });
+// }
+// }
+
+// export default WaybackManager;
diff --git a/src/services/wayback/types.d.ts b/src/services/wayback/types.d.ts
index 969bb27..bd6a66e 100644
--- a/src/services/wayback/types.d.ts
+++ b/src/services/wayback/types.d.ts
@@ -1,28 +1,28 @@
-/* Copyright 2024 Esri
- *
- * Licensed under the Apache License Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// /* Copyright 2024 Esri
+// *
+// * Licensed under the Apache License Version 2.0 (the "License");
+// * you may not use this file except in compliance with the License.
+// * You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+// */
-import {
- IPointGeomety,
- // IMapPointInfo,
- // IWaybackConfig,
-} from '@typings/index';
+// import {
+// IPointGeomety,
+// // IMapPointInfo,
+// // IWaybackConfig,
+// } from '@typings/index';
-interface IParamsQueryMetadata {
- pointGeometry: IPointGeomety;
- zoom: number;
- releaseNum: number;
-}
+// interface IParamsQueryMetadata {
+// pointGeometry: IPointGeomety;
+// zoom: number;
+// releaseNum: number;
+// }
-export { IParamsQueryMetadata };
+// export { IParamsQueryMetadata };
diff --git a/src/store/AnimationMode/reducer.ts b/src/store/AnimationMode/reducer.ts
index 1672f0d..e105a5d 100644
--- a/src/store/AnimationMode/reducer.ts
+++ b/src/store/AnimationMode/reducer.ts
@@ -19,61 +19,88 @@ import {
PayloadAction,
// createAsyncThunk
} from '@reduxjs/toolkit';
-import { batch } from 'react-redux';
-import { IWaybackItem } from '@typings/index';
-import { saveAnimationSpeedInURLQueryParam } from '@utils/UrlSearchParam';
+// import { batch } from 'react-redux';
+// import { IWaybackItem } from '@typings/index';
+// import { saveAnimationSpeedInURLQueryParam } from '@utils/UrlSearchParam';
// import { IWaybackItem } from '@typings/index';
import { RootState, StoreDispatch, StoreGetState } from '../configureStore';
+import { MapMode, mapModeChanged, selectMapMode } from '@store/Map/reducer';
+
+// import { isSwipeWidgetOpenToggled } from '../Swipe/reducer';
-import { isSwipeWidgetOpenToggled } from '../Swipe/reducer';
+export type AnimationStatus = 'loading' | 'playing' | 'pausing';
export type AnimationModeState = {
- isAnimationModeOn: boolean;
- isDownloadGIFDialogOn: boolean;
- // rNum4AnimationFrames: number[],
- waybackItems4Animation: IWaybackItem[];
- // array of release numbers for items to be excluded from the animation
+ /**
+ * status of the Animation mode
+ */
+ animationStatus?: AnimationStatus;
+ /**
+ * if true, show download animation panel
+ */
+ showDownloadAnimationPanel: boolean;
+ /**
+ * array of release numbers for items to be excluded from the animation
+ */
rNum2Exclude: number[];
- // animation speed in second
+ /**
+ * animation speed in milliseconds
+ */
animationSpeed: number;
- isPlaying: boolean;
- indexOfCurrentFrame: number;
- isLoadingFrameData: boolean;
+ /**
+ * release number of wayback item that is being displayed as current animation frame
+ */
+ releaseNumberOfActiveAnimationFrame: number;
+ /**
+ * if true, the link of the current animiation has been copied to the clipboard
+ */
+ animationLinkIsCopied: boolean;
};
-export const DEFAULT_ANIMATION_SPEED_IN_SECONDS = 1;
+/**
+ * list of animation speed in milliseconds
+ */
+export const ANIMATION_SPEED_OPTIONS_IN_MILLISECONDS = [
+ 2000, 1000, 800, 600, 400, 200, 100, 20, 0,
+];
+
+export const DEFAULT_ANIMATION_SPEED_IN_MILLISECONDS =
+ ANIMATION_SPEED_OPTIONS_IN_MILLISECONDS[
+ Math.floor(ANIMATION_SPEED_OPTIONS_IN_MILLISECONDS.length / 2)
+ ];
export const initialAnimationModeState = {
- isAnimationModeOn: false,
- isDownloadGIFDialogOn: false,
- // rNum4AnimationFrames: [],
+ animationStatus: null,
+ showDownloadAnimationPanel: false,
waybackItems4Animation: [],
rNum2Exclude: [],
- animationSpeed: DEFAULT_ANIMATION_SPEED_IN_SECONDS,
- isPlaying: true,
- indexOfCurrentFrame: 0,
- isLoadingFrameData: true,
+ animationSpeed: DEFAULT_ANIMATION_SPEED_IN_MILLISECONDS,
+ releaseNumberOfActiveAnimationFrame: null,
+ animationLinkIsCopied: false,
} as AnimationModeState;
const slice = createSlice({
name: 'AnimationMode',
initialState: initialAnimationModeState,
reducers: {
- isAnimationModeOnToggled: (state: AnimationModeState) => {
- state.isAnimationModeOn = !state.isAnimationModeOn;
- },
- isDownloadGIFDialogOnToggled: (state: AnimationModeState) => {
- state.isDownloadGIFDialogOn = !state.isDownloadGIFDialogOn;
+ animationStatusChanged: (
+ state,
+ action: PayloadAction
+ ) => {
+ state.animationStatus = action.payload;
},
- // rNum4AnimationFramesLoaded: (state:AnimationModeState, action:PayloadAction)=>{
- // state.rNum4AnimationFrames = action.payload
- // },
- waybackItems4AnimationLoaded: (
+ showDownloadAnimationPanelToggled: (
state: AnimationModeState,
- action: PayloadAction
+ action: PayloadAction
) => {
- state.waybackItems4Animation = action.payload;
+ state.showDownloadAnimationPanel = action.payload;
+ },
+ animationLinkIsCopiedChanged: (
+ state,
+ action: PayloadAction
+ ) => {
+ state.animationLinkIsCopied = action.payload;
},
rNum2ExcludeToggled: (
state: AnimationModeState,
@@ -98,28 +125,11 @@ const slice = createSlice({
) => {
state.animationSpeed = action.payload;
},
- isAnimationPlayingToggled: (
- state: AnimationModeState,
- action: PayloadAction
- ) => {
- state.isPlaying = action.payload;
- },
- indexOfCurrentFrameChanged: (
+ releaseNumberOfActiveAnimationFrameChanged: (
state: AnimationModeState,
action: PayloadAction
) => {
- state.indexOfCurrentFrame = action.payload;
- },
- isLoadingFrameDataToggled: (
- state: AnimationModeState,
- action: PayloadAction
- ) => {
- state.isLoadingFrameData = action.payload;
- },
- resetAnimationMode: (state: AnimationModeState) => {
- state.isPlaying = true;
- state.animationSpeed = DEFAULT_ANIMATION_SPEED_IN_SECONDS;
- state.rNum2Exclude = [];
+ state.releaseNumberOfActiveAnimationFrame = action.payload;
},
},
});
@@ -127,201 +137,39 @@ const slice = createSlice({
const { reducer } = slice;
export const {
- isAnimationModeOnToggled,
- isDownloadGIFDialogOnToggled,
- waybackItems4AnimationLoaded,
+ animationStatusChanged,
+ // isAnimationModeOnToggled,
+ showDownloadAnimationPanelToggled,
+ // waybackItems4AnimationLoaded,
rNum2ExcludeToggled,
rNum2ExcludeReset,
animationSpeedChanged,
- isAnimationPlayingToggled,
- indexOfCurrentFrameChanged,
- isLoadingFrameDataToggled,
- resetAnimationMode,
+ releaseNumberOfActiveAnimationFrameChanged,
+ animationLinkIsCopiedChanged,
} = slice.actions;
-export const toggleIsLoadingFrameData =
- (isLoading: boolean) =>
- (dispatch: StoreDispatch, getState: StoreGetState) => {
- const { AnimationMode } = getState();
-
- const { isPlaying } = AnimationMode;
-
- batch(() => {
- dispatch(isLoadingFrameDataToggled(isLoading));
-
- if (isLoading) {
- dispatch(indexOfCurrentFrameChanged(0));
- }
-
- if (!isLoading && isPlaying) {
- dispatch(startAnimation());
- }
- });
- };
-
export const toggleAnimationMode =
() => (dispatch: StoreDispatch, getState: StoreGetState) => {
- const { SwipeView, AnimationMode } = getState();
+ const mode = selectMapMode(getState());
- const { isAnimationModeOn, animationSpeed } = AnimationMode;
+ const newMode: MapMode = mode === 'animation' ? 'explore' : 'animation';
- const willAnimationModeBeTurnedOn = !isAnimationModeOn;
-
- if (SwipeView.isSwipeWidgetOpen && willAnimationModeBeTurnedOn) {
- dispatch(isSwipeWidgetOpenToggled());
- }
-
- if (isAnimationModeOn) {
- console.log('reset animation mode');
- dispatch(resetAnimationMode());
- }
-
- saveAnimationSpeedInURLQueryParam(
- willAnimationModeBeTurnedOn,
- animationSpeed
- );
-
- dispatch(isAnimationModeOnToggled());
+ dispatch(mapModeChanged(newMode));
};
-let interval4Animation: NodeJS.Timeout;
-
-export const startAnimation =
- () => (dispatch: StoreDispatch, getState: StoreGetState) => {
- const { AnimationMode } = getState();
-
- let { animationSpeed } = AnimationMode;
-
- animationSpeed = animationSpeed || 0.1;
-
- dispatch(isAnimationPlayingToggled(true));
-
- clearInterval(interval4Animation);
-
- interval4Animation = setInterval(() => {
- dispatch(showNextFrame());
- }, animationSpeed * 1000);
- };
-
-export const stopAnimation =
- () => (dispatch: StoreDispatch, getState: StoreGetState) => {
- dispatch(isAnimationPlayingToggled(false));
- clearInterval(interval4Animation);
- };
-
-export const setActiveFrameByReleaseNum =
- (releaseNum: number) =>
- (dispatch: StoreDispatch, getState: StoreGetState) => {
- const { AnimationMode } = getState();
-
- const { isPlaying, isLoadingFrameData, waybackItems4Animation } =
- AnimationMode;
-
- if (isPlaying || isLoadingFrameData) {
- return;
- }
-
- let targetIdx = 0;
-
- for (let i = 0; i < waybackItems4Animation.length; i++) {
- if (waybackItems4Animation[i].releaseNum === releaseNum) {
- targetIdx = i;
- break;
- }
- }
-
- dispatch(indexOfCurrentFrameChanged(targetIdx));
- };
-
-const showNextFrame =
- () => (dispatch: StoreDispatch, getState: StoreGetState) => {
- const { AnimationMode } = getState();
-
- const {
- rNum2Exclude,
- waybackItems4Animation,
- indexOfCurrentFrame,
- isLoadingFrameData,
- } = AnimationMode;
-
- if (isLoadingFrameData) {
- return;
- }
-
- const rNum2ExcludeSet = new Set(rNum2Exclude);
-
- let idx4NextFrame = indexOfCurrentFrame;
-
- // loop through the circular array to find next item to show
- for (
- let i = indexOfCurrentFrame + 1;
- i < indexOfCurrentFrame + waybackItems4Animation.length;
- i++
- ) {
- const targetIdx = i % waybackItems4Animation.length;
-
- const targetItem = waybackItems4Animation[targetIdx];
-
- if (!rNum2ExcludeSet.has(targetItem.releaseNum)) {
- idx4NextFrame = targetIdx;
- break;
- }
- }
-
- dispatch(indexOfCurrentFrameChanged(idx4NextFrame));
- };
-
-export const updateAnimationSpeed =
- (speedInSeconds: number) =>
- (dispatch: StoreDispatch, getState: StoreGetState) => {
- const { AnimationMode } = getState();
-
- const { isPlaying, animationSpeed } = AnimationMode;
-
- if (speedInSeconds == animationSpeed) {
- return;
- }
-
- saveAnimationSpeedInURLQueryParam(true, speedInSeconds);
-
- batch(() => {
- dispatch(animationSpeedChanged(speedInSeconds));
-
- if (isPlaying) {
- dispatch(startAnimation());
- }
- });
- };
-
-export const toggleAnimationFrame =
- (releaseNum: number) =>
- (dispatch: StoreDispatch, getState: StoreGetState) => {
- const { AnimationMode } = getState();
-
- const { isPlaying } = AnimationMode;
-
- batch(() => {
- dispatch(rNum2ExcludeToggled(releaseNum));
-
- if (isPlaying) {
- dispatch(startAnimation());
- }
- });
- };
-
-export const isAnimationModeOnSelector = createSelector(
- (state: RootState) => state.AnimationMode.isAnimationModeOn,
- (isAnimationModeOn) => isAnimationModeOn
+export const selectAnimationStatus = createSelector(
+ (state: RootState) => state.AnimationMode.animationStatus,
+ (animationStatus) => animationStatus
);
-export const isDownloadGIFDialogOnSelector = createSelector(
- (state: RootState) => state.AnimationMode.isDownloadGIFDialogOn,
- (isDownloadGIFDialogOn) => isDownloadGIFDialogOn
+export const isAnimationModeOnSelector = createSelector(
+ (state: RootState) => state.Map.mode,
+ (mode) => mode === 'animation'
);
-export const waybackItems4AnimationSelector = createSelector(
- (state: RootState) => state.AnimationMode.waybackItems4Animation,
- (waybackItems4Animation) => waybackItems4Animation
+export const selectShouldShowDownloadPanel = createSelector(
+ (state: RootState) => state.AnimationMode.showDownloadAnimationPanel,
+ (showDownloadAnimationPanel) => showDownloadAnimationPanel
);
export const rNum2ExcludeSelector = createSelector(
@@ -334,32 +182,15 @@ export const animationSpeedSelector = createSelector(
(animationSpeed) => animationSpeed
);
-export const isAnimationPlayingSelector = createSelector(
- (state: RootState) => state.AnimationMode.isPlaying,
- (isPlaying) => isPlaying
-);
-
-export const indexOfCurrentAnimationFrameSelector = createSelector(
- (state: RootState) => state.AnimationMode.indexOfCurrentFrame,
- (indexOfCurrentFrame) => indexOfCurrentFrame
-);
-
-export const waybackItem4CurrentAnimationFrameSelector = createSelector(
- (state: RootState) => state.AnimationMode.indexOfCurrentFrame,
- (state: RootState) => state.AnimationMode.waybackItems4Animation,
- (state: RootState) => state.AnimationMode.isLoadingFrameData,
- (indexOfCurrentFrame, waybackItems4Animation, isLoadingFrameData) => {
- if (!waybackItems4Animation.length || isLoadingFrameData) {
- return null;
- }
-
- return waybackItems4Animation[indexOfCurrentFrame];
- }
+export const selectReleaseNumberOfActiveAnimationFrame = createSelector(
+ (state: RootState) =>
+ state.AnimationMode.releaseNumberOfActiveAnimationFrame,
+ (releaseNumberOfActiveAnimationFrame) => releaseNumberOfActiveAnimationFrame
);
-export const isLoadingFrameDataSelector = createSelector(
- (state: RootState) => state.AnimationMode.isLoadingFrameData,
- (isLoadingFrameData) => isLoadingFrameData
+export const selectAnimationLinkIsCopied = createSelector(
+ (state: RootState) => state.AnimationMode.animationLinkIsCopied,
+ (animationLinkIsCopied) => animationLinkIsCopied
);
export default reducer;
diff --git a/src/store/AnimationMode/thunks.ts b/src/store/AnimationMode/thunks.ts
new file mode 100644
index 0000000..a2f90bf
--- /dev/null
+++ b/src/store/AnimationMode/thunks.ts
@@ -0,0 +1,32 @@
+/* Copyright 2024 Esri
+ *
+ * Licensed under the Apache License Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { delay } from '@utils/snippets/delay';
+import { RootState, StoreDispatch, StoreGetState } from '../configureStore';
+import { animationLinkIsCopiedChanged } from './reducer';
+import { COPIED_LINK_MESSAGE_TIME_TO_STAY_OPEN_IN_MILLISECONDS } from '@constants/UI';
+
+export const copyAnimationLink =
+ () => async (dispatch: StoreDispatch, getState: StoreGetState) => {
+ await navigator.clipboard.writeText(window.location.href);
+
+ // set to true to display the success message
+ dispatch(animationLinkIsCopiedChanged(true));
+
+ // the message should be turned off after 3 seconds
+ await delay(COPIED_LINK_MESSAGE_TIME_TO_STAY_OPEN_IN_MILLISECONDS);
+
+ dispatch(animationLinkIsCopiedChanged(false));
+ };
diff --git a/src/store/Map/reducer.ts b/src/store/Map/reducer.ts
index d2a3d4b..5607eaf 100644
--- a/src/store/Map/reducer.ts
+++ b/src/store/Map/reducer.ts
@@ -32,8 +32,15 @@ export type MapCenter = {
lat: number;
};
+export type MapMode = 'explore' | 'swipe' | 'animation';
+
export type MapState = {
+ mode: MapMode;
mapExtent: IExtentGeomety;
+ /**
+ * if true, it is in process of querying metadata
+ */
+ isQueryingMetadata: boolean;
metadataQueryResult: IWaybackMetadataQueryResult;
metadataPopupAnchor: IScreenPoint;
isReferenceLayerVisible: boolean;
@@ -48,7 +55,9 @@ export type MapState = {
};
export const initialMapState: MapState = {
+ mode: 'explore',
mapExtent: null,
+ isQueryingMetadata: false,
metadataQueryResult: null,
metadataPopupAnchor: null,
isReferenceLayerVisible: true,
@@ -60,6 +69,9 @@ const slice = createSlice({
name: 'Map',
initialState: initialMapState,
reducers: {
+ mapModeChanged: (state: MapState, action: PayloadAction) => {
+ state.mode = action.payload;
+ },
mapExtentUpdated: (
state: MapState,
action: PayloadAction
@@ -71,6 +83,7 @@ const slice = createSlice({
action: PayloadAction
) => {
state.metadataQueryResult = action.payload;
+ state.isQueryingMetadata = false;
},
metadataPopupAnchorUpdated: (
state: MapState,
@@ -81,6 +94,12 @@ const slice = createSlice({
isReferenceLayerVisibleToggled: (state: MapState) => {
state.isReferenceLayerVisible = !state.isReferenceLayerVisible;
},
+ isQueryingMetadataToggled: (
+ state: MapState,
+ action: PayloadAction
+ ) => {
+ state.isQueryingMetadata = action.payload;
+ },
mapCenterUpdated: (state, action: PayloadAction) => {
state.center = action.payload;
},
@@ -93,14 +112,21 @@ const slice = createSlice({
const { reducer } = slice;
export const {
+ mapModeChanged,
mapExtentUpdated,
metadataQueryResultUpdated,
metadataPopupAnchorUpdated,
isReferenceLayerVisibleToggled,
+ isQueryingMetadataToggled,
mapCenterUpdated,
zoomUpdated,
} = slice.actions;
+export const selectMapMode = createSelector(
+ (state: RootState) => state.Map.mode,
+ (mode) => mode
+);
+
export const mapExtentSelector = createSelector(
(state: RootState) => state.Map.mapExtent,
(mapExtent) => mapExtent
@@ -111,6 +137,11 @@ export const isReferenceLayerVisibleSelector = createSelector(
(isReferenceLayerVisible) => isReferenceLayerVisible
);
+export const selectIsQueringMetadata = createSelector(
+ (state: RootState) => state.Map.isQueryingMetadata,
+ (isQueryingMetadata) => isQueryingMetadata
+);
+
export const metadataQueryResultSelector = createSelector(
(state: RootState) => state.Map.metadataQueryResult,
(metadataQueryResult) => metadataQueryResult
@@ -137,4 +168,9 @@ export const selectMapCenterAndZoom = createSelector(
}
);
+export const selectMapCenter = createSelector(
+ (state: RootState) => state.Map.center,
+ (center) => center
+);
+
export default reducer;
diff --git a/src/store/Swipe/reducer.ts b/src/store/Swipe/reducer.ts
index e915ed9..bcbb54e 100644
--- a/src/store/Swipe/reducer.ts
+++ b/src/store/Swipe/reducer.ts
@@ -24,16 +24,17 @@ import {
import { RootState, StoreDispatch, StoreGetState } from '../configureStore';
import { toggleAnimationMode } from '../AnimationMode/reducer';
+import { MapMode, mapModeChanged, selectMapMode } from '@store/Map/reducer';
export type SwipeViewState = {
- isSwipeWidgetOpen: boolean;
+ // isSwipeWidgetOpen: boolean;
releaseNum4LeadingLayer: number;
releaseNum4TrailingLayer: number;
swipePosition: number;
};
export const initialSwipeViewState = {
- isSwipeWidgetOpen: false,
+ // isSwipeWidgetOpen: false,
releaseNum4LeadingLayer: null,
releaseNum4TrailingLayer: null,
swipePosition: 50,
@@ -43,9 +44,9 @@ const slice = createSlice({
name: 'SwipeView',
initialState: initialSwipeViewState,
reducers: {
- isSwipeWidgetOpenToggled: (state: SwipeViewState) => {
- state.isSwipeWidgetOpen = !state.isSwipeWidgetOpen;
- },
+ // isSwipeWidgetOpenToggled: (state: SwipeViewState) => {
+ // state.isSwipeWidgetOpen = !state.isSwipeWidgetOpen;
+ // },
releaseNum4LeadingLayerUpdated: (
state: SwipeViewState,
action: PayloadAction
@@ -70,7 +71,7 @@ const slice = createSlice({
const { reducer } = slice;
export const {
- isSwipeWidgetOpenToggled,
+ // isSwipeWidgetOpenToggled,
releaseNum4LeadingLayerUpdated,
releaseNum4TrailingLayerUpdated,
swipePositionUpdated,
@@ -78,18 +79,24 @@ export const {
export const toggleSwipeWidget =
() => (dispatch: StoreDispatch, getState: StoreGetState) => {
- const { AnimationMode } = getState();
+ const mode = selectMapMode(getState());
+
+ const newMode: MapMode = mode === 'swipe' ? 'explore' : 'swipe';
+
+ dispatch(mapModeChanged(newMode));
+
+ // const { AnimationMode } = getState();
- if (AnimationMode.isAnimationModeOn) {
- dispatch(toggleAnimationMode());
- }
+ // if (AnimationMode.isAnimationModeOn) {
+ // dispatch(toggleAnimationMode());
+ // }
- dispatch(isSwipeWidgetOpenToggled());
+ // dispatch(isSwipeWidgetOpenToggled());
};
export const isSwipeWidgetOpenSelector = createSelector(
- (state: RootState) => state.SwipeView.isSwipeWidgetOpen,
- (isSwipeWidgetOpen) => isSwipeWidgetOpen
+ (state: RootState) => state.Map.mode,
+ (mode) => mode === 'swipe'
);
export const swipeWidgetLeadingLayerSelector = createSelector(
diff --git a/src/store/Wayback/reducer.ts b/src/store/Wayback/reducer.ts
index a7968e6..f41e4d4 100644
--- a/src/store/Wayback/reducer.ts
+++ b/src/store/Wayback/reducer.ts
@@ -43,6 +43,10 @@ export type WaybackItemsState = {
releaseNum4ActiveWaybackItem: number;
releaseNum4PreviewWaybackItem: number;
releaseNum4AlternativePreviewWaybackItem: number;
+ /**
+ * if ture, it is in process of loading wayback items or items with local changes
+ */
+ isLoading: boolean;
};
export const initialWaybackItemsState = {
@@ -53,6 +57,7 @@ export const initialWaybackItemsState = {
releaseNum4ActiveWaybackItem: null,
releaseNum4PreviewWaybackItem: null,
releaseNum4AlternativePreviewWaybackItem: null,
+ isLoading: false,
} as WaybackItemsState;
const slice = createSlice({
@@ -127,6 +132,12 @@ const slice = createSlice({
) => {
state.releaseNum4AlternativePreviewWaybackItem = action.payload;
},
+ isLoadingWaybackItemsToggled: (
+ state: WaybackItemsState,
+ action: PayloadAction
+ ) => {
+ state.isLoading = action.payload;
+ },
},
});
@@ -140,6 +151,7 @@ export const {
releaseNum4ActiveWaybackItemUpdated,
releaseNum4PreviewWaybackItemUpdated,
releaseNum4AlternativePreviewWaybackItemUpdated,
+ isLoadingWaybackItemsToggled,
} = slice.actions;
let delay4SetPreviewWaybackItem: NodeJS.Timeout;
@@ -271,4 +283,9 @@ export const selectWaybackItemsByReleaseNum = createSelector(
(byReleaseNumber) => byReleaseNumber
);
+export const selectIsLoadingWaybackItems = createSelector(
+ (state: RootState) => state.WaybackItems.isLoading,
+ (isLoading) => isLoading
+);
+
export default reducer;
diff --git a/src/store/Wayback/thunks.ts b/src/store/Wayback/thunks.ts
new file mode 100644
index 0000000..eb80f71
--- /dev/null
+++ b/src/store/Wayback/thunks.ts
@@ -0,0 +1,58 @@
+/* Copyright 2024 Esri
+ *
+ * Licensed under the Apache License Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { Point } from '@arcgis/core/geometry';
+import { StoreDispatch, StoreGetState } from '../configureStore';
+import {
+ isLoadingWaybackItemsToggled,
+ releaseNum4ItemsWithLocalChangesUpdated,
+} from './reducer';
+import { getWaybackItemsWithLocalChanges } from '@vannizhang/wayback-core';
+
+let abortController: AbortController = null;
+
+export const queryLocalChanges =
+ (point: Point, zoom: number) =>
+ async (dispatch: StoreDispatch, getState: StoreGetState) => {
+ try {
+ if (abortController) {
+ abortController.abort();
+ }
+
+ abortController = new AbortController();
+
+ dispatch(isLoadingWaybackItemsToggled(true));
+
+ const waybackItems = await getWaybackItemsWithLocalChanges(
+ {
+ longitude: point.longitude,
+ latitude: point.latitude,
+ },
+ zoom,
+ abortController
+ );
+
+ // console.log(waybackItems);
+
+ const rNums = waybackItems.map((d) => d.releaseNum);
+
+ // console.log(rNums);
+ dispatch(releaseNum4ItemsWithLocalChangesUpdated(rNums));
+
+ dispatch(isLoadingWaybackItemsToggled(false));
+ } catch (err) {
+ console.log(err);
+ }
+ };
diff --git a/src/store/getPreloadedState.ts b/src/store/getPreloadedState.ts
index 846e95c..94ebfa1 100644
--- a/src/store/getPreloadedState.ts
+++ b/src/store/getPreloadedState.ts
@@ -19,7 +19,7 @@ import { initialUIState, UIState } from './UI/reducer';
import { initialWaybackItemsState, WaybackItemsState } from './Wayback/reducer';
import { initialSwipeViewState, SwipeViewState } from './Swipe/reducer';
import { IURLParamData, IWaybackItem } from '../types';
-import { initialMapState, MapState } from './Map/reducer';
+import { initialMapState, MapMode, MapState } from './Map/reducer';
import {
decodeURLParams,
getMapCenterFromHashParams,
@@ -33,8 +33,10 @@ import {
getDownloadJobsFromLocalStorage,
} from '../utils/LocalStorage';
import {
+ ANIMATION_SPEED_OPTIONS_IN_MILLISECONDS,
AnimationModeState,
- DEFAULT_ANIMATION_SPEED_IN_SECONDS,
+ DEFAULT_ANIMATION_SPEED_IN_MILLISECONDS,
+ // DEFAULT_ANIMATION_SPEED_IN_MILLISECONDS,
initialAnimationModeState,
} from './AnimationMode/reducer';
@@ -47,10 +49,6 @@ import {
const isMobile = miscFns.isMobileDevice();
const getPreloadedState4UI = (urlParams: IURLParamData): UIState => {
- // const shouldOnlyShowItemsWithLocalChange = true
- // urlParams.shouldOnlyShowItemsWithLocalChange ||
- // getShouldShowUpdatesWithLocalChanges();
-
const state: UIState = {
...initialUIState,
// shouldOnlyShowItemsWithLocalChange,
@@ -103,7 +101,7 @@ const getPreloadedState4SwipeView = (
const state: SwipeViewState = {
...initialSwipeViewState,
- isSwipeWidgetOpen,
+ // isSwipeWidgetOpen,
releaseNum4LeadingLayer:
rNum4SwipeWidgetLeadingLayer ||
rNum4ActiveWaybackItem ||
@@ -117,12 +115,21 @@ const getPreloadedState4SwipeView = (
};
const getPreloadedState4Map = (urlParams: IURLParamData): MapState => {
- const { mapExtent } = urlParams;
+ const { mapExtent, animationSpeed, isSwipeWidgetOpen } = urlParams;
const { center, zoom } = getMapCenterFromHashParams() || {};
+ let mode: MapMode = 'explore';
+
+ if (isSwipeWidgetOpen) {
+ mode = 'swipe';
+ } else if (animationSpeed) {
+ mode = 'animation';
+ }
+
const state: MapState = {
...initialMapState,
+ mode,
mapExtent,
center,
zoom,
@@ -134,7 +141,8 @@ const getPreloadedState4Map = (urlParams: IURLParamData): MapState => {
const getPreloadedState4AnimationMode = (
urlParams: IURLParamData
): AnimationModeState => {
- const { animationSpeed, rNum4FramesToExclude } = urlParams;
+ let { animationSpeed } = urlParams;
+ const { rNum4FramesToExclude } = urlParams;
if (
animationSpeed === null ||
@@ -144,9 +152,18 @@ const getPreloadedState4AnimationMode = (
return initialAnimationModeState;
}
+ // use default animation speed if the value from hash params is not in the list of options
+ if (
+ ANIMATION_SPEED_OPTIONS_IN_MILLISECONDS.includes(+animationSpeed) ===
+ false
+ ) {
+ animationSpeed = DEFAULT_ANIMATION_SPEED_IN_MILLISECONDS;
+ }
+
const state: AnimationModeState = {
...initialAnimationModeState,
- isAnimationModeOn: true,
+ // isAnimationModeOn: true,
+ animationStatus: 'loading',
animationSpeed,
rNum2Exclude: rNum4FramesToExclude,
};
diff --git a/src/style/calcite-web/css/calcite-web.min.css b/src/style/calcite-web/css/calcite-web.min.css
deleted file mode 100644
index bad71a8..0000000
--- a/src/style/calcite-web/css/calcite-web.min.css
+++ /dev/null
@@ -1,8 +0,0 @@
-/*!
- * Calcite Web - Calcite Design Components in CSS, JS and HTML
- * @version v1.2.5
- * @license Apache-2.0
- * @copyright 2018 Esri
- * @link https://github.com/Esri/calcite-web
- */
-html{overflow-y:auto;min-height:100%;font-size:100%;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%}body{min-height:100vh;margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}svg:not(:root){overflow:hidden}video,img{max-width:100%;height:auto}.ie main{display:block}.ie select{padding-right:8px}.clearfix:after{content:'';display:table;clear:both}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.inline-block{display:inline-block}.column-1,.column-2,.column-3,.column-4,.column-5,.column-6,.column-7,.column-8,.column-9,.column-10,.column-11,.column-12,.column-13,.column-14,.column-15,.column-16,.column-17,.column-18,.column-19,.column-20,.column-21,.column-22,.column-23,.column-24{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:1440px;max-width:100%;padding-left:0.5rem;padding-right:0.5rem;float:left}html[dir="rtl"] .column-1,html[dir="rtl"] .column-2,html[dir="rtl"] .column-3,html[dir="rtl"] .column-4,html[dir="rtl"] .column-5,html[dir="rtl"] .column-6,html[dir="rtl"] .column-7,html[dir="rtl"] .column-8,html[dir="rtl"] .column-9,html[dir="rtl"] .column-10,html[dir="rtl"] .column-11,html[dir="rtl"] .column-12,html[dir="rtl"] .column-13,html[dir="rtl"] .column-14,html[dir="rtl"] .column-15,html[dir="rtl"] .column-16,html[dir="rtl"] .column-17,html[dir="rtl"] .column-18,html[dir="rtl"] .column-19,html[dir="rtl"] .column-20,html[dir="rtl"] .column-21,html[dir="rtl"] .column-22,html[dir="rtl"] .column-23,html[dir="rtl"] .column-24{float:right}html:not([dir="rtl"]) [class*="column-"] [class*="column-"]:first-of-type{margin-left:-0.5rem}html[dir="rtl"] [class*="column-"] [class*="column-"]:first-of-type{margin-right:-0.5rem}html:not([dir="rtl"]) [class*="column-"] [class*="column-"]:last-of-type{margin-right:-0.5rem}html[dir="rtl"] [class*="column-"] [class*="column-"]:last-of-type{margin-left:-0.5rem}[class*="column-"]:last-of-type:after{content:'';display:table;clear:both}@media screen{.grid-container{width:1440px;max-width:96vw;padding-right:0;padding-left:0;margin-right:auto;margin-left:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.grid-container:after{content:'';display:table;clear:both}}@media screen{html:not([dir="rtl"]) .first-column{margin-left:-0.5rem}html[dir="rtl"] .first-column{margin-right:-0.5rem}html:not([dir="rtl"]) .last-column{margin-right:-0.5rem}html[dir="rtl"] .last-column{margin-left:-0.5rem}}.column-1{width:60px;max-width:4vw}.column-1 > .column-1{margin-left:-0.5rem;margin-right:-0.5rem}.column-2{width:120px;max-width:8vw}.column-2 > .column-2{margin-left:-0.5rem;margin-right:-0.5rem}.column-3{width:180px;max-width:12vw}.column-3 > .column-3{margin-left:-0.5rem;margin-right:-0.5rem}.column-4{width:240px;max-width:16vw}.column-4 > .column-4{margin-left:-0.5rem;margin-right:-0.5rem}.column-5{width:300px;max-width:20vw}.column-5 > .column-5{margin-left:-0.5rem;margin-right:-0.5rem}.column-6{width:360px;max-width:24vw}.column-6 > .column-6{margin-left:-0.5rem;margin-right:-0.5rem}.column-7{width:420px;max-width:28vw}.column-7 > .column-7{margin-left:-0.5rem;margin-right:-0.5rem}.column-8{width:480px;max-width:32vw}.column-8 > .column-8{margin-left:-0.5rem;margin-right:-0.5rem}.column-9{width:540px;max-width:36vw}.column-9 > .column-9{margin-left:-0.5rem;margin-right:-0.5rem}.column-10{width:600px;max-width:40vw}.column-10 > .column-10{margin-left:-0.5rem;margin-right:-0.5rem}.column-11{width:660px;max-width:44vw}.column-11 > .column-11{margin-left:-0.5rem;margin-right:-0.5rem}.column-12{width:720px;max-width:48vw}.column-12 > .column-12{margin-left:-0.5rem;margin-right:-0.5rem}.column-13{width:780px;max-width:52vw}.column-13 > .column-13{margin-left:-0.5rem;margin-right:-0.5rem}.column-14{width:840px;max-width:56vw}.column-14 > .column-14{margin-left:-0.5rem;margin-right:-0.5rem}.column-15{width:900px;max-width:60vw}.column-15 > .column-15{margin-left:-0.5rem;margin-right:-0.5rem}.column-16{width:960px;max-width:64vw}.column-16 > .column-16{margin-left:-0.5rem;margin-right:-0.5rem}.column-17{width:1020px;max-width:68vw}.column-17 > .column-17{margin-left:-0.5rem;margin-right:-0.5rem}.column-18{width:1080px;max-width:72vw}.column-18 > .column-18{margin-left:-0.5rem;margin-right:-0.5rem}.column-19{width:1140px;max-width:76vw}.column-19 > .column-19{margin-left:-0.5rem;margin-right:-0.5rem}.column-20{width:1200px;max-width:80vw}.column-20 > .column-20{margin-left:-0.5rem;margin-right:-0.5rem}.column-21{width:1260px;max-width:84vw}.column-21 > .column-21{margin-left:-0.5rem;margin-right:-0.5rem}.column-22{width:1320px;max-width:88vw}.column-22 > .column-22{margin-left:-0.5rem;margin-right:-0.5rem}.column-23{width:1380px;max-width:92vw}.column-23 > .column-23{margin-left:-0.5rem;margin-right:-0.5rem}.column-24{width:1440px;max-width:96vw}.column-24 > .column-24{margin-left:-0.5rem;margin-right:-0.5rem}@media screen and (max-width:859px){.column-1{width:120px;max-width:8vw}.column-2{width:240px;max-width:16vw}.column-3{width:360px;max-width:24vw}.column-4{width:480px;max-width:32vw}.column-5{width:600px;max-width:40vw}.column-6{width:720px;max-width:48vw}.column-7{width:840px;max-width:56vw}.column-8{width:960px;max-width:64vw}.column-9{width:1080px;max-width:72vw}.column-10{width:1200px;max-width:80vw}.column-11{width:1320px;max-width:88vw}.column-12{width:1440px;max-width:96vw}.column-12{width:1440px;max-width:96vw}.column-13{width:1440px;max-width:96vw}.column-14{width:1440px;max-width:96vw}.column-15{width:1440px;max-width:96vw}.column-16{width:1440px;max-width:96vw}.column-17{width:1440px;max-width:96vw}.column-18{width:1440px;max-width:96vw}.column-19{width:1440px;max-width:96vw}.column-20{width:1440px;max-width:96vw}.column-21{width:1440px;max-width:96vw}.column-22{width:1440px;max-width:96vw}.column-23{width:1440px;max-width:96vw}.column-24{width:1440px;max-width:96vw}.tablet-column-1{width:120px;max-width:8vw}.tablet-column-2{width:240px;max-width:16vw}.tablet-column-3{width:360px;max-width:24vw}.tablet-column-4{width:480px;max-width:32vw}.tablet-column-5{width:600px;max-width:40vw}.tablet-column-6{width:720px;max-width:48vw}.tablet-column-7{width:840px;max-width:56vw}.tablet-column-8{width:960px;max-width:64vw}.tablet-column-9{width:1080px;max-width:72vw}.tablet-column-10{width:1200px;max-width:80vw}.tablet-column-11{width:1320px;max-width:88vw}.tablet-column-12{width:1440px;max-width:96vw}html:not([dir="rtl"]) .tablet-first-column{margin-left:-0.5rem}html[dir="rtl"] .tablet-first-column{margin-right:-0.5rem}html:not([dir="rtl"]) .tablet-last-column{margin-right:-0.5rem}html[dir="rtl"] .tablet-last-column{margin-left:-0.5rem}}@media screen and (max-width:479px){.column-1{width:240px;max-width:16vw}.column-2{width:480px;max-width:32vw}.column-3{width:720px;max-width:48vw}.column-4{width:960px;max-width:64vw}.column-5{width:1200px;max-width:80vw}.column-6{width:1440px;max-width:96vw}.column-6{width:1440px;max-width:96vw}.column-7{width:1440px;max-width:96vw}.column-8{width:1440px;max-width:96vw}.column-9{width:1440px;max-width:96vw}.column-10{width:1440px;max-width:96vw}.column-11{width:1440px;max-width:96vw}.column-12{width:1440px;max-width:96vw}.column-13{width:1440px;max-width:96vw}.column-14{width:1440px;max-width:96vw}.column-15{width:1440px;max-width:96vw}.column-16{width:1440px;max-width:96vw}.column-17{width:1440px;max-width:96vw}.column-18{width:1440px;max-width:96vw}.column-19{width:1440px;max-width:96vw}.column-20{width:1440px;max-width:96vw}.column-21{width:1440px;max-width:96vw}.column-22{width:1440px;max-width:96vw}.column-23{width:1440px;max-width:96vw}.column-24{width:1440px;max-width:96vw}.tablet-column-1{width:240px;max-width:16vw}.tablet-column-2{width:480px;max-width:32vw}.tablet-column-3{width:720px;max-width:48vw}.tablet-column-4{width:960px;max-width:64vw}.tablet-column-5{width:1200px;max-width:80vw}.tablet-column-6{width:1440px;max-width:96vw}.tablet-column-6{width:1440px;max-width:96vw}.tablet-column-7{width:1440px;max-width:96vw}.tablet-column-8{width:1440px;max-width:96vw}.tablet-column-9{width:1440px;max-width:96vw}.tablet-column-10{width:1440px;max-width:96vw}.tablet-column-11{width:1440px;max-width:96vw}.tablet-column-12{width:1440px;max-width:96vw}.tablet-column-13{width:1440px;max-width:96vw}.tablet-column-14{width:1440px;max-width:96vw}.tablet-column-15{width:1440px;max-width:96vw}.tablet-column-16{width:1440px;max-width:96vw}.tablet-column-17{width:1440px;max-width:96vw}.tablet-column-18{width:1440px;max-width:96vw}.tablet-column-19{width:1440px;max-width:96vw}.tablet-column-20{width:1440px;max-width:96vw}.tablet-column-21{width:1440px;max-width:96vw}.tablet-column-22{width:1440px;max-width:96vw}.tablet-column-23{width:1440px;max-width:96vw}.tablet-column-24{width:1440px;max-width:96vw}.phone-column-1{width:240px;max-width:16vw}.phone-column-2{width:480px;max-width:32vw}.phone-column-3{width:720px;max-width:48vw}.phone-column-4{width:960px;max-width:64vw}.phone-column-5{width:1200px;max-width:80vw}.phone-column-6{width:1440px;max-width:96vw}.phone-first-column{margin-left:-0.5rem}html[dir="rtl"] .phone-first-column{margin-left:0;margin-right:-0.5rem}.phone-last-column{margin-right:-0.5rem}html[dir="rtl"] .phone-last-column{margin-right:0;margin-left:-0.5rem}}.center-column{margin-left:auto!important;margin-right:auto!important;float:none}@media screen and (min-width:860px) and (max-width:1500px){html:not([dir="rtl"]) .pre-0{margin-left:0vw}html:not([dir="rtl"]) [class*="column-"] .pre-0[class*="column-"]:first-of-type{margin-left:0vw}html[dir="rtl"] [class*="column-"] .pre-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] .pre-0{margin-right:0vw}html:not([dir="rtl"]) .first-column.pre-0{margin-left:calc(0vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-0[class*="column-"]:first-of-type{margin-left:calc(0vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-0[class*="column-"]:first-of-type{margin-right:calc(0vw - 0.5rem)}html[dir="rtl"] .first-column.pre-0{margin-right:calc(0vw - 0.5rem)}html:not([dir="rtl"]) .post-0{margin-right:0vw}html:not([dir="rtl"]) [class*="column-"] .post-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] [class*="column-"] .post-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] .post-0{margin-left:0vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-0:first-of-type{margin-left:calc(0vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-0:first-of-type[class*="column-"]:first-of-type{margin-left:calc(0vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-0:first-of-type[class*="column-"]:first-of-type{margin-right:calc(0vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-0:first-of-type{margin-right:calc(0vw - 0.5rem)}html:not([dir="rtl"]) .pre-1{margin-left:4vw}html:not([dir="rtl"]) [class*="column-"] .pre-1[class*="column-"]:first-of-type{margin-left:4vw}html[dir="rtl"] [class*="column-"] .pre-1[class*="column-"]:first-of-type{margin-right:4vw}html[dir="rtl"] .pre-1{margin-right:4vw}html:not([dir="rtl"]) .first-column.pre-1{margin-left:calc(4vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-1[class*="column-"]:first-of-type{margin-left:calc(4vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-1[class*="column-"]:first-of-type{margin-right:calc(4vw - 0.5rem)}html[dir="rtl"] .first-column.pre-1{margin-right:calc(4vw - 0.5rem)}html:not([dir="rtl"]) .post-1{margin-right:4vw}html:not([dir="rtl"]) [class*="column-"] .post-1[class*="column-"]:first-of-type{margin-right:4vw}html[dir="rtl"] [class*="column-"] .post-1[class*="column-"]:first-of-type{margin-right:4vw}html[dir="rtl"] .post-1{margin-left:4vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-1:first-of-type{margin-left:calc(4vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-1:first-of-type[class*="column-"]:first-of-type{margin-left:calc(4vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-1:first-of-type[class*="column-"]:first-of-type{margin-right:calc(4vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-1:first-of-type{margin-right:calc(4vw - 0.5rem)}html:not([dir="rtl"]) .pre-2{margin-left:8vw}html:not([dir="rtl"]) [class*="column-"] .pre-2[class*="column-"]:first-of-type{margin-left:8vw}html[dir="rtl"] [class*="column-"] .pre-2[class*="column-"]:first-of-type{margin-right:8vw}html[dir="rtl"] .pre-2{margin-right:8vw}html:not([dir="rtl"]) .first-column.pre-2{margin-left:calc(8vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-2[class*="column-"]:first-of-type{margin-left:calc(8vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-2[class*="column-"]:first-of-type{margin-right:calc(8vw - 0.5rem)}html[dir="rtl"] .first-column.pre-2{margin-right:calc(8vw - 0.5rem)}html:not([dir="rtl"]) .post-2{margin-right:8vw}html:not([dir="rtl"]) [class*="column-"] .post-2[class*="column-"]:first-of-type{margin-right:8vw}html[dir="rtl"] [class*="column-"] .post-2[class*="column-"]:first-of-type{margin-right:8vw}html[dir="rtl"] .post-2{margin-left:8vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-2:first-of-type{margin-left:calc(8vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-2:first-of-type[class*="column-"]:first-of-type{margin-left:calc(8vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-2:first-of-type[class*="column-"]:first-of-type{margin-right:calc(8vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-2:first-of-type{margin-right:calc(8vw - 0.5rem)}html:not([dir="rtl"]) .pre-3{margin-left:12vw}html:not([dir="rtl"]) [class*="column-"] .pre-3[class*="column-"]:first-of-type{margin-left:12vw}html[dir="rtl"] [class*="column-"] .pre-3[class*="column-"]:first-of-type{margin-right:12vw}html[dir="rtl"] .pre-3{margin-right:12vw}html:not([dir="rtl"]) .first-column.pre-3{margin-left:calc(12vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-3[class*="column-"]:first-of-type{margin-left:calc(12vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-3[class*="column-"]:first-of-type{margin-right:calc(12vw - 0.5rem)}html[dir="rtl"] .first-column.pre-3{margin-right:calc(12vw - 0.5rem)}html:not([dir="rtl"]) .post-3{margin-right:12vw}html:not([dir="rtl"]) [class*="column-"] .post-3[class*="column-"]:first-of-type{margin-right:12vw}html[dir="rtl"] [class*="column-"] .post-3[class*="column-"]:first-of-type{margin-right:12vw}html[dir="rtl"] .post-3{margin-left:12vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-3:first-of-type{margin-left:calc(12vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-3:first-of-type[class*="column-"]:first-of-type{margin-left:calc(12vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-3:first-of-type[class*="column-"]:first-of-type{margin-right:calc(12vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-3:first-of-type{margin-right:calc(12vw - 0.5rem)}html:not([dir="rtl"]) .pre-4{margin-left:16vw}html:not([dir="rtl"]) [class*="column-"] .pre-4[class*="column-"]:first-of-type{margin-left:16vw}html[dir="rtl"] [class*="column-"] .pre-4[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] .pre-4{margin-right:16vw}html:not([dir="rtl"]) .first-column.pre-4{margin-left:calc(16vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-4[class*="column-"]:first-of-type{margin-left:calc(16vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-4[class*="column-"]:first-of-type{margin-right:calc(16vw - 0.5rem)}html[dir="rtl"] .first-column.pre-4{margin-right:calc(16vw - 0.5rem)}html:not([dir="rtl"]) .post-4{margin-right:16vw}html:not([dir="rtl"]) [class*="column-"] .post-4[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] [class*="column-"] .post-4[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] .post-4{margin-left:16vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-4:first-of-type{margin-left:calc(16vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-4:first-of-type[class*="column-"]:first-of-type{margin-left:calc(16vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-4:first-of-type[class*="column-"]:first-of-type{margin-right:calc(16vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-4:first-of-type{margin-right:calc(16vw - 0.5rem)}html:not([dir="rtl"]) .pre-5{margin-left:20vw}html:not([dir="rtl"]) [class*="column-"] .pre-5[class*="column-"]:first-of-type{margin-left:20vw}html[dir="rtl"] [class*="column-"] .pre-5[class*="column-"]:first-of-type{margin-right:20vw}html[dir="rtl"] .pre-5{margin-right:20vw}html:not([dir="rtl"]) .first-column.pre-5{margin-left:calc(20vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-5[class*="column-"]:first-of-type{margin-left:calc(20vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-5[class*="column-"]:first-of-type{margin-right:calc(20vw - 0.5rem)}html[dir="rtl"] .first-column.pre-5{margin-right:calc(20vw - 0.5rem)}html:not([dir="rtl"]) .post-5{margin-right:20vw}html:not([dir="rtl"]) [class*="column-"] .post-5[class*="column-"]:first-of-type{margin-right:20vw}html[dir="rtl"] [class*="column-"] .post-5[class*="column-"]:first-of-type{margin-right:20vw}html[dir="rtl"] .post-5{margin-left:20vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-5:first-of-type{margin-left:calc(20vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-5:first-of-type[class*="column-"]:first-of-type{margin-left:calc(20vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-5:first-of-type[class*="column-"]:first-of-type{margin-right:calc(20vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-5:first-of-type{margin-right:calc(20vw - 0.5rem)}html:not([dir="rtl"]) .pre-6{margin-left:24vw}html:not([dir="rtl"]) [class*="column-"] .pre-6[class*="column-"]:first-of-type{margin-left:24vw}html[dir="rtl"] [class*="column-"] .pre-6[class*="column-"]:first-of-type{margin-right:24vw}html[dir="rtl"] .pre-6{margin-right:24vw}html:not([dir="rtl"]) .first-column.pre-6{margin-left:calc(24vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-6[class*="column-"]:first-of-type{margin-left:calc(24vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-6[class*="column-"]:first-of-type{margin-right:calc(24vw - 0.5rem)}html[dir="rtl"] .first-column.pre-6{margin-right:calc(24vw - 0.5rem)}html:not([dir="rtl"]) .post-6{margin-right:24vw}html:not([dir="rtl"]) [class*="column-"] .post-6[class*="column-"]:first-of-type{margin-right:24vw}html[dir="rtl"] [class*="column-"] .post-6[class*="column-"]:first-of-type{margin-right:24vw}html[dir="rtl"] .post-6{margin-left:24vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-6:first-of-type{margin-left:calc(24vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-6:first-of-type[class*="column-"]:first-of-type{margin-left:calc(24vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-6:first-of-type[class*="column-"]:first-of-type{margin-right:calc(24vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-6:first-of-type{margin-right:calc(24vw - 0.5rem)}html:not([dir="rtl"]) .pre-7{margin-left:28vw}html:not([dir="rtl"]) [class*="column-"] .pre-7[class*="column-"]:first-of-type{margin-left:28vw}html[dir="rtl"] [class*="column-"] .pre-7[class*="column-"]:first-of-type{margin-right:28vw}html[dir="rtl"] .pre-7{margin-right:28vw}html:not([dir="rtl"]) .first-column.pre-7{margin-left:calc(28vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-7[class*="column-"]:first-of-type{margin-left:calc(28vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-7[class*="column-"]:first-of-type{margin-right:calc(28vw - 0.5rem)}html[dir="rtl"] .first-column.pre-7{margin-right:calc(28vw - 0.5rem)}html:not([dir="rtl"]) .post-7{margin-right:28vw}html:not([dir="rtl"]) [class*="column-"] .post-7[class*="column-"]:first-of-type{margin-right:28vw}html[dir="rtl"] [class*="column-"] .post-7[class*="column-"]:first-of-type{margin-right:28vw}html[dir="rtl"] .post-7{margin-left:28vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-7:first-of-type{margin-left:calc(28vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-7:first-of-type[class*="column-"]:first-of-type{margin-left:calc(28vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-7:first-of-type[class*="column-"]:first-of-type{margin-right:calc(28vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-7:first-of-type{margin-right:calc(28vw - 0.5rem)}html:not([dir="rtl"]) .pre-8{margin-left:32vw}html:not([dir="rtl"]) [class*="column-"] .pre-8[class*="column-"]:first-of-type{margin-left:32vw}html[dir="rtl"] [class*="column-"] .pre-8[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] .pre-8{margin-right:32vw}html:not([dir="rtl"]) .first-column.pre-8{margin-left:calc(32vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-8[class*="column-"]:first-of-type{margin-left:calc(32vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-8[class*="column-"]:first-of-type{margin-right:calc(32vw - 0.5rem)}html[dir="rtl"] .first-column.pre-8{margin-right:calc(32vw - 0.5rem)}html:not([dir="rtl"]) .post-8{margin-right:32vw}html:not([dir="rtl"]) [class*="column-"] .post-8[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] [class*="column-"] .post-8[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] .post-8{margin-left:32vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-8:first-of-type{margin-left:calc(32vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-8:first-of-type[class*="column-"]:first-of-type{margin-left:calc(32vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-8:first-of-type[class*="column-"]:first-of-type{margin-right:calc(32vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-8:first-of-type{margin-right:calc(32vw - 0.5rem)}html:not([dir="rtl"]) .pre-9{margin-left:36vw}html:not([dir="rtl"]) [class*="column-"] .pre-9[class*="column-"]:first-of-type{margin-left:36vw}html[dir="rtl"] [class*="column-"] .pre-9[class*="column-"]:first-of-type{margin-right:36vw}html[dir="rtl"] .pre-9{margin-right:36vw}html:not([dir="rtl"]) .first-column.pre-9{margin-left:calc(36vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-9[class*="column-"]:first-of-type{margin-left:calc(36vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-9[class*="column-"]:first-of-type{margin-right:calc(36vw - 0.5rem)}html[dir="rtl"] .first-column.pre-9{margin-right:calc(36vw - 0.5rem)}html:not([dir="rtl"]) .post-9{margin-right:36vw}html:not([dir="rtl"]) [class*="column-"] .post-9[class*="column-"]:first-of-type{margin-right:36vw}html[dir="rtl"] [class*="column-"] .post-9[class*="column-"]:first-of-type{margin-right:36vw}html[dir="rtl"] .post-9{margin-left:36vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-9:first-of-type{margin-left:calc(36vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-9:first-of-type[class*="column-"]:first-of-type{margin-left:calc(36vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-9:first-of-type[class*="column-"]:first-of-type{margin-right:calc(36vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-9:first-of-type{margin-right:calc(36vw - 0.5rem)}html:not([dir="rtl"]) .pre-10{margin-left:40vw}html:not([dir="rtl"]) [class*="column-"] .pre-10[class*="column-"]:first-of-type{margin-left:40vw}html[dir="rtl"] [class*="column-"] .pre-10[class*="column-"]:first-of-type{margin-right:40vw}html[dir="rtl"] .pre-10{margin-right:40vw}html:not([dir="rtl"]) .first-column.pre-10{margin-left:calc(40vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-10[class*="column-"]:first-of-type{margin-left:calc(40vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-10[class*="column-"]:first-of-type{margin-right:calc(40vw - 0.5rem)}html[dir="rtl"] .first-column.pre-10{margin-right:calc(40vw - 0.5rem)}html:not([dir="rtl"]) .post-10{margin-right:40vw}html:not([dir="rtl"]) [class*="column-"] .post-10[class*="column-"]:first-of-type{margin-right:40vw}html[dir="rtl"] [class*="column-"] .post-10[class*="column-"]:first-of-type{margin-right:40vw}html[dir="rtl"] .post-10{margin-left:40vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-10:first-of-type{margin-left:calc(40vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-10:first-of-type[class*="column-"]:first-of-type{margin-left:calc(40vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-10:first-of-type[class*="column-"]:first-of-type{margin-right:calc(40vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-10:first-of-type{margin-right:calc(40vw - 0.5rem)}html:not([dir="rtl"]) .pre-11{margin-left:44vw}html:not([dir="rtl"]) [class*="column-"] .pre-11[class*="column-"]:first-of-type{margin-left:44vw}html[dir="rtl"] [class*="column-"] .pre-11[class*="column-"]:first-of-type{margin-right:44vw}html[dir="rtl"] .pre-11{margin-right:44vw}html:not([dir="rtl"]) .first-column.pre-11{margin-left:calc(44vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-11[class*="column-"]:first-of-type{margin-left:calc(44vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-11[class*="column-"]:first-of-type{margin-right:calc(44vw - 0.5rem)}html[dir="rtl"] .first-column.pre-11{margin-right:calc(44vw - 0.5rem)}html:not([dir="rtl"]) .post-11{margin-right:44vw}html:not([dir="rtl"]) [class*="column-"] .post-11[class*="column-"]:first-of-type{margin-right:44vw}html[dir="rtl"] [class*="column-"] .post-11[class*="column-"]:first-of-type{margin-right:44vw}html[dir="rtl"] .post-11{margin-left:44vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-11:first-of-type{margin-left:calc(44vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-11:first-of-type[class*="column-"]:first-of-type{margin-left:calc(44vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-11:first-of-type[class*="column-"]:first-of-type{margin-right:calc(44vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-11:first-of-type{margin-right:calc(44vw - 0.5rem)}html:not([dir="rtl"]) .pre-12{margin-left:48vw}html:not([dir="rtl"]) [class*="column-"] .pre-12[class*="column-"]:first-of-type{margin-left:48vw}html[dir="rtl"] [class*="column-"] .pre-12[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] .pre-12{margin-right:48vw}html:not([dir="rtl"]) .first-column.pre-12{margin-left:calc(48vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-12[class*="column-"]:first-of-type{margin-left:calc(48vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-12[class*="column-"]:first-of-type{margin-right:calc(48vw - 0.5rem)}html[dir="rtl"] .first-column.pre-12{margin-right:calc(48vw - 0.5rem)}html:not([dir="rtl"]) .post-12{margin-right:48vw}html:not([dir="rtl"]) [class*="column-"] .post-12[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] [class*="column-"] .post-12[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] .post-12{margin-left:48vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-12:first-of-type{margin-left:calc(48vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-12:first-of-type[class*="column-"]:first-of-type{margin-left:calc(48vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-12:first-of-type[class*="column-"]:first-of-type{margin-right:calc(48vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-12:first-of-type{margin-right:calc(48vw - 0.5rem)}html:not([dir="rtl"]) .pre-13{margin-left:52vw}html:not([dir="rtl"]) [class*="column-"] .pre-13[class*="column-"]:first-of-type{margin-left:52vw}html[dir="rtl"] [class*="column-"] .pre-13[class*="column-"]:first-of-type{margin-right:52vw}html[dir="rtl"] .pre-13{margin-right:52vw}html:not([dir="rtl"]) .first-column.pre-13{margin-left:calc(52vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-13[class*="column-"]:first-of-type{margin-left:calc(52vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-13[class*="column-"]:first-of-type{margin-right:calc(52vw - 0.5rem)}html[dir="rtl"] .first-column.pre-13{margin-right:calc(52vw - 0.5rem)}html:not([dir="rtl"]) .post-13{margin-right:52vw}html:not([dir="rtl"]) [class*="column-"] .post-13[class*="column-"]:first-of-type{margin-right:52vw}html[dir="rtl"] [class*="column-"] .post-13[class*="column-"]:first-of-type{margin-right:52vw}html[dir="rtl"] .post-13{margin-left:52vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-13:first-of-type{margin-left:calc(52vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-13:first-of-type[class*="column-"]:first-of-type{margin-left:calc(52vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-13:first-of-type[class*="column-"]:first-of-type{margin-right:calc(52vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-13:first-of-type{margin-right:calc(52vw - 0.5rem)}html:not([dir="rtl"]) .pre-14{margin-left:56vw}html:not([dir="rtl"]) [class*="column-"] .pre-14[class*="column-"]:first-of-type{margin-left:56vw}html[dir="rtl"] [class*="column-"] .pre-14[class*="column-"]:first-of-type{margin-right:56vw}html[dir="rtl"] .pre-14{margin-right:56vw}html:not([dir="rtl"]) .first-column.pre-14{margin-left:calc(56vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-14[class*="column-"]:first-of-type{margin-left:calc(56vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-14[class*="column-"]:first-of-type{margin-right:calc(56vw - 0.5rem)}html[dir="rtl"] .first-column.pre-14{margin-right:calc(56vw - 0.5rem)}html:not([dir="rtl"]) .post-14{margin-right:56vw}html:not([dir="rtl"]) [class*="column-"] .post-14[class*="column-"]:first-of-type{margin-right:56vw}html[dir="rtl"] [class*="column-"] .post-14[class*="column-"]:first-of-type{margin-right:56vw}html[dir="rtl"] .post-14{margin-left:56vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-14:first-of-type{margin-left:calc(56vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-14:first-of-type[class*="column-"]:first-of-type{margin-left:calc(56vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-14:first-of-type[class*="column-"]:first-of-type{margin-right:calc(56vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-14:first-of-type{margin-right:calc(56vw - 0.5rem)}html:not([dir="rtl"]) .pre-15{margin-left:60vw}html:not([dir="rtl"]) [class*="column-"] .pre-15[class*="column-"]:first-of-type{margin-left:60vw}html[dir="rtl"] [class*="column-"] .pre-15[class*="column-"]:first-of-type{margin-right:60vw}html[dir="rtl"] .pre-15{margin-right:60vw}html:not([dir="rtl"]) .first-column.pre-15{margin-left:calc(60vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-15[class*="column-"]:first-of-type{margin-left:calc(60vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-15[class*="column-"]:first-of-type{margin-right:calc(60vw - 0.5rem)}html[dir="rtl"] .first-column.pre-15{margin-right:calc(60vw - 0.5rem)}html:not([dir="rtl"]) .post-15{margin-right:60vw}html:not([dir="rtl"]) [class*="column-"] .post-15[class*="column-"]:first-of-type{margin-right:60vw}html[dir="rtl"] [class*="column-"] .post-15[class*="column-"]:first-of-type{margin-right:60vw}html[dir="rtl"] .post-15{margin-left:60vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-15:first-of-type{margin-left:calc(60vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-15:first-of-type[class*="column-"]:first-of-type{margin-left:calc(60vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-15:first-of-type[class*="column-"]:first-of-type{margin-right:calc(60vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-15:first-of-type{margin-right:calc(60vw - 0.5rem)}html:not([dir="rtl"]) .pre-16{margin-left:64vw}html:not([dir="rtl"]) [class*="column-"] .pre-16[class*="column-"]:first-of-type{margin-left:64vw}html[dir="rtl"] [class*="column-"] .pre-16[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] .pre-16{margin-right:64vw}html:not([dir="rtl"]) .first-column.pre-16{margin-left:calc(64vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-16[class*="column-"]:first-of-type{margin-left:calc(64vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-16[class*="column-"]:first-of-type{margin-right:calc(64vw - 0.5rem)}html[dir="rtl"] .first-column.pre-16{margin-right:calc(64vw - 0.5rem)}html:not([dir="rtl"]) .post-16{margin-right:64vw}html:not([dir="rtl"]) [class*="column-"] .post-16[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] [class*="column-"] .post-16[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] .post-16{margin-left:64vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-16:first-of-type{margin-left:calc(64vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-16:first-of-type[class*="column-"]:first-of-type{margin-left:calc(64vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-16:first-of-type[class*="column-"]:first-of-type{margin-right:calc(64vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-16:first-of-type{margin-right:calc(64vw - 0.5rem)}html:not([dir="rtl"]) .pre-17{margin-left:68vw}html:not([dir="rtl"]) [class*="column-"] .pre-17[class*="column-"]:first-of-type{margin-left:68vw}html[dir="rtl"] [class*="column-"] .pre-17[class*="column-"]:first-of-type{margin-right:68vw}html[dir="rtl"] .pre-17{margin-right:68vw}html:not([dir="rtl"]) .first-column.pre-17{margin-left:calc(68vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-17[class*="column-"]:first-of-type{margin-left:calc(68vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-17[class*="column-"]:first-of-type{margin-right:calc(68vw - 0.5rem)}html[dir="rtl"] .first-column.pre-17{margin-right:calc(68vw - 0.5rem)}html:not([dir="rtl"]) .post-17{margin-right:68vw}html:not([dir="rtl"]) [class*="column-"] .post-17[class*="column-"]:first-of-type{margin-right:68vw}html[dir="rtl"] [class*="column-"] .post-17[class*="column-"]:first-of-type{margin-right:68vw}html[dir="rtl"] .post-17{margin-left:68vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-17:first-of-type{margin-left:calc(68vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-17:first-of-type[class*="column-"]:first-of-type{margin-left:calc(68vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-17:first-of-type[class*="column-"]:first-of-type{margin-right:calc(68vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-17:first-of-type{margin-right:calc(68vw - 0.5rem)}html:not([dir="rtl"]) .pre-18{margin-left:72vw}html:not([dir="rtl"]) [class*="column-"] .pre-18[class*="column-"]:first-of-type{margin-left:72vw}html[dir="rtl"] [class*="column-"] .pre-18[class*="column-"]:first-of-type{margin-right:72vw}html[dir="rtl"] .pre-18{margin-right:72vw}html:not([dir="rtl"]) .first-column.pre-18{margin-left:calc(72vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-18[class*="column-"]:first-of-type{margin-left:calc(72vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-18[class*="column-"]:first-of-type{margin-right:calc(72vw - 0.5rem)}html[dir="rtl"] .first-column.pre-18{margin-right:calc(72vw - 0.5rem)}html:not([dir="rtl"]) .post-18{margin-right:72vw}html:not([dir="rtl"]) [class*="column-"] .post-18[class*="column-"]:first-of-type{margin-right:72vw}html[dir="rtl"] [class*="column-"] .post-18[class*="column-"]:first-of-type{margin-right:72vw}html[dir="rtl"] .post-18{margin-left:72vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-18:first-of-type{margin-left:calc(72vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-18:first-of-type[class*="column-"]:first-of-type{margin-left:calc(72vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-18:first-of-type[class*="column-"]:first-of-type{margin-right:calc(72vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-18:first-of-type{margin-right:calc(72vw - 0.5rem)}html:not([dir="rtl"]) .pre-19{margin-left:76vw}html:not([dir="rtl"]) [class*="column-"] .pre-19[class*="column-"]:first-of-type{margin-left:76vw}html[dir="rtl"] [class*="column-"] .pre-19[class*="column-"]:first-of-type{margin-right:76vw}html[dir="rtl"] .pre-19{margin-right:76vw}html:not([dir="rtl"]) .first-column.pre-19{margin-left:calc(76vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-19[class*="column-"]:first-of-type{margin-left:calc(76vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-19[class*="column-"]:first-of-type{margin-right:calc(76vw - 0.5rem)}html[dir="rtl"] .first-column.pre-19{margin-right:calc(76vw - 0.5rem)}html:not([dir="rtl"]) .post-19{margin-right:76vw}html:not([dir="rtl"]) [class*="column-"] .post-19[class*="column-"]:first-of-type{margin-right:76vw}html[dir="rtl"] [class*="column-"] .post-19[class*="column-"]:first-of-type{margin-right:76vw}html[dir="rtl"] .post-19{margin-left:76vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-19:first-of-type{margin-left:calc(76vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-19:first-of-type[class*="column-"]:first-of-type{margin-left:calc(76vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-19:first-of-type[class*="column-"]:first-of-type{margin-right:calc(76vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-19:first-of-type{margin-right:calc(76vw - 0.5rem)}html:not([dir="rtl"]) .pre-20{margin-left:80vw}html:not([dir="rtl"]) [class*="column-"] .pre-20[class*="column-"]:first-of-type{margin-left:80vw}html[dir="rtl"] [class*="column-"] .pre-20[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] .pre-20{margin-right:80vw}html:not([dir="rtl"]) .first-column.pre-20{margin-left:calc(80vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-20[class*="column-"]:first-of-type{margin-left:calc(80vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-20[class*="column-"]:first-of-type{margin-right:calc(80vw - 0.5rem)}html[dir="rtl"] .first-column.pre-20{margin-right:calc(80vw - 0.5rem)}html:not([dir="rtl"]) .post-20{margin-right:80vw}html:not([dir="rtl"]) [class*="column-"] .post-20[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] [class*="column-"] .post-20[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] .post-20{margin-left:80vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-20:first-of-type{margin-left:calc(80vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-20:first-of-type[class*="column-"]:first-of-type{margin-left:calc(80vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-20:first-of-type[class*="column-"]:first-of-type{margin-right:calc(80vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-20:first-of-type{margin-right:calc(80vw - 0.5rem)}html:not([dir="rtl"]) .pre-21{margin-left:84vw}html:not([dir="rtl"]) [class*="column-"] .pre-21[class*="column-"]:first-of-type{margin-left:84vw}html[dir="rtl"] [class*="column-"] .pre-21[class*="column-"]:first-of-type{margin-right:84vw}html[dir="rtl"] .pre-21{margin-right:84vw}html:not([dir="rtl"]) .first-column.pre-21{margin-left:calc(84vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-21[class*="column-"]:first-of-type{margin-left:calc(84vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-21[class*="column-"]:first-of-type{margin-right:calc(84vw - 0.5rem)}html[dir="rtl"] .first-column.pre-21{margin-right:calc(84vw - 0.5rem)}html:not([dir="rtl"]) .post-21{margin-right:84vw}html:not([dir="rtl"]) [class*="column-"] .post-21[class*="column-"]:first-of-type{margin-right:84vw}html[dir="rtl"] [class*="column-"] .post-21[class*="column-"]:first-of-type{margin-right:84vw}html[dir="rtl"] .post-21{margin-left:84vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-21:first-of-type{margin-left:calc(84vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-21:first-of-type[class*="column-"]:first-of-type{margin-left:calc(84vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-21:first-of-type[class*="column-"]:first-of-type{margin-right:calc(84vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-21:first-of-type{margin-right:calc(84vw - 0.5rem)}html:not([dir="rtl"]) .pre-22{margin-left:88vw}html:not([dir="rtl"]) [class*="column-"] .pre-22[class*="column-"]:first-of-type{margin-left:88vw}html[dir="rtl"] [class*="column-"] .pre-22[class*="column-"]:first-of-type{margin-right:88vw}html[dir="rtl"] .pre-22{margin-right:88vw}html:not([dir="rtl"]) .first-column.pre-22{margin-left:calc(88vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-22[class*="column-"]:first-of-type{margin-left:calc(88vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-22[class*="column-"]:first-of-type{margin-right:calc(88vw - 0.5rem)}html[dir="rtl"] .first-column.pre-22{margin-right:calc(88vw - 0.5rem)}html:not([dir="rtl"]) .post-22{margin-right:88vw}html:not([dir="rtl"]) [class*="column-"] .post-22[class*="column-"]:first-of-type{margin-right:88vw}html[dir="rtl"] [class*="column-"] .post-22[class*="column-"]:first-of-type{margin-right:88vw}html[dir="rtl"] .post-22{margin-left:88vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-22:first-of-type{margin-left:calc(88vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-22:first-of-type[class*="column-"]:first-of-type{margin-left:calc(88vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-22:first-of-type[class*="column-"]:first-of-type{margin-right:calc(88vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-22:first-of-type{margin-right:calc(88vw - 0.5rem)}html:not([dir="rtl"]) .pre-23{margin-left:92vw}html:not([dir="rtl"]) [class*="column-"] .pre-23[class*="column-"]:first-of-type{margin-left:92vw}html[dir="rtl"] [class*="column-"] .pre-23[class*="column-"]:first-of-type{margin-right:92vw}html[dir="rtl"] .pre-23{margin-right:92vw}html:not([dir="rtl"]) .first-column.pre-23{margin-left:calc(92vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-23[class*="column-"]:first-of-type{margin-left:calc(92vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-23[class*="column-"]:first-of-type{margin-right:calc(92vw - 0.5rem)}html[dir="rtl"] .first-column.pre-23{margin-right:calc(92vw - 0.5rem)}html:not([dir="rtl"]) .post-23{margin-right:92vw}html:not([dir="rtl"]) [class*="column-"] .post-23[class*="column-"]:first-of-type{margin-right:92vw}html[dir="rtl"] [class*="column-"] .post-23[class*="column-"]:first-of-type{margin-right:92vw}html[dir="rtl"] .post-23{margin-left:92vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-23:first-of-type{margin-left:calc(92vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-23:first-of-type[class*="column-"]:first-of-type{margin-left:calc(92vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-23:first-of-type[class*="column-"]:first-of-type{margin-right:calc(92vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-23:first-of-type{margin-right:calc(92vw - 0.5rem)}html:not([dir="rtl"]) .pre-24{margin-left:96vw}html:not([dir="rtl"]) [class*="column-"] .pre-24[class*="column-"]:first-of-type{margin-left:96vw}html[dir="rtl"] [class*="column-"] .pre-24[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] .pre-24{margin-right:96vw}html:not([dir="rtl"]) .first-column.pre-24{margin-left:calc(96vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .first-column.pre-24[class*="column-"]:first-of-type{margin-left:calc(96vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .first-column.pre-24[class*="column-"]:first-of-type{margin-right:calc(96vw - 0.5rem)}html[dir="rtl"] .first-column.pre-24{margin-right:calc(96vw - 0.5rem)}html:not([dir="rtl"]) .post-24{margin-right:96vw}html:not([dir="rtl"]) [class*="column-"] .post-24[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] [class*="column-"] .post-24[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] .post-24{margin-left:96vw}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-24:first-of-type{margin-left:calc(96vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"] [class*="column-"].pre-24:first-of-type[class*="column-"]:first-of-type{margin-left:calc(96vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"] [class*="column-"].pre-24:first-of-type[class*="column-"]:first-of-type{margin-right:calc(96vw - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-24:first-of-type{margin-right:calc(96vw - 0.5rem)}}@media screen and (max-width:859px){html:not([dir="rtl"]) .tablet-pre-0{margin-left:0vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-0[class*="column-"]:first-of-type{margin-left:0vw}html[dir="rtl"] [class*="column-"] .tablet-pre-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] .tablet-pre-0{margin-right:0vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-0{margin-left:calc(0vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-0[class*="column-"]:first-of-type{margin-left:calc(0vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-0[class*="column-"]:first-of-type{margin-right:calc(0vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-0{margin-right:calc(0vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-0{margin-right:0vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] [class*="column-"] .tablet-post-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] .tablet-post-0{margin-left:0vw}html:not([dir="rtl"]) .tablet-pre-1{margin-left:8vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-1[class*="column-"]:first-of-type{margin-left:8vw}html[dir="rtl"] [class*="column-"] .tablet-pre-1[class*="column-"]:first-of-type{margin-right:8vw}html[dir="rtl"] .tablet-pre-1{margin-right:8vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-1{margin-left:calc(8vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-1[class*="column-"]:first-of-type{margin-left:calc(8vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-1[class*="column-"]:first-of-type{margin-right:calc(8vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-1{margin-right:calc(8vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-1{margin-right:8vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-1[class*="column-"]:first-of-type{margin-right:8vw}html[dir="rtl"] [class*="column-"] .tablet-post-1[class*="column-"]:first-of-type{margin-right:8vw}html[dir="rtl"] .tablet-post-1{margin-left:8vw}html:not([dir="rtl"]) .tablet-pre-2{margin-left:16vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-2[class*="column-"]:first-of-type{margin-left:16vw}html[dir="rtl"] [class*="column-"] .tablet-pre-2[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] .tablet-pre-2{margin-right:16vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-2{margin-left:calc(16vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-2[class*="column-"]:first-of-type{margin-left:calc(16vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-2[class*="column-"]:first-of-type{margin-right:calc(16vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-2{margin-right:calc(16vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-2{margin-right:16vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-2[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] [class*="column-"] .tablet-post-2[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] .tablet-post-2{margin-left:16vw}html:not([dir="rtl"]) .tablet-pre-3{margin-left:24vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-3[class*="column-"]:first-of-type{margin-left:24vw}html[dir="rtl"] [class*="column-"] .tablet-pre-3[class*="column-"]:first-of-type{margin-right:24vw}html[dir="rtl"] .tablet-pre-3{margin-right:24vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-3{margin-left:calc(24vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-3[class*="column-"]:first-of-type{margin-left:calc(24vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-3[class*="column-"]:first-of-type{margin-right:calc(24vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-3{margin-right:calc(24vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-3{margin-right:24vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-3[class*="column-"]:first-of-type{margin-right:24vw}html[dir="rtl"] [class*="column-"] .tablet-post-3[class*="column-"]:first-of-type{margin-right:24vw}html[dir="rtl"] .tablet-post-3{margin-left:24vw}html:not([dir="rtl"]) .tablet-pre-4{margin-left:32vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-4[class*="column-"]:first-of-type{margin-left:32vw}html[dir="rtl"] [class*="column-"] .tablet-pre-4[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] .tablet-pre-4{margin-right:32vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-4{margin-left:calc(32vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-4[class*="column-"]:first-of-type{margin-left:calc(32vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-4[class*="column-"]:first-of-type{margin-right:calc(32vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-4{margin-right:calc(32vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-4{margin-right:32vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-4[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] [class*="column-"] .tablet-post-4[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] .tablet-post-4{margin-left:32vw}html:not([dir="rtl"]) .tablet-pre-5{margin-left:40vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-5[class*="column-"]:first-of-type{margin-left:40vw}html[dir="rtl"] [class*="column-"] .tablet-pre-5[class*="column-"]:first-of-type{margin-right:40vw}html[dir="rtl"] .tablet-pre-5{margin-right:40vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-5{margin-left:calc(40vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-5[class*="column-"]:first-of-type{margin-left:calc(40vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-5[class*="column-"]:first-of-type{margin-right:calc(40vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-5{margin-right:calc(40vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-5{margin-right:40vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-5[class*="column-"]:first-of-type{margin-right:40vw}html[dir="rtl"] [class*="column-"] .tablet-post-5[class*="column-"]:first-of-type{margin-right:40vw}html[dir="rtl"] .tablet-post-5{margin-left:40vw}html:not([dir="rtl"]) .tablet-pre-6{margin-left:48vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-6[class*="column-"]:first-of-type{margin-left:48vw}html[dir="rtl"] [class*="column-"] .tablet-pre-6[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] .tablet-pre-6{margin-right:48vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-6{margin-left:calc(48vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-6[class*="column-"]:first-of-type{margin-left:calc(48vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-6[class*="column-"]:first-of-type{margin-right:calc(48vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-6{margin-right:calc(48vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-6{margin-right:48vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-6[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] [class*="column-"] .tablet-post-6[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] .tablet-post-6{margin-left:48vw}html:not([dir="rtl"]) .tablet-pre-7{margin-left:56vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-7[class*="column-"]:first-of-type{margin-left:56vw}html[dir="rtl"] [class*="column-"] .tablet-pre-7[class*="column-"]:first-of-type{margin-right:56vw}html[dir="rtl"] .tablet-pre-7{margin-right:56vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-7{margin-left:calc(56vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-7[class*="column-"]:first-of-type{margin-left:calc(56vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-7[class*="column-"]:first-of-type{margin-right:calc(56vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-7{margin-right:calc(56vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-7{margin-right:56vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-7[class*="column-"]:first-of-type{margin-right:56vw}html[dir="rtl"] [class*="column-"] .tablet-post-7[class*="column-"]:first-of-type{margin-right:56vw}html[dir="rtl"] .tablet-post-7{margin-left:56vw}html:not([dir="rtl"]) .tablet-pre-8{margin-left:64vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-8[class*="column-"]:first-of-type{margin-left:64vw}html[dir="rtl"] [class*="column-"] .tablet-pre-8[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] .tablet-pre-8{margin-right:64vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-8{margin-left:calc(64vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-8[class*="column-"]:first-of-type{margin-left:calc(64vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-8[class*="column-"]:first-of-type{margin-right:calc(64vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-8{margin-right:calc(64vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-8{margin-right:64vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-8[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] [class*="column-"] .tablet-post-8[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] .tablet-post-8{margin-left:64vw}html:not([dir="rtl"]) .tablet-pre-9{margin-left:72vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-9[class*="column-"]:first-of-type{margin-left:72vw}html[dir="rtl"] [class*="column-"] .tablet-pre-9[class*="column-"]:first-of-type{margin-right:72vw}html[dir="rtl"] .tablet-pre-9{margin-right:72vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-9{margin-left:calc(72vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-9[class*="column-"]:first-of-type{margin-left:calc(72vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-9[class*="column-"]:first-of-type{margin-right:calc(72vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-9{margin-right:calc(72vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-9{margin-right:72vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-9[class*="column-"]:first-of-type{margin-right:72vw}html[dir="rtl"] [class*="column-"] .tablet-post-9[class*="column-"]:first-of-type{margin-right:72vw}html[dir="rtl"] .tablet-post-9{margin-left:72vw}html:not([dir="rtl"]) .tablet-pre-10{margin-left:80vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-10[class*="column-"]:first-of-type{margin-left:80vw}html[dir="rtl"] [class*="column-"] .tablet-pre-10[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] .tablet-pre-10{margin-right:80vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-10{margin-left:calc(80vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-10[class*="column-"]:first-of-type{margin-left:calc(80vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-10[class*="column-"]:first-of-type{margin-right:calc(80vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-10{margin-right:calc(80vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-10{margin-right:80vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-10[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] [class*="column-"] .tablet-post-10[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] .tablet-post-10{margin-left:80vw}html:not([dir="rtl"]) .tablet-pre-11{margin-left:88vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-11[class*="column-"]:first-of-type{margin-left:88vw}html[dir="rtl"] [class*="column-"] .tablet-pre-11[class*="column-"]:first-of-type{margin-right:88vw}html[dir="rtl"] .tablet-pre-11{margin-right:88vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-11{margin-left:calc(88vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-11[class*="column-"]:first-of-type{margin-left:calc(88vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-11[class*="column-"]:first-of-type{margin-right:calc(88vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-11{margin-right:calc(88vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-11{margin-right:88vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-11[class*="column-"]:first-of-type{margin-right:88vw}html[dir="rtl"] [class*="column-"] .tablet-post-11[class*="column-"]:first-of-type{margin-right:88vw}html[dir="rtl"] .tablet-post-11{margin-left:88vw}html:not([dir="rtl"]) .tablet-pre-12{margin-left:96vw}html:not([dir="rtl"]) [class*="column-"] .tablet-pre-12[class*="column-"]:first-of-type{margin-left:96vw}html[dir="rtl"] [class*="column-"] .tablet-pre-12[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] .tablet-pre-12{margin-right:96vw}html:not([dir="rtl"]) .tablet-first-column.tablet-pre-12{margin-left:calc(96vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .tablet-first-column.tablet-pre-12[class*="column-"]:first-of-type{margin-left:calc(96vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .tablet-first-column.tablet-pre-12[class*="column-"]:first-of-type{margin-right:calc(96vw - 0.5rem)}html[dir="rtl"] .tablet-first-column.tablet-pre-12{margin-right:calc(96vw - 0.5rem)}html:not([dir="rtl"]) .tablet-post-12{margin-right:96vw}html:not([dir="rtl"]) [class*="column-"] .tablet-post-12[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] [class*="column-"] .tablet-post-12[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] .tablet-post-12{margin-left:96vw}}@media screen and (max-width:479px){html:not([dir="rtl"]) .phone-pre-0{margin-left:0vw}html:not([dir="rtl"]) [class*="column-"] .phone-pre-0[class*="column-"]:first-of-type{margin-left:0vw}html[dir="rtl"] [class*="column-"] .phone-pre-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] .phone-pre-0{margin-right:0vw}html:not([dir="rtl"]) .phone-first-column.phone-pre-0{margin-left:calc(0vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .phone-first-column.phone-pre-0[class*="column-"]:first-of-type{margin-left:calc(0vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .phone-first-column.phone-pre-0[class*="column-"]:first-of-type{margin-right:calc(0vw - 0.5rem)}html[dir="rtl"] .phone-first-column.phone-pre-0{margin-right:calc(0vw - 0.5rem)}html:not([dir="rtl"]) .phone-post-0{margin-right:0vw}html:not([dir="rtl"]) [class*="column-"] .phone-post-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] [class*="column-"] .phone-post-0[class*="column-"]:first-of-type{margin-right:0vw}html[dir="rtl"] .phone-post-0{margin-left:0vw}html:not([dir="rtl"]) .phone-pre-1{margin-left:16vw}html:not([dir="rtl"]) [class*="column-"] .phone-pre-1[class*="column-"]:first-of-type{margin-left:16vw}html[dir="rtl"] [class*="column-"] .phone-pre-1[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] .phone-pre-1{margin-right:16vw}html:not([dir="rtl"]) .phone-first-column.phone-pre-1{margin-left:calc(16vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .phone-first-column.phone-pre-1[class*="column-"]:first-of-type{margin-left:calc(16vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .phone-first-column.phone-pre-1[class*="column-"]:first-of-type{margin-right:calc(16vw - 0.5rem)}html[dir="rtl"] .phone-first-column.phone-pre-1{margin-right:calc(16vw - 0.5rem)}html:not([dir="rtl"]) .phone-post-1{margin-right:16vw}html:not([dir="rtl"]) [class*="column-"] .phone-post-1[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] [class*="column-"] .phone-post-1[class*="column-"]:first-of-type{margin-right:16vw}html[dir="rtl"] .phone-post-1{margin-left:16vw}html:not([dir="rtl"]) .phone-pre-2{margin-left:32vw}html:not([dir="rtl"]) [class*="column-"] .phone-pre-2[class*="column-"]:first-of-type{margin-left:32vw}html[dir="rtl"] [class*="column-"] .phone-pre-2[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] .phone-pre-2{margin-right:32vw}html:not([dir="rtl"]) .phone-first-column.phone-pre-2{margin-left:calc(32vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .phone-first-column.phone-pre-2[class*="column-"]:first-of-type{margin-left:calc(32vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .phone-first-column.phone-pre-2[class*="column-"]:first-of-type{margin-right:calc(32vw - 0.5rem)}html[dir="rtl"] .phone-first-column.phone-pre-2{margin-right:calc(32vw - 0.5rem)}html:not([dir="rtl"]) .phone-post-2{margin-right:32vw}html:not([dir="rtl"]) [class*="column-"] .phone-post-2[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] [class*="column-"] .phone-post-2[class*="column-"]:first-of-type{margin-right:32vw}html[dir="rtl"] .phone-post-2{margin-left:32vw}html:not([dir="rtl"]) .phone-pre-3{margin-left:48vw}html:not([dir="rtl"]) [class*="column-"] .phone-pre-3[class*="column-"]:first-of-type{margin-left:48vw}html[dir="rtl"] [class*="column-"] .phone-pre-3[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] .phone-pre-3{margin-right:48vw}html:not([dir="rtl"]) .phone-first-column.phone-pre-3{margin-left:calc(48vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .phone-first-column.phone-pre-3[class*="column-"]:first-of-type{margin-left:calc(48vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .phone-first-column.phone-pre-3[class*="column-"]:first-of-type{margin-right:calc(48vw - 0.5rem)}html[dir="rtl"] .phone-first-column.phone-pre-3{margin-right:calc(48vw - 0.5rem)}html:not([dir="rtl"]) .phone-post-3{margin-right:48vw}html:not([dir="rtl"]) [class*="column-"] .phone-post-3[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] [class*="column-"] .phone-post-3[class*="column-"]:first-of-type{margin-right:48vw}html[dir="rtl"] .phone-post-3{margin-left:48vw}html:not([dir="rtl"]) .phone-pre-4{margin-left:64vw}html:not([dir="rtl"]) [class*="column-"] .phone-pre-4[class*="column-"]:first-of-type{margin-left:64vw}html[dir="rtl"] [class*="column-"] .phone-pre-4[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] .phone-pre-4{margin-right:64vw}html:not([dir="rtl"]) .phone-first-column.phone-pre-4{margin-left:calc(64vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .phone-first-column.phone-pre-4[class*="column-"]:first-of-type{margin-left:calc(64vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .phone-first-column.phone-pre-4[class*="column-"]:first-of-type{margin-right:calc(64vw - 0.5rem)}html[dir="rtl"] .phone-first-column.phone-pre-4{margin-right:calc(64vw - 0.5rem)}html:not([dir="rtl"]) .phone-post-4{margin-right:64vw}html:not([dir="rtl"]) [class*="column-"] .phone-post-4[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] [class*="column-"] .phone-post-4[class*="column-"]:first-of-type{margin-right:64vw}html[dir="rtl"] .phone-post-4{margin-left:64vw}html:not([dir="rtl"]) .phone-pre-5{margin-left:80vw}html:not([dir="rtl"]) [class*="column-"] .phone-pre-5[class*="column-"]:first-of-type{margin-left:80vw}html[dir="rtl"] [class*="column-"] .phone-pre-5[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] .phone-pre-5{margin-right:80vw}html:not([dir="rtl"]) .phone-first-column.phone-pre-5{margin-left:calc(80vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .phone-first-column.phone-pre-5[class*="column-"]:first-of-type{margin-left:calc(80vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .phone-first-column.phone-pre-5[class*="column-"]:first-of-type{margin-right:calc(80vw - 0.5rem)}html[dir="rtl"] .phone-first-column.phone-pre-5{margin-right:calc(80vw - 0.5rem)}html:not([dir="rtl"]) .phone-post-5{margin-right:80vw}html:not([dir="rtl"]) [class*="column-"] .phone-post-5[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] [class*="column-"] .phone-post-5[class*="column-"]:first-of-type{margin-right:80vw}html[dir="rtl"] .phone-post-5{margin-left:80vw}html:not([dir="rtl"]) .phone-pre-6{margin-left:96vw}html:not([dir="rtl"]) [class*="column-"] .phone-pre-6[class*="column-"]:first-of-type{margin-left:96vw}html[dir="rtl"] [class*="column-"] .phone-pre-6[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] .phone-pre-6{margin-right:96vw}html:not([dir="rtl"]) .phone-first-column.phone-pre-6{margin-left:calc(96vw - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] .phone-first-column.phone-pre-6[class*="column-"]:first-of-type{margin-left:calc(96vw - 0.5rem)}html[dir="rtl"] [class*="column-"] .phone-first-column.phone-pre-6[class*="column-"]:first-of-type{margin-right:calc(96vw - 0.5rem)}html[dir="rtl"] .phone-first-column.phone-pre-6{margin-right:calc(96vw - 0.5rem)}html:not([dir="rtl"]) .phone-post-6{margin-right:96vw}html:not([dir="rtl"]) [class*="column-"] .phone-post-6[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] [class*="column-"] .phone-post-6[class*="column-"]:first-of-type{margin-right:96vw}html[dir="rtl"] .phone-post-6{margin-left:96vw}}@media screen and (min-width:1501px){html:not([dir="rtl"]) .pre-0{margin-left:-1px}html[dir="rtl"] .pre-0{margin-right:-1px}html:not([dir="rtl"]) .post-0{margin-right:-1px}html[dir="rtl"] .post-0{margin-left:-1px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-0:first-of-type{margin-left:calc(-1px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-0:first-of-type{margin-right:calc(-1px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-0:last-of-type{margin-right:calc(-1px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-0:last-of-type{margin-left:calc(-1px - 0.5rem)}html:not([dir="rtl"]) .pre-1{margin-left:59px}html[dir="rtl"] .pre-1{margin-right:59px}html:not([dir="rtl"]) .post-1{margin-right:59px}html[dir="rtl"] .post-1{margin-left:59px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-1:first-of-type{margin-left:calc(59px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-1:first-of-type{margin-right:calc(59px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-1:last-of-type{margin-right:calc(59px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-1:last-of-type{margin-left:calc(59px - 0.5rem)}html:not([dir="rtl"]) .pre-2{margin-left:119px}html[dir="rtl"] .pre-2{margin-right:119px}html:not([dir="rtl"]) .post-2{margin-right:119px}html[dir="rtl"] .post-2{margin-left:119px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-2:first-of-type{margin-left:calc(119px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-2:first-of-type{margin-right:calc(119px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-2:last-of-type{margin-right:calc(119px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-2:last-of-type{margin-left:calc(119px - 0.5rem)}html:not([dir="rtl"]) .pre-3{margin-left:179px}html[dir="rtl"] .pre-3{margin-right:179px}html:not([dir="rtl"]) .post-3{margin-right:179px}html[dir="rtl"] .post-3{margin-left:179px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-3:first-of-type{margin-left:calc(179px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-3:first-of-type{margin-right:calc(179px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-3:last-of-type{margin-right:calc(179px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-3:last-of-type{margin-left:calc(179px - 0.5rem)}html:not([dir="rtl"]) .pre-4{margin-left:239px}html[dir="rtl"] .pre-4{margin-right:239px}html:not([dir="rtl"]) .post-4{margin-right:239px}html[dir="rtl"] .post-4{margin-left:239px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-4:first-of-type{margin-left:calc(239px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-4:first-of-type{margin-right:calc(239px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-4:last-of-type{margin-right:calc(239px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-4:last-of-type{margin-left:calc(239px - 0.5rem)}html:not([dir="rtl"]) .pre-5{margin-left:299px}html[dir="rtl"] .pre-5{margin-right:299px}html:not([dir="rtl"]) .post-5{margin-right:299px}html[dir="rtl"] .post-5{margin-left:299px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-5:first-of-type{margin-left:calc(299px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-5:first-of-type{margin-right:calc(299px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-5:last-of-type{margin-right:calc(299px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-5:last-of-type{margin-left:calc(299px - 0.5rem)}html:not([dir="rtl"]) .pre-6{margin-left:359px}html[dir="rtl"] .pre-6{margin-right:359px}html:not([dir="rtl"]) .post-6{margin-right:359px}html[dir="rtl"] .post-6{margin-left:359px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-6:first-of-type{margin-left:calc(359px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-6:first-of-type{margin-right:calc(359px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-6:last-of-type{margin-right:calc(359px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-6:last-of-type{margin-left:calc(359px - 0.5rem)}html:not([dir="rtl"]) .pre-7{margin-left:419px}html[dir="rtl"] .pre-7{margin-right:419px}html:not([dir="rtl"]) .post-7{margin-right:419px}html[dir="rtl"] .post-7{margin-left:419px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-7:first-of-type{margin-left:calc(419px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-7:first-of-type{margin-right:calc(419px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-7:last-of-type{margin-right:calc(419px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-7:last-of-type{margin-left:calc(419px - 0.5rem)}html:not([dir="rtl"]) .pre-8{margin-left:479px}html[dir="rtl"] .pre-8{margin-right:479px}html:not([dir="rtl"]) .post-8{margin-right:479px}html[dir="rtl"] .post-8{margin-left:479px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-8:first-of-type{margin-left:calc(479px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-8:first-of-type{margin-right:calc(479px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-8:last-of-type{margin-right:calc(479px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-8:last-of-type{margin-left:calc(479px - 0.5rem)}html:not([dir="rtl"]) .pre-9{margin-left:539px}html[dir="rtl"] .pre-9{margin-right:539px}html:not([dir="rtl"]) .post-9{margin-right:539px}html[dir="rtl"] .post-9{margin-left:539px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-9:first-of-type{margin-left:calc(539px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-9:first-of-type{margin-right:calc(539px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-9:last-of-type{margin-right:calc(539px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-9:last-of-type{margin-left:calc(539px - 0.5rem)}html:not([dir="rtl"]) .pre-10{margin-left:599px}html[dir="rtl"] .pre-10{margin-right:599px}html:not([dir="rtl"]) .post-10{margin-right:599px}html[dir="rtl"] .post-10{margin-left:599px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-10:first-of-type{margin-left:calc(599px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-10:first-of-type{margin-right:calc(599px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-10:last-of-type{margin-right:calc(599px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-10:last-of-type{margin-left:calc(599px - 0.5rem)}html:not([dir="rtl"]) .pre-11{margin-left:659px}html[dir="rtl"] .pre-11{margin-right:659px}html:not([dir="rtl"]) .post-11{margin-right:659px}html[dir="rtl"] .post-11{margin-left:659px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-11:first-of-type{margin-left:calc(659px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-11:first-of-type{margin-right:calc(659px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-11:last-of-type{margin-right:calc(659px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-11:last-of-type{margin-left:calc(659px - 0.5rem)}html:not([dir="rtl"]) .pre-12{margin-left:719px}html[dir="rtl"] .pre-12{margin-right:719px}html:not([dir="rtl"]) .post-12{margin-right:719px}html[dir="rtl"] .post-12{margin-left:719px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-12:first-of-type{margin-left:calc(719px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-12:first-of-type{margin-right:calc(719px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-12:last-of-type{margin-right:calc(719px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-12:last-of-type{margin-left:calc(719px - 0.5rem)}html:not([dir="rtl"]) .pre-13{margin-left:779px}html[dir="rtl"] .pre-13{margin-right:779px}html:not([dir="rtl"]) .post-13{margin-right:779px}html[dir="rtl"] .post-13{margin-left:779px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-13:first-of-type{margin-left:calc(779px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-13:first-of-type{margin-right:calc(779px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-13:last-of-type{margin-right:calc(779px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-13:last-of-type{margin-left:calc(779px - 0.5rem)}html:not([dir="rtl"]) .pre-14{margin-left:839px}html[dir="rtl"] .pre-14{margin-right:839px}html:not([dir="rtl"]) .post-14{margin-right:839px}html[dir="rtl"] .post-14{margin-left:839px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-14:first-of-type{margin-left:calc(839px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-14:first-of-type{margin-right:calc(839px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-14:last-of-type{margin-right:calc(839px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-14:last-of-type{margin-left:calc(839px - 0.5rem)}html:not([dir="rtl"]) .pre-15{margin-left:899px}html[dir="rtl"] .pre-15{margin-right:899px}html:not([dir="rtl"]) .post-15{margin-right:899px}html[dir="rtl"] .post-15{margin-left:899px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-15:first-of-type{margin-left:calc(899px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-15:first-of-type{margin-right:calc(899px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-15:last-of-type{margin-right:calc(899px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-15:last-of-type{margin-left:calc(899px - 0.5rem)}html:not([dir="rtl"]) .pre-16{margin-left:959px}html[dir="rtl"] .pre-16{margin-right:959px}html:not([dir="rtl"]) .post-16{margin-right:959px}html[dir="rtl"] .post-16{margin-left:959px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-16:first-of-type{margin-left:calc(959px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-16:first-of-type{margin-right:calc(959px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-16:last-of-type{margin-right:calc(959px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-16:last-of-type{margin-left:calc(959px - 0.5rem)}html:not([dir="rtl"]) .pre-17{margin-left:1019px}html[dir="rtl"] .pre-17{margin-right:1019px}html:not([dir="rtl"]) .post-17{margin-right:1019px}html[dir="rtl"] .post-17{margin-left:1019px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-17:first-of-type{margin-left:calc(1019px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-17:first-of-type{margin-right:calc(1019px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-17:last-of-type{margin-right:calc(1019px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-17:last-of-type{margin-left:calc(1019px - 0.5rem)}html:not([dir="rtl"]) .pre-18{margin-left:1079px}html[dir="rtl"] .pre-18{margin-right:1079px}html:not([dir="rtl"]) .post-18{margin-right:1079px}html[dir="rtl"] .post-18{margin-left:1079px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-18:first-of-type{margin-left:calc(1079px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-18:first-of-type{margin-right:calc(1079px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-18:last-of-type{margin-right:calc(1079px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-18:last-of-type{margin-left:calc(1079px - 0.5rem)}html:not([dir="rtl"]) .pre-19{margin-left:1139px}html[dir="rtl"] .pre-19{margin-right:1139px}html:not([dir="rtl"]) .post-19{margin-right:1139px}html[dir="rtl"] .post-19{margin-left:1139px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-19:first-of-type{margin-left:calc(1139px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-19:first-of-type{margin-right:calc(1139px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-19:last-of-type{margin-right:calc(1139px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-19:last-of-type{margin-left:calc(1139px - 0.5rem)}html:not([dir="rtl"]) .pre-20{margin-left:1199px}html[dir="rtl"] .pre-20{margin-right:1199px}html:not([dir="rtl"]) .post-20{margin-right:1199px}html[dir="rtl"] .post-20{margin-left:1199px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-20:first-of-type{margin-left:calc(1199px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-20:first-of-type{margin-right:calc(1199px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-20:last-of-type{margin-right:calc(1199px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-20:last-of-type{margin-left:calc(1199px - 0.5rem)}html:not([dir="rtl"]) .pre-21{margin-left:1259px}html[dir="rtl"] .pre-21{margin-right:1259px}html:not([dir="rtl"]) .post-21{margin-right:1259px}html[dir="rtl"] .post-21{margin-left:1259px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-21:first-of-type{margin-left:calc(1259px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-21:first-of-type{margin-right:calc(1259px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-21:last-of-type{margin-right:calc(1259px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-21:last-of-type{margin-left:calc(1259px - 0.5rem)}html:not([dir="rtl"]) .pre-22{margin-left:1319px}html[dir="rtl"] .pre-22{margin-right:1319px}html:not([dir="rtl"]) .post-22{margin-right:1319px}html[dir="rtl"] .post-22{margin-left:1319px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-22:first-of-type{margin-left:calc(1319px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-22:first-of-type{margin-right:calc(1319px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-22:last-of-type{margin-right:calc(1319px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-22:last-of-type{margin-left:calc(1319px - 0.5rem)}html:not([dir="rtl"]) .pre-23{margin-left:1379px}html[dir="rtl"] .pre-23{margin-right:1379px}html:not([dir="rtl"]) .post-23{margin-right:1379px}html[dir="rtl"] .post-23{margin-left:1379px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-23:first-of-type{margin-left:calc(1379px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-23:first-of-type{margin-right:calc(1379px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-23:last-of-type{margin-right:calc(1379px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-23:last-of-type{margin-left:calc(1379px - 0.5rem)}html:not([dir="rtl"]) .pre-24{margin-left:1439px}html[dir="rtl"] .pre-24{margin-right:1439px}html:not([dir="rtl"]) .post-24{margin-right:1439px}html[dir="rtl"] .post-24{margin-left:1439px}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].pre-24:first-of-type{margin-left:calc(1439px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].pre-24:first-of-type{margin-right:calc(1439px - 0.5rem)}html:not([dir="rtl"]) [class*="column-"] [class*="column-"].post-24:last-of-type{margin-right:calc(1439px - 0.5rem)}html[dir="rtl"] [class*="column-"] [class*="column-"].post-24:last-of-type{margin-left:calc(1439px - 0.5rem)}}@media screen and (min-width:1440px){.phone-show{display:none!important}.tablet-show{display:none!important}.tablet-only{display:none!important}.large-hide{display:none!important}}@media screen and (max-width:1439px) and (min-width:860px){.phone-show{display:none!important}.tablet-show{display:none!important}.tablet-only{display:none!important}.large-only{display:none!important}.large-show{display:none!important}}@media screen and (max-width:859px) and (min-width:480px){.tablet-hide{display:none!important}.phone-show{display:none!important}.large-only{display:none!important}.large-show{display:none!important}}@media screen and (max-width:479px){.phone-hide{display:none!important}.tablet-hide{display:none!important}.tablet-only{display:none!important}.large-only{display:none!important}.large-show{display:none!important}}.invisible{visibility:hidden}.visible{visibility:visible}.hide{display:none!important}.visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visually-hidden-focusable{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visually-hidden-focusable:active,.visually-hidden-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.left{float:left}html[dir="rtl"] .left{float:right}.right{float:right}html[dir="rtl"] .right{float:left}@media screen and (min-width:1440px){.large-left{float:left}html[dir="rtl"] .large-left{float:right}.large-right{float:right}html[dir="rtl"] .large-right{float:left}}@media screen and (max-width:859px) and (min-width:480px){.tablet-left{float:left}html[dir="rtl"] .tablet-left{float:right}.tablet-right{float:right}html[dir="rtl"] .tablet-right{float:left}}@media screen and (max-width:479px){.phone-left{float:left}html[dir="rtl"] .phone-left{float:right}.phone-right{float:right}html[dir="rtl"] .phone-right{float:left}}.block-group{margin-left:-0.75rem;margin-right:-0.75rem;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.block{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-left:0.75rem;margin-right:0.75rem;min-width:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:0;-ms-flex-negative:1;flex-shrink:1}.block-group-1-up > .block{-ms-flex-preferred-size:calc(100% - 1.5rem);flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.block-group-2-up > .block{-ms-flex-preferred-size:calc(50% - 1.5rem);flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.block-group-3-up > .block{-ms-flex-preferred-size:calc(33.33333% - 1.5rem);flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.block-group-4-up > .block{-ms-flex-preferred-size:calc(25% - 1.5rem);flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.block-group-5-up > .block{-ms-flex-preferred-size:calc(20% - 1.5rem);flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.block-group-6-up > .block{-ms-flex-preferred-size:calc(16.66666% - 1.5rem);flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.block-group-7-up > .block{-ms-flex-preferred-size:calc(14.28570% - 1.5rem);flex-basis:calc(14.28570% - 1.5rem);width:calc(14.28570% - 1.5rem)}.block-group-8-up > .block{-ms-flex-preferred-size:calc(12.5% - 1.5rem);flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}@media screen and (max-width:860px){.tablet-block-group-1-up > .block{-ms-flex-preferred-size:calc(100% - 1.5rem);flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.tablet-block-group-2-up > .block{-ms-flex-preferred-size:calc(50% - 1.5rem);flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.tablet-block-group-3-up > .block{-ms-flex-preferred-size:calc(33.33333% - 1.5rem);flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.tablet-block-group-4-up > .block{-ms-flex-preferred-size:calc(25% - 1.5rem);flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.tablet-block-group-5-up > .block{-ms-flex-preferred-size:calc(20% - 1.5rem);flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.tablet-block-group-6-up > .block{-ms-flex-preferred-size:calc(16.66666% - 1.5rem);flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.tablet-block-group-7-up > .block{-ms-flex-preferred-size:calc(14.28570% - 1.5rem);flex-basis:calc(14.28570% - 1.5rem);width:calc(14.28570% - 1.5rem)}.tablet-block-group-8-up > .block{-ms-flex-preferred-size:calc(12.5% - 1.5rem);flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}}@media screen and (max-width:480px){.phone-block-group-1-up > .block{-ms-flex-preferred-size:calc(100% - 1.5rem);flex-basis:calc(100% - 1.5rem);width:calc(100% - 1.5rem)}.phone-block-group-2-up > .block{-ms-flex-preferred-size:calc(50% - 1.5rem);flex-basis:calc(50% - 1.5rem);width:calc(50% - 1.5rem)}.phone-block-group-3-up > .block{-ms-flex-preferred-size:calc(33.33333% - 1.5rem);flex-basis:calc(33.33333% - 1.5rem);width:calc(33.33333% - 1.5rem)}.phone-block-group-4-up > .block{-ms-flex-preferred-size:calc(25% - 1.5rem);flex-basis:calc(25% - 1.5rem);width:calc(25% - 1.5rem)}.phone-block-group-5-up > .block{-ms-flex-preferred-size:calc(20% - 1.5rem);flex-basis:calc(20% - 1.5rem);width:calc(20% - 1.5rem)}.phone-block-group-6-up > .block{-ms-flex-preferred-size:calc(16.66666% - 1.5rem);flex-basis:calc(16.66666% - 1.5rem);width:calc(16.66666% - 1.5rem)}.phone-block-group-7-up > .block{-ms-flex-preferred-size:calc(14.28570% - 1.5rem);flex-basis:calc(14.28570% - 1.5rem);width:calc(14.28570% - 1.5rem)}.phone-block-group-8-up > .block{-ms-flex-preferred-size:calc(12.5% - 1.5rem);flex-basis:calc(12.5% - 1.5rem);width:calc(12.5% - 1.5rem)}}.is-sticky{position:fixed;z-index:10}.is-sticky.scroll-show,.is-sticky .scroll-show{visibility:visible}.scroll-show{visibility:hidden}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/77156710-6a58-4606-b189-b4185e75967b.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/3d5260a1-e4cd-4567-80ed-69d23c40355f.woff") format("woff");font-weight:300;font-style:normal}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/77caabd3-1877-4634-85c8-8e398a093b99.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/e388ac99-8c6a-4451-8690-1d15b4d45adb.woff") format("woff");font-weight:400;font-style:normal}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/014f2daa-c310-4a36-b9fd-79a8e0c48d44.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/12b00842-ec20-4c7f-aa72-802fb00f6cc4.woff") format("woff");font-weight:400;font-style:italic}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/e78b17bb-11fb-4860-8d66-4ee0d0c1e117.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/d4ffabb3-dd7c-472a-bdfb-6700383c6354.woff") format("woff");font-weight:700;font-style:normal}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/77156710-6a58-4606-b189-b4185e75967b-ext.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/3d5260a1-e4cd-4567-80ed-69d23c40355f-ext.woff") format("woff");font-weight:300;font-style:normal;unicode-range:U+0100-017F,U+0180-024F,U+1E00-1EFF,U+02B0-02FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/77caabd3-1877-4634-85c8-8e398a093b99-ext.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/e388ac99-8c6a-4451-8690-1d15b4d45adb-ext.woff") format("woff");font-weight:400;font-style:normal;unicode-range:U+0100-017F,U+0180-024F,U+1E00-1EFF,U+02B0-02FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/014f2daa-c310-4a36-b9fd-79a8e0c48d44-ext.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/12b00842-ec20-4c7f-aa72-802fb00f6cc4-ext.woff") format("woff");font-weight:400;font-style:italic;unicode-range:U+0100-017F,U+0180-024F,U+1E00-1EFF,U+02B0-02FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/9851da0a-2481-4687-bbeb-ed4ab170dc38-ext.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/cebce072-9561-4c6d-8c89-f0cefec63289-ext.woff") format("woff");font-weight:700;font-style:normal;unicode-range:U+0100-017F,U+0180-024F,U+1E00-1EFF,U+02B0-02FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/e78b17bb-11fb-4860-8d66-4ee0d0c1e117-ext.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/d4ffabb3-dd7c-472a-bdfb-6700383c6354-ext.woff") format("woff");font-weight:700;font-style:normal;unicode-range:U+0100-017F,U+0180-024F,U+1E00-1EFF,U+02B0-02FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/77156710-6a58-4606-b189-b4185e75967b-greek.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/3d5260a1-e4cd-4567-80ed-69d23c40355f-greek.woff") format("woff");font-weight:300;font-style:normal;unicode-range:U+0370-03FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/77caabd3-1877-4634-85c8-8e398a093b99-greek.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/e388ac99-8c6a-4451-8690-1d15b4d45adb-greek.woff") format("woff");font-weight:400;font-style:normal;unicode-range:U+0370-03FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/014f2daa-c310-4a36-b9fd-79a8e0c48d44-greek.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/12b00842-ec20-4c7f-aa72-802fb00f6cc4-greek.woff") format("woff");font-weight:400;font-style:italic;unicode-range:U+0370-03FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/e78b17bb-11fb-4860-8d66-4ee0d0c1e117-greek.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/d4ffabb3-dd7c-472a-bdfb-6700383c6354-greek.woff") format("woff");font-weight:700;font-style:normal;unicode-range:U+0370-03FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/174d458a-81e0-4174-9473-35e3bf0a613c.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/57a79aa3-9b06-4ba7-a9a4-2b766d826ecf.woff") format("woff");font-weight:300;font-style:normal;unicode-range:U+0400-04FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/7db1f672-3a8f-4d19-9c49-7f61aed450b5.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/4ab86b35-c0c2-42b5-98ad-4b6eba66b197.woff") format("woff");font-weight:400;font-style:normal;unicode-range:U+0400-04FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/b17468ea-cf53-4635-984b-4d930a68ed4d.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/4d1d0d0d-9ea6-4117-901f-8b32ca1ab936.woff") format("woff");font-weight:400;font-style:italic;unicode-range:U+0400-04FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/40d36b4a-60c6-460a-bf43-4c948c23563e.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/45b78f45-e639-4836-8612-e0892e120f14.woff") format("woff");font-weight:700;font-style:normal;unicode-range:U+0400-04FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/281f890c-8412-4ee3-84ed-8b5d062d2ab8.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/5729f02e-f6b0-4f35-8ee5-c2cffa65fa76.woff") format("woff");font-weight:300;font-style:normal;unicode-range:U+10A0-10FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/281f890c-8412-4ee3-84ed-8b5d062d2ab8.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/5729f02e-f6b0-4f35-8ee5-c2cffa65fa76.woff") format("woff");font-weight:400;font-style:normal;unicode-range:U+10A0-10FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/2200dfff-da50-40b0-bc12-5e4b872a1998.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/dc10b3bd-5076-4df5-a5f5-e5961f4a6938.woff") format("woff");font-weight:700;font-style:normal;unicode-range:U+10A0-10FF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/2a1ae9a5-b6b5-405c-b660-bbdf1b356952.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/a8aeea1b-1a9d-45b7-8ad9-7c71824599e2.woff") format("woff");font-weight:300;font-style:normal;unicode-range:U+0600-06FF,U+FB50-FDFF,U+FE70-FEFF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/6ea5fa46-5311-450b-8744-288a30c55348.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/d9e4040d-32ff-4a1c-ac04-927a781da1f5.woff") format("woff");font-weight:400;font-style:normal;unicode-range:U+0600-06FF,U+FB50-FDFF,U+FE70-FEFF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/97694c53-4e94-4f9e-969b-a148adfcdcfd.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/8b01637a-f445-4f10-92ea-b84a355f7690.woff") format("woff");font-weight:700;font-style:normal;unicode-range:U+0600-06FF,U+FB50-FDFF,U+FE70-FEFF}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/31da4b04-f98a-4b5f-b545-a31d26da99e5.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/d98fb015-7ef6-404f-a58a-5c9242d79770.woff") format("woff");font-weight:300;font-style:normal;unicode-range:U+0590-05FF,U+FB00-FB4F}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/31da4b04-f98a-4b5f-b545-a31d26da99e5.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/d98fb015-7ef6-404f-a58a-5c9242d79770.woff") format("woff");font-weight:400;font-style:normal;unicode-range:U+0590-05FF,U+FB00-FB4F}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/32a2c5cf-6736-44a6-a276-49ba7e030944.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/fa71df11-7b19-4baf-8ff7-3537dea718f0.woff") format("woff");font-weight:400;font-style:italic;unicode-range:U+0590-05FF,U+FB00-FB4F}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/a9eaf4d3-6427-42df-9306-3ea1270f7b1a.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/f4a085c3-1c64-4fc0-a598-26f3e658c2b0.woff") format("woff");font-weight:700;font-style:normal;unicode-range:U+0590-05FF,U+FB00-FB4F}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/94aa531e-7746-4df0-bb6e-349891f2eda5.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/121524c1-8d82-4155-bfb3-fd2f15f09e93.woff") format("woff");font-weight:300;font-style:normal;unicode-range:U+0900-097F}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/3ae1e25e-3aa6-4061-a016-a079159f9d65.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/f1799750-0952-403f-8108-b2402eed0f62.woff") format("woff");font-weight:400;font-style:normal;unicode-range:U+0900-097F}@font-face{font-family:"Avenir Next";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/41331c3c-3759-4462-8695-33c9a21b6a5b.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/31e0c094-e345-4a54-a797-d5f1a5885572.woff") format("woff");font-weight:700;font-style:normal;unicode-range:U+0900-097F}@font-face{font-family:"SST Vietnamese";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/c4cc9032-7eee-4a6e-ae8b-f384b1349bcf.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/1b3078ef-2971-4c95-b6ca-13ab528758cb.woff") format("woff");font-weight:300;font-style:normal}@font-face{font-family:"SST Vietnamese";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/c1905e2e-a1cb-49de-9bb0-ce3c5ffc85ae.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/341bcc5e-7ac0-44ff-819d-5887892eab1b.woff") format("woff");font-weight:400;font-style:normal}@font-face{font-family:"SST Vietnamese";src:url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/4daa2125-53c6-4da8-9614-8a1049eaccc2.woff2") format("woff2"),url("https://webapps-cdn.esri.com/CDN/fonts/v1.1.2/0763eab1-d6ed-4c73-afb0-895f930df099.woff") format("woff");font-weight:700;font-style:normal}.avenir-light{font-weight:300;font-style:normal}.avenir-light-italic{font-weight:300;font-style:italic}.avenir-regular{font-weight:400;font-style:normal}.avenir-italic{font-weight:400;font-style:italic}.avenir-demi{font-weight:700;font-style:normal}.avenir-demi-italic{font-weight:700;font-style:italic}.avenir-bold{font-weight:700;font-style:normal}.avenir-bold-italic{font-weight:700;font-style:italic}.code-face,.code-face .block{letter-spacing:0em;font-family:"Consolas","Andale Mono","Lucida Console","Monaco",monospace;font-weight:400;font-style:normal}.code-face b,.code-face strong,.code-face .block b,.code-face .block strong{font-weight:400}.code-italic,.code-italic .block{letter-spacing:0em;font-family:"Consolas","Andale Mono","Lucida Console","Monaco",monospace;font-weight:400;font-style:italic}.code-italic b,.code-italic strong,.code-italic .block b,.code-italic .block strong{font-weight:400}html{font-size:16px}body{font-weight:400;font-style:normal;letter-spacing:0em;font-family:"Avenir Next W01","Avenir Next W00","Avenir Next","Avenir","Helvetica Neue",sans-serif;line-height:1.5;color:#4c4c4c;background-color:#fff;-webkit-font-smoothing:subpixel-antialiased;-webkit-font-feature-settings:"kern";-moz-font-feature-settings:"kern";font-feature-settings:"kern";font-kerning:normal;text-rendering:optimizeLegibility;-moz-font-feature-settings:'liga= 1','calt=0';-moz-font-feature-settings:"liga" 1,"calt" 0;-webkit-font-feature-settings:"liga" 1,"calt" 0;-ms-font-feature-settings:'liga= 1','calt=0';-o-font-feature-settings:"liga" 1,"calt" 0;font-feature-settings:"liga" 1,"calt" 0}form,select,button,input{letter-spacing:0em;font-family:inherit}h1,h2,h3,h4,h5,h6{font-weight:400;margin:0 0 0.75rem 0}h1{font-size:2.40307rem;line-height:1.35}@media screen and (max-width:859px){h1{font-size:1.99974rem}}@media screen and (max-width:479px){h1{font-size:1.66016rem}}h2{font-size:1.9994rem;line-height:1.35}@media screen and (max-width:859px){h2{font-size:1.7689rem}}@media screen and (max-width:479px){h2{font-size:1.5625rem}}h3{font-size:1.69949rem;line-height:1.3875}@media screen and (max-width:859px){h3{font-size:1.50357rem}}@media screen and (max-width:479px){h3{font-size:1.32812rem}}h4{font-size:1.414rem;line-height:1.5}@media screen and (max-width:859px){h4{font-size:1.33rem}}@media screen and (max-width:479px){h4{font-size:1.25rem}}h5{font-size:1.2019rem;line-height:1.5}@media screen and (max-width:859px){h5{font-size:1.1305rem}}@media screen and (max-width:479px){h5{font-size:1.0625rem}}h6{font-size:1rem;line-height:1.5}code,kbd,pre,samp{font-family:"Consolas","Andale Mono","Lucida Console","Monaco",monospace}code{padding:.25em;border-radius:3px;border:1px solid #efefef;color:#595959;background-color:#f8f8f8;white-space:normal;word-break:break-word;font-size:0.875em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word;max-width:100%;margin-bottom:1.5rem}pre code{padding:1.25rem 1rem 1rem 1rem;display:block;overflow:auto;word-wrap:normal;white-space:pre;position:relative}p,dl,blockquote{margin-top:0;margin-bottom:1.5rem}p:empty{margin:0}blockquote{margin:1.5rem 0;font-weight:400;font-style:normal;color:#6e6e6e;border-left:3px solid #ccc}html:not([dir="rtl"]) blockquote{padding-left:1rem}html[dir="rtl"] blockquote{padding-right:1rem}html[dir="rtl"] blockquote{border-left:none;border-right:3px solid #ccc}blockquote,blockquote p{font-size:1.2019rem;line-height:1.5}@media screen and (max-width:859px){blockquote,blockquote p{font-size:1.1305rem}}@media screen and (max-width:479px){blockquote,blockquote p{font-size:1.0625rem}}a{color:#0079c1;text-decoration:none}a:hover{color:#005e95;text-decoration:underline}ul,ol{font-size:0.9375rem;line-height:1.5}li{margin-top:.25em}dl{padding:0;margin-bottom:1.5rem}dt{font-weight:700;font-style:normal;margin-top:0.75rem}dt:first-child{margin-top:0}dd{margin-left:0.75rem}html[dir="rtl"] dd{margin-right:0.75rem}small,sup,sub{font-size:0.70721em}sub,sup{line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}mark{padding:0 0.1em 0.1em}hr{margin:2.25rem 0;border:none;border-top:1px solid #ccc}figure{margin:0 0 1.5rem 0}figure img{max-width:100%}figcaption{margin:0.375rem 0;font-size:0.875rem;line-height:1.5;font-style:italic;color:#828282}table{margin-bottom:1.5rem}html[lang="vi"] body,html.vi body{font-family:"SST Vietnamese",'Lucida Grande',Arial,Verdana,Geneva,sans-serif}[lang="vi"]{font-family:"SST Vietnamese",'Lucida Grande',Arial,Verdana,Geneva,sans-serif}.icon-ui-flush:before,.icon-ui-flush:after{padding-right:0!important;padding-left:0!important}@font-face{font-family:'calcite-ui';src:url("../fonts/calcite-ui.eot?#iefix") format("embedded-opentype"),url("../fonts/calcite-ui.woff") format("woff"),url("../fonts/calcite-ui.ttf") format("truetype");font-weight:normal;font-style:normal}[class^="icon-ui-"]:before,[class*=" icon-ui-"]:before{font-family:'calcite-ui';padding-right:0.5rem;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-decoration:none}html[dir="rtl"] [class^="icon-ui-"]:before,html[dir="rtl"] [class*=" icon-ui-"]:before{padding-left:0.75rem;padding-right:0}.icon-ui-small:before{font-size:0.75rem;line-height:1.5}.icon-ui-add-attachment:before{content:"\f101"}.icon-ui-announcement:before{content:"\f102"}.icon-ui-applications:before{content:"\f103"}.icon-ui-arrow-down-circled:before{content:"\f104"}.icon-ui-arrow-left-circled:before{content:"\f105"}.icon-ui-arrow-right-circled:before{content:"\f106"}.icon-ui-arrow-up-circled:before{content:"\f107"}.icon-ui-attachment:before{content:"\f108"}.icon-ui-authorize:before{content:"\f109"}.icon-ui-basemap:before{content:"\f10a"}.icon-ui-beginning:before{content:"\f10b"}.icon-ui-blank-map-pin:before{content:"\f10c"}.icon-ui-browser:before{content:"\f10d"}.icon-ui-calendar:before{content:"\f10e"}.icon-ui-chart:before{content:"\f10f"}.icon-ui-chat:before{content:"\f110"}.icon-ui-check-mark:before{content:"\f111"}.icon-ui-checkbox-checked:before{content:"\f112"}.icon-ui-checkbox-unchecked:before{content:"\f113"}.icon-ui-close-circled:before{content:"\f114"}.icon-ui-close:before{content:"\f115"}.icon-ui-collapse:before{content:"\f116"}.icon-ui-collection:before{content:"\f117"}.icon-ui-comment:before{content:"\f118"}.icon-ui-compass:before{content:"\f119"}.icon-ui-configure-popup:before{content:"\f11a"}.icon-ui-contact:before{content:"\f11b"}.icon-ui-dashboard:before{content:"\f11c"}.icon-ui-deny:before{content:"\f11d"}.icon-ui-description:before{content:"\f11e"}.icon-ui-directions:before{content:"\f11f"}.icon-ui-directions2:before{content:"\f120"}.icon-ui-dock-bottom:before{content:"\f121"}.icon-ui-dock-left:before{content:"\f122"}.icon-ui-dock-right:before{content:"\f123"}.icon-ui-documentation:before{content:"\f124"}.icon-ui-down-arrow-circled:before{content:"\f125"}.icon-ui-down-arrow:before{content:"\f126"}.icon-ui-down:before{content:"\f127"}.icon-ui-download:before{content:"\f128"}.icon-ui-drag-horizontal:before{content:"\f129"}.icon-ui-drag-vertical:before{content:"\f12a"}.icon-ui-duplicate:before{content:"\f12b"}.icon-ui-edit:before{content:"\f12c"}.icon-ui-end:before{content:"\f12d"}.icon-ui-environment-settings:before{content:"\f12e"}.icon-ui-erase:before{content:"\f12f"}.icon-ui-error:before{content:"\f130"}.icon-ui-error2:before{content:"\f131"}.icon-ui-expand:before{content:"\f132"}.icon-ui-experimental:before{content:"\f133"}.icon-ui-favorites:before{content:"\f134"}.icon-ui-feature-layer:before{content:"\f135"}.icon-ui-filter:before{content:"\f136"}.icon-ui-forward:before{content:"\f137"}.icon-ui-globe:before{content:"\f138"}.icon-ui-grant:before{content:"\f139"}.icon-ui-group:before{content:"\f13a"}.icon-ui-handle-horizontal:before{content:"\f13b"}.icon-ui-handle-vertical:before{content:"\f13c"}.icon-ui-home:before{content:"\f13d"}.icon-ui-key:before{content:"\f13e"}.icon-ui-labels:before{content:"\f13f"}.icon-ui-layer-list:before{content:"\f140"}.icon-ui-layers:before{content:"\f141"}.icon-ui-left-arrow-circled:before{content:"\f142"}.icon-ui-left-arrow:before{content:"\f143"}.icon-ui-left-triangle-arrow:before{content:"\f144"}.icon-ui-left:before{content:"\f145"}.icon-ui-line-chart:before{content:"\f146"}.icon-ui-link-external:before{content:"\f147"}.icon-ui-link:before{content:"\f148"}.icon-ui-loading-indicator:before{content:"\f149"}.icon-ui-locate:before{content:"\f14a"}.icon-ui-locked:before{content:"\f14b"}.icon-ui-map-pin:before{content:"\f14c"}.icon-ui-maps:before{content:"\f14d"}.icon-ui-marketplace:before{content:"\f14e"}.icon-ui-maximize:before{content:"\f14f"}.icon-ui-media:before{content:"\f150"}.icon-ui-media2:before{content:"\f151"}.icon-ui-menu:before{content:"\f152"}.icon-ui-minimize:before{content:"\f153"}.icon-ui-minus-circled:before{content:"\f154"}.icon-ui-minus:before{content:"\f155"}.icon-ui-mobile:before{content:"\f156"}.icon-ui-navigation:before{content:"\f157"}.icon-ui-notice-round:before{content:"\f158"}.icon-ui-notice-triangle:before{content:"\f159"}.icon-ui-organization:before{content:"\f15a"}.icon-ui-overview-arrow-bottom-left:before{content:"\f15b"}.icon-ui-overview-arrow-bottom-right:before{content:"\f15c"}.icon-ui-overview-arrow-top-left:before{content:"\f15d"}.icon-ui-overview-arrow-top-right:before{content:"\f15e"}.icon-ui-pan:before{content:"\f15f"}.icon-ui-pause:before{content:"\f160"}.icon-ui-phone:before{content:"\f161"}.icon-ui-pie-chart:before{content:"\f162"}.icon-ui-play:before{content:"\f163"}.icon-ui-plus-circled:before{content:"\f164"}.icon-ui-plus:before{content:"\f165"}.icon-ui-printer:before{content:"\f166"}.icon-ui-question:before{content:"\f167"}.icon-ui-radio-checked:before{content:"\f168"}.icon-ui-radio-unchecked:before{content:"\f169"}.icon-ui-refresh:before{content:"\f16a"}.icon-ui-resend-invitation:before{content:"\f16b"}.icon-ui-reverse:before{content:"\f16c"}.icon-ui-review:before{content:"\f16d"}.icon-ui-right-arrow-circled:before{content:"\f16e"}.icon-ui-right-arrow:before{content:"\f16f"}.icon-ui-right-triangle-arrow:before{content:"\f170"}.icon-ui-right:before{content:"\f171"}.icon-ui-rotate:before{content:"\f172"}.icon-ui-save:before{content:"\f173"}.icon-ui-search:before{content:"\f174"}.icon-ui-settings:before{content:"\f175"}.icon-ui-settings2:before{content:"\f176"}.icon-ui-share:before{content:"\f177"}.icon-ui-sign-out:before{content:"\f178"}.icon-ui-support:before{content:"\f179"}.icon-ui-table:before{content:"\f17a"}.icon-ui-tag:before{content:"\f17b"}.icon-ui-time-clock:before{content:"\f17c"}.icon-ui-trash:before{content:"\f17d"}.icon-ui-unlocked:before{content:"\f17e"}.icon-ui-up-arrow-circled:before{content:"\f17f"}.icon-ui-up-arrow:before{content:"\f180"}.icon-ui-up-down-arrows:before{content:"\f181"}.icon-ui-up:before{content:"\f182"}.icon-ui-upload:before{content:"\f183"}.icon-ui-user:before{content:"\f184"}.icon-ui-zoom-in-fixed:before{content:"\f185"}.icon-ui-zoom-in-magnifying-glass:before{content:"\f186"}.icon-ui-zoom-out-fixed:before{content:"\f187"}.icon-ui-zoom-out-magnifying-glass:before{content:"\f188"}.svg-icon{fill:currentColor;pointer-events:none;display:inline-block;width:1em;height:1em;vertical-align:middle;padding-right:.15em}.svg-icon-yellow{fill:#fad817}.svg-icon-green{fill:#5a9359}.svg-icon-blue{fill:#0079c1}.svg-icon-light-blue{fill:#56a5d8}.svg-icon-dark-blue{fill:#005e95}.svg-icon-purple{fill:#9081bc}.svg-icon-orange{fill:#d17e21}.svg-icon-gray{fill:#959595}.svg-icon-red{fill:#de2900}.esri-icon-yellow:before,.icon-ui-yellow:before{color:#fad817}.esri-icon-green:before,.icon-ui-green:before{color:#5a9359}.esri-icon-blue:before,.icon-ui-blue:before{color:#0079c1}.esri-icon-light-blue:before,.icon-ui-light-blue:before{color:#56a5d8}.esri-icon-dark-blue:before,.icon-ui-dark-blue:before{color:#005e95}.esri-icon-purple:before,.icon-ui-purple:before{color:#9081bc}.esri-icon-orange:before,.icon-ui-orange:before{color:#d17e21}.esri-icon-gray:before,.icon-ui-gray:before{color:#959595}.esri-icon-red:before,.icon-ui-red:before{color:#de2900}[class*="icon-social-"]{background-color:rgba(0,0,0,0.45);width:30px;height:30px;display:inline-block;background-repeat:no-repeat;vertical-align:middle;-webkit-transition:background-color 200ms linear;transition:background-color 200ms linear}[class*="icon-social-"]:hover{-webkit-transition:background-color 200ms linear;transition:background-color 200ms linear}.icon-social-contact{background-image:url("../img/icons/social/contact.svg")}.icon-social-contact:hover{background-color:#8EC449}.icon-social-facebook{background-image:url("../img/icons/social/facebook.svg")}.icon-social-facebook:hover{background-color:#3D5A96}.icon-social-geonet{background-image:url("../img/icons/social/geonet.svg")}.icon-social-geonet:hover{background-color:#127BC0}.icon-social-github{background-image:url("../img/icons/social/github.svg")}.icon-social-github:hover{background-color:#171515}.icon-social-google-plus{background-image:url("../img/icons/social/google-plus.svg")}.icon-social-google-plus:hover{background-color:#DD4C3C}.icon-social-instagram{background-image:url("../img/icons/social/instagram.svg")}.icon-social-instagram:hover{background-color:#DA3075}.icon-social-linkedin{background-image:url("../img/icons/social/linkedin.svg")}.icon-social-linkedin:hover{background-color:#127CB3}.icon-social-pinterest{background-image:url("../img/icons/social/pinterest.svg")}.icon-social-pinterest:hover{background-color:#BB0F23}.icon-social-rss{background-image:url("../img/icons/social/rss.svg")}.icon-social-rss:hover{background-color:#FD8023}.icon-social-share{background-image:url("../img/icons/social/share.svg")}.icon-social-share:hover{background-color:#1EBD21}.icon-social-twitter{background-image:url("../img/icons/social/twitter.svg")}.icon-social-twitter:hover{background-color:#59ADEB}.icon-social-youtube{background-image:url("../img/icons/social/youtube.svg")}.icon-social-youtube:hover{background-color:#CF2529}.esri-logo{margin:0.375rem;content:"";display:inline-block;background-repeat:no-repeat;background-position:center;background-color:transparent;min-height:30px;min-width:70px;line-height:0;background-size:100% 100%;background-image:url("../img/logo/esri-logo.svg")}.esri-logo-reverse{margin:0.375rem;content:"";display:inline-block;background-repeat:no-repeat;background-position:center;background-color:transparent;min-height:30px;min-width:70px;line-height:0;background-size:100% 100%;background-image:url("../img/logo/esri-logo.svg");background-image:url("../img/logo/esri-logo-reversed.svg")}.esri-logo-condensed{margin-left:0;margin-right:0;margin-bottom:-0.125rem;margin-top:-0.135rem}.btn{position:relative;display:inline-block;padding:0.375rem 1rem;width:auto;color:#fff;border:1px solid #0079c1;border-radius:0;background-color:#0079c1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.05s linear;transition:all 0.05s linear;cursor:pointer;font-size:0.9375rem;line-height:1.5}.btn:hover{text-decoration:none;color:#fff;background-color:#005e95;border-color:#005e95}.btn-transparent{background:none;color:#0079c1;border:none}.btn-transparent:hover{color:#005e95;background:none;text-decoration:underline}.btn-clear{color:#0079c1;background:#fff;border-color:#0079c1}.btn-clear:hover{color:#fff;background:#005e95;border-color:#005e95}.btn-clear-white{background:none;color:#fff;border:1px solid #fff}.btn-clear-white:hover{color:#959595;background:#fff;border-color:#fff}.btn-small{font-size:0.875rem;line-height:1.5;padding:0.28125rem 0.75rem}.btn-large{font-size:1rem;line-height:1.5;padding:0.5rem 1rem}.btn-fill{width:100%;text-align:center}.btn-half{width:50%;text-align:center}.btn-grouped{float:left}html[dir="rtl"] .btn-grouped{float:right}.btn-grouped + .btn-grouped{margin-left:1px}html[dir="rtl"] .btn-grouped + .btn-grouped{margin-left:0;margin-right:1px}.btn-grouped:last-of-type{float:none}.btn-grouped.btn-half{margin-left:0}.btn-white{background:#fff;color:#4c4c4c;border:1px solid #fff}.btn-white:hover{color:#4c4c4c;background:#efefef;border-color:#efefef}.btn-red{color:#de2900;background:transparent;border-color:#de2900}.btn-red:hover{color:#fff;background:#ab3c16;border-color:#ab3c16}.btn-green{background-color:#5a9359;border-color:#5a9359}.btn-green:hover{background-color:#338033;border-color:#338033}.btn-link{-webkit-appearance:none;font-size:1rem;line-height:1.5;cursor:pointer;padding:0;border:none;color:#0079c1;background:transparent}.btn-link:hover{text-decoration:underline}.btn:disabled,.btn-disabled,button[disabled]{cursor:not-allowed;pointer-events:none;opacity:0.3}input[type="file"]::-webkit-file-upload-button,::-ms-browse{webkit-appearance:none;position:relative;display:inline-block;padding:0.375rem 1rem;width:auto;color:#fff;border:1px solid #0079c1;border-radius:0;background-color:#0079c1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.05s linear;transition:all 0.05s linear;cursor:pointer;font-size:0.9375rem;line-height:1.5}input[type="file"]::-webkit-file-upload-button:hover,::-ms-browse:hover{text-decoration:none;color:#fff;background-color:#005e95;border-color:#005e95}.label{background-color:#efefef;padding:.25em .5em;border-radius:3px;font-size:.875em;white-space:nowrap}.label-red{background-color:#de2900;color:#fff}.label-yellow{background-color:#efe397;color:#4c4c4c}.label-green{background-color:#338033;color:#fff}.label-blue{background-color:#0079c1;color:#fff}.dropdown{position:relative;display:inline-block}.dropdown.is-active .dropdown-menu{display:block}.dropdown-btn else{cursor:pointer;position:relative}.dropdown-menu{position:absolute;min-width:200px;-webkit-box-shadow:0 0 16px 0 rgba(0,0,0,0.05);-moz-box-shadow:0 0 16px 0 rgba(0,0,0,0.05);box-shadow:0 0 16px 0 rgba(0,0,0,0.05);z-index:1000;display:none;overflow:auto}.dropdown-menu.dropdown-right{right:0;left:auto}html[dir="rtl"] .dropdown-menu.dropdown-right{right:auto;left:0}.dropdown-title{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0.5rem;font-size:0.875rem;line-height:1.5;color:#6e6e6e;background-color:#fff;border-bottom:none;text-align:left;border-left:none;border-right:none;border-top:1px solid #efefef;white-space:nowrap;cursor:pointer;width:100%;background-color:#f8f8f8;cursor:auto}html[dir="rtl"] .dropdown-title{text-align:right}.dropdown-title:hover{background-color:#f8f8f8;text-decoration:none;color:#6e6e6e}.dropdown-title.is-active,.dropdown-title:focus{text-indent:-3px;border-left:3px solid #0079c1}html[dir="rtl"] .dropdown-title.is-active,html[dir="rtl"] .dropdown-title:focus{border-left:none;border-right:3px solid #0079c1}.dropdown-link{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0.5rem;font-size:0.875rem;line-height:1.5;color:#6e6e6e;background-color:#fff;border-bottom:none;text-align:left;border-left:none;border-right:none;border-top:1px solid #efefef;white-space:nowrap;cursor:pointer;width:100%}html[dir="rtl"] .dropdown-link{text-align:right}.dropdown-link:hover{background-color:#f8f8f8;text-decoration:none;color:#6e6e6e}.dropdown-link.is-active,.dropdown-link:focus{text-indent:-3px;border-left:3px solid #0079c1}html[dir="rtl"] .dropdown-link.is-active,html[dir="rtl"] .dropdown-link:focus{border-left:none;border-right:3px solid #0079c1}.breadcrumbs{font-size:0.875rem;line-height:1.5;color:#6e6e6e}.crumb{color:#6e6e6e;float:left}html[dir="rtl"] .crumb{float:right}.crumb:before{content:"/";color:#6e6e6e;font-weight:400;display:inline-block;padding:0 .5rem}.crumb.is-active{font-weight:700}.breadcrumbs-white .crumb{color:#fff;color:#fff}.breadcrumbs-white .crumb:hover{color:#efefef}.breadcrumbs-white .crumb:before{color:#fff}.crumb:first-child:before{display:none}.tooltip{position:relative;cursor:pointer}.tooltip:after{content:attr(aria-label);position:absolute;z-index:1000000;display:none;padding:0.375rem 0.75rem;font-size:0.875rem;line-height:1.5;color:#fff;text-align:center;word-wrap:break-word;white-space:pre;pointer-events:none;background:rgba(0,0,0,0.75);border-radius:3px}.tooltip:before{content:"";position:absolute;z-index:1000001;display:none;width:0;height:0;color:rgba(0,0,0,0.75);pointer-events:none;border:5px solid transparent}.tooltip:hover,.tooltip:active,.tooltip:focus{text-decoration:none}.tooltip:hover:before,.tooltip:hover:after,.tooltip:active:before,.tooltip:active:after,.tooltip:focus:before,.tooltip:focus:after{display:inline-block}.tooltip-multiline:hover:after,.tooltip-multiline:active:after,.tooltip-multiline:focus:after{display:table-cell}.tooltip:after{top:100%;right:50%;margin-top:5px;line-height:1.5}.tooltip:before{top:auto;right:50%;bottom:-5px;margin-right:-5px;border-bottom-color:rgba(0,0,0,0.75)}.tooltip-top:after{top:auto;right:50%;bottom:100%;margin-bottom:5px}.tooltip-top:before{top:-5px;right:50%;bottom:auto;margin-right:-5px;border-top-color:rgba(0,0,0,0.75);border-bottom:5px solid transparent}.tooltip:after,.tooltip-bottom:after{-webkit-transform:translateX(50%);-moz-transform:translateX(50%);-ms-transform:translateX(50%);-o-transform:translateX(50%);transform:translateX(50%)}.tooltip-left:after{top:auto;right:100%;left:auto;margin-right:5px;bottom:50%;margin-bottom:inherit;-webkit-transform:translateY(50%);-moz-transform:translateY(50%);-ms-transform:translateY(50%);-o-transform:translateY(50%);transform:translateY(50%)}html[dir="rtl"] .tooltip-left:after{right:auto;left:100%}html[dir="rtl"] .tooltip-left:after{margin-right:0;margin-left:5px}.tooltip-left:before{top:50%;bottom:50%;left:-5px;right:auto;margin-top:-5px;border-left-color:rgba(0,0,0,0.75);border-bottom:5px solid transparent}html[dir="rtl"] .tooltip-left:before{left:auto;right:-5px}html[dir="rtl"] .tooltip-left:before{border-left-color:transparent;border-right-color:rgba(0,0,0,0.75)}html[dir="rtl"] .tooltip-left:before{margin-right:0}.tooltip-right:after{top:auto;bottom:50%;left:100%;right:auto;margin-left:5px;-webkit-transform:translateY(50%);-moz-transform:translateY(50%);-ms-transform:translateY(50%);-o-transform:translateY(50%);transform:translateY(50%)}html[dir="rtl"] .tooltip-right:after{left:auto;right:100%}html[dir="rtl"] .tooltip-right:after{margin-left:0;margin-right:5px}.tooltip-right:before{top:50%;right:-5px;left:auto;bottom:50%;margin-top:-5px;margin-right:0;border-right-color:rgba(0,0,0,0.75);border-bottom:5px solid transparent}html[dir="rtl"] .tooltip-right:before{right:auto;left:-5px}html[dir="rtl"] .tooltip-right:before{border-right-color:transparent;border-left-color:rgba(0,0,0,0.75)}.tooltip-multiline:after{width:22em;width:-moz-max-content;width:-webkit-max-content;max-width:250px;word-break:break-word;word-wrap:normal;white-space:pre-line;border-collapse:separate}.tooltip-multiline.tooltip-bottom:after,.tooltip-multiline.tooltip-top:after{right:auto;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}.tooltip-multiline.tooltip-left:after,.tooltip-multiline.tooltip-right:after{right:100%}@media screen and (min-width:0\0){.tooltip-multiline:after{width:250px}}.alert{font-size:0.9375rem;line-height:1.5;padding:0.75rem 0.75rem;color:rgba(0,0,0,0.75);background-color:#d2e9f9;position:relative;display:none;z-index:100;max-width:40em;border:1px solid #0079c1;-webkit-box-shadow:0 0 16px 0 rgba(0,0,0,0.05);-moz-box-shadow:0 0 16px 0 rgba(0,0,0,0.05);box-shadow:0 0 16px 0 rgba(0,0,0,0.05);color:#4c4c4c}.alert:hover{color:#323232}.alert.is-active{display:block}.alert a:hover{color:rgba(0,0,0,0.75)}.alert-red{background-color:#f3ded7;border-color:#e4a793}.alert-yellow{background-color:#f3edc7;border-color:#e4d154}.alert-green{background-color:#ddeedb;border-color:#9bc19c}.alert-close{-webkit-appearance:none;font-size:1rem;line-height:1.5;cursor:pointer;padding:0;border:none;color:#0079c1;background:transparent;color:currentColor;position:absolute;right:0.75rem;left:auto}.alert-close:hover{text-decoration:underline}html[dir="rtl"] .alert-close{right:auto;left:0.75rem}.alert-full{max-width:none}.panel{background-color:#f8f8f8;border:1px solid #efefef;padding:0.99rem}.panel:after{content:'';display:table;clear:both}.panel code{background-color:#fff}.panel-black{background-color:#323232;color:#fff;border:1px solid #4c4c4c}.panel-dark{background-color:#595959;color:#fff;border:1px solid #4c4c4c}.panel-white{background-color:#fff;border:1px solid #efefef}.panel-white code{background-color:#f8f8f8}.panel-dark-blue{background-color:#004575;color:#fff;border:1px solid #052942}.panel-blue{background-color:#0079c1;color:#fff;border:1px solid #005e95}.panel-light-blue{color:#323232;background-color:#56a5d8;border:1px solid #0079c1}.panel-no-border{border:none}.panel-no-padding{padding:0}.table{width:100%;background-color:#fff;border-collapse:collapse;border-spacing:0;border:1px solid #ccc;text-align:left;overflow:auto;font-size:0.875rem;line-height:1.5}html[dir="rtl"] .table{text-align:right}.table > thead{background-color:#efefef;border-bottom:1px solid #ccc;font-weight:400;font-style:normal;font-size:1rem;line-height:1.5}.table > tbody{overflow:auto;width:100%}.table > tfoot{background-color:#efefef;border-top:1px solid #ccc}.table th,.table td{font-weight:300;border-left:1px solid #ccc;border-right:1px solid #ccc;padding:0.5rem;text-align:left}html[dir="rtl"] .table th,html[dir="rtl"] .table td{text-align:right}.table tr{border-bottom:1px solid #ccc;text-align:left}.table tr:last-child{border-bottom:none}.table caption{color:#959595;caption-side:bottom;line-height:1.5rem;padding:0.375rem 0.75rem}.table-blue{border:1px solid #0079c1}.table-blue > thead{background-color:#0079c1;border:none;border-bottom:1px solid #0079c1;color:#fff}.table-blue > thead tr:nth-child(even){background-color:#bcdaed;color:#4c4c4c}.table-blue > tfoot{border-top:1px solid #0079c1}.table-blue th,.table-blue td{border-left:1px solid #0079c1;border-right:1px solid #0079c1}.table-blue tr{border-bottom:1px solid #0079c1}.table-plain{border:none}.table-plain > thead,.table-plain > tfoot,.table-plain th,.table-plain td{background-color:transparent;border:none}.table-plain tr{border:none}.table-plain tr:nth-child(even){background-color:transparent}.table-plain tr:nth-child(even) td{background-color:transparent}.table-striped tr:nth-child(even){background-color:#f8f8f8}.table-striped tr:nth-child(even) a{color:#005e95}.table-striped tr:nth-child(even) td{background-color:#f8f8f8}.table-striped.table-blue tr:nth-child(even){background-color:#d2e9f9}.table-striped.table-blue tr:nth-child(even) td{background-color:#d2e9f9}.table-no-table{width:auto;background-color:transparent;border-spacing:0;border:none;text-align:left;overflow:auto;margin-bottom:0}.table-no-table thead,.table-no-table tbody{font-size:1rem;line-height:1.5;border:none;background-color:transparent;overflow:auto;width:100%}.table-no-table th,.table-no-table td{background-color:transparent;border:none}.table-no-table tr{border:none;text-align:left}.input-search,.search-input{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzZlNmU2ZSI+PHBhdGggZD0iTTE0LjY1IDEzLjc0TDkuNzMyIDguODIzQTUuMzg3IDUuMzg3IDAgMSAwIDUuNSAxMC45MDRhNS4zNTggNS4zNTggMCAwIDAgMy4yODgtMS4xNDJsNC45MiA0Ljkyek01LjUgOS4yNWEzLjc1IDMuNzUgMCAxIDEgMy43NS0zLjc1MSAzLjc1MiAzLjc1MiAwIDAgMS0zLjc1IDMuNzV6Ii8+PC9zdmc+Cg==");background-size:1.06667em;background-position:.25em center;background-repeat:no-repeat;padding-left:1.5em}html[dir="rtl"] .input-search,html[dir="rtl"] .search-input{background-position:right .25em center;padding-right:1.5em;padding-left:0.3rem}form{margin:0;padding:0}fieldset{margin:0 0 1.5rem 0;padding:0;border:none;display:block}label{position:relative;display:block;margin:0 0 1.5rem 0}legend{position:relative;display:block;margin-bottom:.25rem}input,select,textarea{position:relative;display:block;height:2.25rem;width:100%;max-width:100%;margin:.25rem 0 0 0;padding:0 0.3rem;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:inherit;font-size:0.9375rem;line-height:1.25rem;color:#4c4c4c;vertical-align:baseline;outline:none;outline-offset:0;background-color:#fff;border:1px solid #a9a9a9;border-radius:0;-webkit-transition:border-color 150ms linear;transition:border-color 150ms linear;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075)}input:disabled,select:disabled,textarea:disabled{opacity:.3;cursor:default}input:focus,select:focus,textarea:focus{border-color:#0079c1;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(81,167,232,0.5)}input{-webkit-appearance:none}textarea{height:auto;padding-top:0.3rem}:placeholder{color:#767676}:input-placeholder{color:#767676}::-webkit-input-placeholder{color:#767676}::-moz-placeholder{color:#767676}:-ms-input-placeholder{color:#767676}.input-minimal{background-color:transparent;border-top:none;border-right:none;border-left:none;border-bottom-color:#ccc;box-shadow:none}.input-minimal:focus{border-bottom-color:#999;box-shadow:none}.input-error{border-color:#c86a4a;padding-right:24px;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeD0iMiIgeT0iMCI+PHBhdGggZmlsbD0iI2M4NmE0YSIgZD0iTTExLjIyNSwwSDQuNjQ4TDAsNC42NXY2LjU3Nmw0LjY0OCw0LjY0OWg2LjU3Nmw0LjY1LTQuNjQ5VjQuNjVMMTEuMjI1LDB6IE05LjA3MSwxMy42MDdINi44MDR2LTIuMjY5aDIuMjY4VjEzLjYwN3ogTTkuMDcxLDkuMDcxSDYuODA0VjMuNDAyaDIuMjY4VjkuMDcxeiIvPjwvc3ZnPg==");background-position:right center;background-repeat:no-repeat}.input-error:focus{border-color:#c86a4a;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(200,106,75,0.5)}.input-success{padding-right:24px;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMjQgMTYiPjxwb2x5Z29uIGZpbGw9IiM1QTkzNTkiIHBvaW50cz0iOC4xODgsMTEuMDgyIDQuMDU5LDYuOTUyIDIuMjU4LDguNzUyIDguMTg4LDE0LjY4MyAxOS43NTQsMy4xMTkgMTcuOTU0LDEuMzE3ICIvPjwvc3ZnPg==");background-position:right center;background-repeat:no-repeat}html[dir="rtl"] .input-error,html[dir="rtl"] .input-success{padding-left:24px;padding-right:0.3rem;background-position:left center}.input-error-message{font-size:0.875rem;line-height:1.5;padding:0.375rem 0.375rem;color:rgba(0,0,0,0.75);background-color:#f3ded7;border:1px solid #e4a793;position:relative;display:none;margin-top:.5rem}.input-error-message:after{content:"";position:absolute;top:-15px;width:0;height:0;pointer-events:none;border:8px solid transparent;border-bottom-color:#f3ded7}.input-error-message:before{content:"";position:absolute;top:-16px;width:0;height:0;pointer-events:none;border:8px solid transparent;border-bottom-color:#e4a793}.input-error-message:after,.input-error-message:before{left:11px;right:auto}html[dir="rtl"] .input-error-message:after,html[dir="rtl"] .input-error-message:before{left:auto;right:11px}.input-error-message.is-active,.input-error-message.is-active:before,.input-error-message.is-active:after{display:inline-block}input[type="file"]{height:auto}input[type="file"]:active{border-color:#0079c1;box-shadow:inset 0 1px 2px rgba(0,0,0,0.075),0 0 5px rgba(81,167,232,0.5)}@supports (-moz-appearance:none){input[type="file"]{padding:0.75rem 0.375rem}}input[type="file"]::-webkit-file-upload-button{position:relative;display:inline-block;padding:0.375rem 1rem;width:auto;color:#fff;border:1px solid #0079c1;border-radius:0;background-color:#0079c1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.05s linear;transition:all 0.05s linear;cursor:pointer;font-size:0.9375rem;line-height:1.5;color:#0079c1;background:#fff;border-color:#0079c1;font-size:0.875rem;line-height:1.5;padding:0.28125rem 0.75rem;font-family:inherit;margin:.5em 0;-webkit-appearance:none}input[type="file"]::-webkit-file-upload-button:hover{text-decoration:none;color:#fff;background-color:#005e95;border-color:#005e95}input[type="file"]::-webkit-file-upload-button:hover{color:#fff;background:#005e95;border-color:#005e95}::-ms-value{border:none;background-color:transparent}::-ms-browse{position:relative;display:inline-block;padding:0.375rem 1rem;width:auto;color:#fff;border:1px solid #0079c1;border-radius:0;background-color:#0079c1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.05s linear;transition:all 0.05s linear;cursor:pointer;font-size:0.9375rem;line-height:1.5;color:#0079c1;background:#fff;border-color:#0079c1;font-size:0.875rem;line-height:1.5;padding:0.28125rem 0.75rem;font-family:inherit;margin:.5em 0}::-ms-browse:hover{text-decoration:none;color:#fff;background-color:#005e95;border-color:#005e95}::-ms-browse:hover{color:#fff;background:#005e95;border-color:#005e95}input[type='radio'],input[type='checkbox']{float:left;width:1rem;height:1rem;margin-top:.12rem;margin-right:.5rem;margin-left:.125rem;line-height:1.25rem;box-shadow:none;box-sizing:content-box}html[dir="rtl"] input[type='radio'],html[dir="rtl"] input[type='checkbox']{float:right}input[type='radio']:focus,input[type='checkbox']:focus{box-shadow:none;border:none;outline:1px dotted;outline:auto -webkit-focus-ring-color}input[type='checkbox']{-webkit-appearance:checkbox}input[type='radio']{-webkit-appearance:radio;-webkit-border-radius:50%;border-radius:50%}@supports (-ms-ime-align:auto){input[type='radio'],input[type='checkbox']{margin-top:.125rem;margin-right:.5rem}}@supports (-moz-appearance:none){input[type='radio'],input[type='checkbox']{margin-top:.05rem}}@supports (-webkit-overflow-scrolling:touch){input[type='radio'],input[type='checkbox']{margin-top:.1rem;margin-right:0}input[type='radio']:checked,input[type='checkbox']:checked{background-color:#56a5d8;border-color:#196fa6}}html[dir="rtl"] input[type='radio'],html[dir="rtl"] input[type='checkbox']{margin-right:.125rem;margin-left:.5rem}@supports (-ms-ime-align:auto){html[dir="rtl"] input[type='radio'],html[dir="rtl"] input[type='checkbox']{margin-left:.5rem}}@supports (-webkit-overflow-scrolling:touch){html[dir="rtl"] input[type='radio'],html[dir="rtl"] input[type='checkbox']{margin-left:0}}.fieldset-radio label,.fieldset-checkbox label{margin-bottom:.25rem;font-size:0.9375rem;line-height:1.25rem;color:#595959;width:auto}select{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjQsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iMTAwcHgiIGhlaWdodD0iMTAwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxwYXRoIGZpbGw9IiM1OTU5NTkiIGQ9Ik03NS43NDksMzcuNDY2YzAuNDI1LDAuNDI1LDAuNTUyLDEuMDYzLDAuMzIyLDEuNjE4Qzc1Ljg0MSwzOS42MzksNzUuMzAxLDQwLDc0LjY5OSw0MGgtNDkuNA0KCQljLTAuNiwwLTEuMTQzLTAuMzYyLTEuMzcyLTAuOTE3Yy0wLjIzLTAuNTU1LTAuMTAzLTEuMTkzLDAuMzIyLTEuNjE4bDIzLjQ0LTIzLjQ0YzEuMjc2LTEuMjc2LDMuMzQzLTEuMjc2LDQuNjIsMEw3NS43NDksMzcuNDY2DQoJCUw3NS43NDksMzcuNDY2eiBNMjQuMjUsNjIuNTM0Yy0wLjQyNi0wLjQyNS0wLjU1My0xLjA2My0wLjMyMy0xLjYxOGMwLjIzLTAuNTU1LDAuNzctMC45MTYsMS4zNy0wLjkxNkg3NC43DQoJCWMwLjYwMiwwLDEuMTQzLDAuMzU5LDEuMzczLDAuOTE2YzAuMjMsMC41NTUsMC4xMDMsMS4xOTMtMC4zMjIsMS42MThMNTIuMzEsODUuOTc3Yy0xLjI3NSwxLjI3NS0zLjM0NCwxLjI3NC00LjYyLDBMMjQuMjUsNjIuNTM0eg0KCQkiLz4NCjwvZz4NCjwvc3ZnPg0K");background-position:center right;background-repeat:no-repeat;background-size:.9rem;width:auto;padding-right:1.5rem;-webkit-appearance:none;-moz-appearance:none}html[dir="rtl"] select{background-position:center left;padding-left:1.5rem;padding-right:0.3rem}select[multiple]{height:auto;background-image:none;padding:0}select[multiple] option{padding:0.3rem}.select-full{width:100%}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){select::-ms-expand{display:none}select:focus::-ms-value{background:transparent;color:#595959}}.input-group{display:table;margin-top:0.375rem}.input-group-button{width:1%;vertical-align:middle;display:table-cell}.input-group-button .btn,.input-group-button button{height:2.25rem;margin-left:-1px}input.input-group-input,.input-group-input{display:table-cell;position:relative;margin-top:0;width:100%;vertical-align:middle}.radio-group{border:none;padding:0;margin-bottom:1.5rem;font-size:0.9375rem;line-height:1.5}.radio-group:after{content:'';display:table;clear:both}.radio-group-title{font-size:1rem;line-height:1.5;margin-bottom:0}.radio-group-input{opacity:0;position:absolute}.radio-group-input:checked + .radio-group-label{background-color:#d2e9f9;border:1px solid #0079c1;margin-right:0;margin-left:0}.radio-group-input:checked + .radio-group-label + .radio-group-input + .radio-group-label{border-left:none;border-right:1px solid #ccc}html[dir="rtl"] .radio-group-input:checked + .radio-group-label + .radio-group-input + .radio-group-label{border-right:none;border-left:1px solid #ccc}.radio-group-label{display:inline-block;float:left;background-color:#fff;color:#323232;cursor:pointer;text-align:center;text-shadow:none;padding:0.5rem 1rem;line-height:1.25;margin-top:.25rem;margin-right:-1px;margin-bottom:0;border:1px solid #ccc;box-sizing:border-box;height:2.25rem;-webkit-transition:background 0.1s ease-in-out,border-color 0.1s ease-in-out;transition:background 0.1s ease-in-out,border-color 0.1s ease-in-out}html[dir="rtl"] .radio-group-label{float:right;margin-left:-1px;margin-right:0}.loader-bars:before,.loader-bars:after,.loader-bars{background:#0079c1;-webkit-animation:load 0.8s infinite ease-in-out;animation:load 0.8s infinite ease-in-out;width:0.85rem;height:2rem}.loader-bars:before,.loader-bars:after{position:absolute;top:0;content:''}@-webkit-keyframes load{0%,80%,100%{opacity:.75;box-shadow:0 0 #0079c1;height:2rem}40%{opacity:1;box-shadow:0 -0.5rem #0079c1;height:2.5rem}}@keyframes load{0%,80%,100%{opacity:.75;box-shadow:0 0 #0079c1;height:2rem}40%{opacity:1;box-shadow:0 -0.5rem #0079c1;height:2.5rem}}.loader{display:none;position:relative}.loader.is-active{display:block}.loader-bars{text-indent:-9999em;margin:auto;position:absolute;right:calc(50% - 0.425rem);font-size:11px;-webkit-animation-delay:0.16s;animation-delay:0.16s}.loader-bars:before{left:-1.25rem}.loader-bars:after{left:1.25rem;-webkit-animation-delay:0.32s;animation-delay:0.32s}.loader-text{text-align:center;padding-top:4rem}.skip-to-content{opacity:0;float:left;pointer-events:none;margin:4px;padding:1rem;position:absolute;background-color:rgba(0,0,0,0.75);color:#fff;-webkit-transition:150ms linear;transition:150ms linear}.skip-to-content:focus{opacity:1;z-index:999}.card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,0.1),0 0 16px 0 rgba(0,0,0,0.05)}.card-image-wrap{width:100%;position:relative;margin-bottom:0;-webkit-box-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.card-image{width:100%;display:block}.card-image-caption{background:rgba(255,255,255,0.8);color:#4c4c4c;font-style:normal;margin:0;width:100%;box-sizing:border-box;position:absolute;bottom:0;font-size:0.875rem;line-height:1.5;padding:.35rem 1.25rem .35rem 1.25rem}.card-last{margin-bottom:auto}.card-content{padding:1rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;word-wrap:break-word}.card-shaped{box-shadow:none;background:transparent}.card-shaped .card-content{border:1px solid rgba(0,0,0,0.1);box-shadow:0 0 16px 0 rgba(0,0,0,0.05);padding-top:4rem}.card-shaped .card-image-wrap{margin-bottom:-3rem;padding:0 1.25rem;box-sizing:border-box}.card-bar-lightest-blue{border-top:3px solid #d2e9f9}.card-bar-lighter-blue{border-top:3px solid #bcdaed}.card-bar-light-blue{border-top:3px solid #56a5d8}.card-bar-blue{border-top:3px solid #0079c1}.card-bar-dark-blue{border-top:3px solid #005e95}.card-bar-light-green{border-top:3px solid #9bc19c}.card-bar-green{border-top:3px solid #5a9359}.card-bar-dark-green{border-top:3px solid #338033}.card-bar-light-red{border-top:3px solid #e4a793}.card-bar-red{border-top:3px solid #de2900}.card-bar-dark-red{border-top:3px solid #ab3c16}.card-bar-light-orange{border-top:3px solid #e8912e}.card-bar-orange{border-top:3px solid #d17e21}.card-bar-dark-orange{border-top:3px solid #ad6511}.card-bar-light-yellow{border-top:3px solid #efe397}.card-bar-yellow{border-top:3px solid #e4d154}.card-bar-dark-yellow{border-top:3px solid #d9bf2b}.card-bar-light-purple{border-top:3px solid #c4bcdc}.card-bar-purple{border-top:3px solid #9081bc}.card-bar-dark-purple{border-top:3px solid #7461a8}.card-bar-light-brown{border-top:3px solid #d2b38f}.card-bar-brown{border-top:3px solid #a57946}.card-bar-dark-brown{border-top:3px solid #8c5e2a}.card-wide{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.card-wide .card-content{display:block;-webkit-box-flex:1 1 75%;-ms-flex:1 1 75%;flex:1 1 75%}.card-wide-image-wrap{position:relative;top:0;left:0;bottom:0;width:25%;overflow:hidden;margin-bottom:0}.card-wide-image{width:auto;min-width:100%;max-width:none;height:100%;margin:0;display:block;position:absolute}@-webkit-keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fade-out{0%{opacity:1}100%{opacity:0}}@keyframes fade-out{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes in-up{0%{transform:translate3d(0,100%,0)}100%{transform:translate3d(0,0,0)}}@keyframes in-up{0%{transform:translate3d(0,100%,0)}100%{transform:translate3d(0,0,0)}}@-webkit-keyframes in-down{0%{transform:translate3d(0,-100%,0)}100%{transform:translate3d(0,0,0)}}@keyframes in-down{0%{transform:translate3d(0,-100%,0)}100%{transform:translate3d(0,0,0)}}@-webkit-keyframes out-up{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(0,100%,0)}}@keyframes out-up{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(0,100%,0)}}@-webkit-keyframes out-down{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(0,-100%,0)}}@keyframes out-down{0%{transform:translate3d(0,0,0)}100%{transform:translate3d(0,-100%,0)}}.fade-in,.animate-fade-in{opacity:0;-webkit-animation:fade-in ease-in 1;-moz-animation:fade-in ease-in 1;animation:fade-in ease-in 1;-webkit-animation-fill-mode:forwards;-moz-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:0.75s;-moz-animation-duration:0.75s;animation-duration:0.75s}.animate-fade-out{-webkit-animation:fade-out ease-out 1;-moz-animation:fade-out ease-out 1;animation:fade-out ease-out 1;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:0.75s;-moz-animation-duration:0.75s;animation-duration:0.75s}.animate-in-down{-webkit-animation:in-down ease-out 1;-moz-animation:in-down ease-out 1;animation:in-down ease-out 1;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:0.5s;-moz-animation-duration:0.5s;animation-duration:0.5s}.animate-in-up{-webkit-animation:in-up ease-out 1;-moz-animation:in-up ease-out 1;animation:in-up ease-out 1;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:0.5s;-moz-animation-duration:0.5s;animation-duration:0.5s}.animate-out-down{-webkit-animation:out-down ease-in 1;-moz-animation:out-down ease-in 1;animation:out-down ease-in 1;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:0.5s;-moz-animation-duration:0.5s;animation-duration:0.5s}.animate-out-up{-webkit-animation:out-up ease-in 1;-moz-animation:out-up ease-in 1;animation:out-up ease-in 1;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:0.5s;-moz-animation-duration:0.5s;animation-duration:0.5s}input[type="range"]{-webkit-transition:all 0.25s ease;transition:all 0.25s ease;border:1px solid transparent;background-color:transparent;box-shadow:none;margin-top:0;padding:0;z-index:1;cursor:pointer;-webkit-transition:all 0.25s ease;transition:all 0.25s ease}input[type="range"]:hover::-webkit-slider-runnable-track{background-color:#a9a9a9}input[type="range"]:hover::-webkit-slider-thumb{background-color:#fff;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(204,204,204,0.9)}input[type="range"]:hover::-moz-range-track{background-color:#a9a9a9}input[type="range"]:hover::-moz-range-thumb{background-color:#fff;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(204,204,204,0.9)}input[type="range"]:hover::-ms-fill-upper{background-color:#a9a9a9}input[type="range"]:hover::-ms-fill-lower{background-color:#a9a9a9}input[type="range"]:hover::-ms-thumb{background-color:#fff;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(204,204,204,0.9)}input[type="range"]:focus::-webkit-slider-runnable-track,input[type="range"]:active::-webkit-slider-runnable-track{background-color:#a9a9a9}input[type="range"]:focus::-webkit-slider-thumb,input[type="range"]:active::-webkit-slider-thumb{background-color:#007ac2;border-color:#007ac2;outline:none;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}input[type="range"]:focus::-webkit-slider-thumb:hover,input[type="range"]:active::-webkit-slider-thumb:hover{background-color:#196fa6;border-color:#007ac2}input[type="range"]:focus::-moz-range-track,input[type="range"]:active::-moz-range-track{background-color:#a9a9a9}input[type="range"]:focus::-moz-range-thumb,input[type="range"]:active::-moz-range-thumb{background-color:#007ac2;border-color:#007ac2;outline:none;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}input[type="range"]:focus::-moz-range-thumb:hover,input[type="range"]:active::-moz-range-thumb:hover{background-color:#196fa6;border-color:#007ac2}input[type="range"]:focus::-ms-fill-upper,input[type="range"]:active::-ms-fill-upper{background-color:#a9a9a9}input[type="range"]:focus::-ms-fill-lower,input[type="range"]:active::-ms-fill-lower{background-color:#a9a9a9}input[type="range"]:focus::-ms-thumb,input[type="range"]:active::-ms-thumb{background-color:#007ac2;border-color:#007ac2;outline:none;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}input[type="range"]:focus::-ms-thumb:hover,input[type="range"]:active::-ms-thumb:hover{background-color:#196fa6;border-color:#007ac2}input[type="range"]::-webkit-slider-runnable-track{width:100%;height:2px;border-radius:0;z-index:2;background-color:#ccc;-webkit-transition:all 0.25s ease;transition:all 0.25s ease}input[type="range"]::-webkit-slider-thumb{height:18px;width:18px;border-radius:50px;margin-top:-8px;cursor:pointer;background-color:#fff;border:2px solid;border-color:#959595;z-index:3;-webkit-appearance:none;-webkit-transition:all 0.25s ease;transition:all 0.25s ease}input[type="range"]::-webkit-slider-thumb:hover{background-color:#007ac2;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(204,204,204,0.9)}input[type="range"]::-webkit-slider-thumb:focus,input[type="range"]::-webkit-slider-thumb:active{background-color:#196fa6;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}input[type="range"]::-webkit-slider-thumb:focus:hover,input[type="range"]::-webkit-slider-thumb:active:hover{background-color:#196fa6;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}@supports (-webkit-overflow-scrolling:touch){input[type="range"]::-webkit-slider-thumb{height:20px;width:20px;margin-top:-9px}}input[type="range"]::-moz-range-track{width:100%;height:2px;border-radius:0;z-index:2;background-color:#ccc;-webkit-transition:all 0.25s ease;transition:all 0.25s ease}input[type="range"]::-moz-range-thumb{height:18px;width:18px;border-radius:50px;margin-top:-8px;cursor:pointer;background-color:#fff;border:2px solid;border-color:#959595;z-index:3;-webkit-appearance:none;-webkit-transition:all 0.25s ease;transition:all 0.25s ease;height:14px;width:14px}input[type="range"]::-moz-range-thumb:hover{background-color:#007ac2;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(204,204,204,0.9)}input[type="range"]::-moz-range-thumb:focus,input[type="range"]::-moz-range-thumb:active{background-color:#196fa6;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}input[type="range"]::-moz-range-thumb:focus:hover,input[type="range"]::-moz-range-thumb:active:hover{background-color:#196fa6;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}input[type="range"]::-ms-fill-upper{background-color:#ccc}input[type="range"]::-ms-fill-lower{background-color:#ccc}input[type="range"]::-ms-track{width:100%;height:2px;border-radius:0;z-index:2;background-color:#ccc;-webkit-transition:all 0.25s ease;transition:all 0.25s ease;height:2px;border:0 solid transparent;color:transparent}input[type="range"]::-ms-thumb{height:18px;width:18px;border-radius:50px;margin-top:-8px;cursor:pointer;background-color:#fff;border:2px solid;border-color:#959595;z-index:3;-webkit-appearance:none;-webkit-transition:all 0.25s ease;transition:all 0.25s ease;height:14px;width:14px;margin-top:0}input[type="range"]::-ms-thumb:hover{background-color:#007ac2;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(204,204,204,0.9)}input[type="range"]::-ms-thumb:focus,input[type="range"]::-ms-thumb:active{background-color:#196fa6;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}input[type="range"]::-ms-thumb:focus:hover,input[type="range"]::-ms-thumb:active:hover{background-color:#196fa6;border-color:#007ac2;box-shadow:0 0 4px 1px rgba(86,165,216,0.9)}.toggle-switch{display:block;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;tap-highlight-color:transparent}.toggle-switch-input[type]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.toggle-switch-input[type]:hover + .toggle-switch-track{border-color:#ccc;background-color:#e7e7e7}.toggle-switch-input[type]:hover + .toggle-switch-track:after{border-color:#3b8fc4;box-shadow:0 1px 2px 0 rgba(89,89,89,0.2)}.toggle-switch-input[type]:active + .toggle-switch-track{box-shadow:0 0 4px 2px rgba(204,204,204,0.9)}.toggle-switch-input[type]:active + .toggle-switch-track:after{left:1px;right:auto;border-color:#005e95;box-shadow:0 3px 1px 0 rgba(89,89,89,0.2)}html[dir="rtl"] .toggle-switch-input[type]:active + .toggle-switch-track:after{left:auto;right:1px}.toggle-switch-input[type]:checked + .toggle-switch-track{border-color:#005e95;background-color:#0079c1}.toggle-switch-input[type]:checked + .toggle-switch-track:after{right:-1px;left:auto;border-color:#005e95;box-shadow:0 2px 1px 0 rgba(89,89,89,0.2)}html[dir="rtl"] .toggle-switch-input[type]:checked + .toggle-switch-track:after{right:auto;left:-1px}.toggle-switch-input[type]:checked:active + .toggle-switch-track{box-shadow:0 0 4px 2px rgba(108,180,226,0.9)}.toggle-switch-input[type]:checked:active + .toggle-switch-track:after{right:1px;left:auto;border-color:#005e95;box-shadow:0 3px 1px 0 rgba(89,89,89,0.2)}html[dir="rtl"] .toggle-switch-input[type]:checked:active + .toggle-switch-track:after{right:auto;left:1px}.toggle-switch-input[type]:focus + .toggle-switch-track{box-shadow:0 0 4px 2px rgba(204,204,204,0.9)}.toggle-switch-input[type]:focus + .toggle-switch-track:after{border-color:#3b8fc4}.toggle-switch-input[type]:checked:focus + .toggle-switch-track{box-shadow:0 0 4px 2px rgba(108,180,226,0.9)}.toggle-switch-input[type]:checked:focus + .toggle-switch-track:after{border-color:#005e95}.toggle-switch-label{width:calc((100% - 3em) - .5em);padding:0 .1em;vertical-align:top}.toggle-switch-track{position:relative;display:inline-block;vertical-align:top;width:36px;height:20px;top:.05em;background-color:#f4f4f4;border-radius:30px;border:1px solid #ccc;-webkit-transition:all 0.25s ease;transition:all 0.25s ease}.toggle-switch-track:after{position:absolute;display:block;content:'';width:18px;height:18px;top:-1px;left:-1px;right:auto;background-color:#fff;border-radius:30px;border:2px solid #959595;box-shadow:0 1px 1px 0 rgba(89,89,89,0.2);-webkit-transition:all 0.25s ease;transition:all 0.25s ease}html[dir="rtl"] .toggle-switch-track:after{left:auto;right:-1px}@supports (-ms-ime-align:auto){.toggle-switch-track{top:.1em}}@supports (-moz-appearance:none){.toggle-switch-track{top:.1em}}@supports (-webkit-overflow-scrolling:touch){.toggle-switch-track{top:.15em}}.toggle-switch-destructive .toggle-switch-input:hover + .toggle-switch-track:after{border-color:#ab3c16}.toggle-switch-destructive .toggle-switch-input:active + .toggle-switch-track:after{border-color:#8c2907}.toggle-switch-destructive .toggle-switch-input:checked:active + .toggle-switch-track{box-shadow:0 0 4px 2px rgba(200,106,74,0.9)}.toggle-switch-destructive .toggle-switch-input:checked:active + .toggle-switch-track:after{border-color:#8c2907}.toggle-switch-destructive .toggle-switch-input:checked + .toggle-switch-track{background-color:#ab3c16;border-color:#8c2907}.toggle-switch-destructive .toggle-switch-input:checked + .toggle-switch-track:after{border-color:#8c2907}.toggle-switch-destructive .toggle-switch-input:focus + .toggle-switch-track:after{border-color:#ab3c16}.toggle-switch-destructive .toggle-switch-input:checked:focus + .toggle-switch-track{box-shadow:0 0 4px 2px rgba(200,106,74,0.9)}.toggle-switch-destructive .toggle-switch-input:checked:focus + .toggle-switch-track:after{border-color:#8c2907}.top-nav{position:relative;font-weight:400;font-style:normal;border-bottom:1px solid #efefef;background-color:#fff;z-index:100}.top-nav .esri-logo{margin-top:1rem}.top-nav .sign-in{padding-top:1.5rem}.top-nav-title{font-weight:400;font-style:normal;font-size:1.2019rem;line-height:1.5;float:left;margin-right:1.5rem;padding-top:1.125rem;padding-bottom:1.25rem;line-height:1.5rem;color:#4c4c4c}@media screen and (max-width:859px){.top-nav-title{font-size:1.1305rem}}@media screen and (max-width:479px){.top-nav-title{font-size:1.0625rem}}html[dir="rtl"] .top-nav-title{float:right}html[dir="rtl"] .top-nav-title{white-space:nowrap;margin-right:0;margin-left:1.5rem}.top-nav-title:hover{text-decoration:none}.top-nav-list{float:left;padding:0}html[dir="rtl"] .top-nav-list{float:right}.top-nav-list .top-nav-link + .top-nav-link{margin-left:.75em}html[dir="rtl"] .top-nav-list .top-nav-link + .top-nav-link{margin-left:0;margin-right:.75em}.top-nav-list.right{float:right}html[dir="rtl"] .top-nav-list.right{float:left}.top-nav-link{font-size:0.9375rem;line-height:1.5;color:#4c4c4c;padding:1.1625rem 0 calc(1.1625rem - 4px) 0;border:none;border-bottom:4px solid transparent;line-height:1.5rem;display:inline-block;vertical-align:top;cursor:pointer}.top-nav-link:hover,.top-nav-link:focus{color:#0079c1;border-bottom-color:#0079c1;text-decoration:none}.top-nav-link:focus{outline:none}.top-nav-link.is-active{border-bottom-color:#0079c1}.top-nav-flex{display:-webkit-box;display:-ms-flexbox;display:flex}.top-nav-flex-list{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-preferred-size:30%;flex-basis:30%}.top-nav-flex-title{-webkit-box-flex:2;-ms-flex-positive:2;flex-grow:2;text-align:center}.sign-in{float:right;padding-left:0.375rem;margin-top:-0.7rem}html[dir="rtl"] .sign-in{float:left}html[dir="rtl"] .sign-in{padding-left:0;padding-right:0.375rem}.user-nav-name{padding-right:1.5em;color:#4c4c4c}.user-nav-name:hover{text-decoration:none}.user-nav-image{width:1.2rem;height:1.2rem;vertical-align:-0.25rem}.sub-nav{background-color:#efefef}.sub-nav-title{font-size:1.9994rem;line-height:1.35;margin-top:0.75rem;margin-bottom:0.75rem;display:inline-block;line-height:1.25}@media screen and (max-width:859px){.sub-nav-title{font-size:1.7689rem}}@media screen and (max-width:479px){.sub-nav-title{font-size:1.5625rem}}.sub-nav-list{width:100%;float:left}html[dir="rtl"] .sub-nav-list{float:right}.sub-nav-link{padding:.25em .75em;margin:0 .25em 0 0;float:left;font-family:"Avenir Next W01","Avenir Next W00","Avenir Next","Avenir","Helvetica Neue",sans-serif;color:#f8f8f8;font-size:0.9375rem;line-height:1.5;background-color:rgba(0,0,0,0.45);box-sizing:border-box;-webkit-transition:background-color 150ms linear,color 150ms 150ms linear;transition:background-color 150ms linear,color 150ms 150ms linear}html[dir="rtl"] .sub-nav-link{float:right}.sub-nav-link:hover,.sub-nav-link:focus{background-color:rgba(0,0,0,0.3);color:#fff;text-decoration:none;-webkit-background-image:linear-gradient(to top,transparent 94%,#fff 96%,#fff 100%);-moz-background-image:linear-gradient(to top,transparent 94%,#fff 96%,#fff 100%);-o-background-image:linear-gradient(to top,transparent 94%,#fff 96%,#fff 100%);background-image:linear-gradient(to top,transparent 94%,#fff 96%,#fff 100%)}.sub-nav-link.is-active{background-color:#fff;color:#4c4c4c}.third-nav{font-weight:400;font-style:normal;border-bottom:1px solid #efefef;background-color:#fff;padding:0.375rem 0;width:100%}.third-nav-container{position:relative;overflow-x:auto;white-space:nowrap;padding-bottom:15px;margin-bottom:-15px}.third-nav-link{color:#595959;font-size:0.875rem;line-height:1.5;margin-right:1.125rem}html[dir="rtl"] .third-nav-link{white-space:nowrap}.third-nav-link:last-child{margin-right:2.25rem}.third-nav-link.is-active{font-weight:700;font-style:normal}.side-nav,.dropdown-menu,.filter-dropdown-list{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;border:1px solid #efefef;border-top:none;font-weight:400;font-style:normal;background-color:#fff}.side-nav-title{margin:0;padding:0.5rem;font-weight:400;font-style:normal;font-size:0.9375rem;line-height:1.5;background-color:#f8f8f8;border-top:1px solid #efefef}.side-nav-link{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0.5rem;font-size:0.875rem;line-height:1.5;color:#595959;background-color:#fff;border-top:1px solid #efefef;cursor:pointer}.side-nav-link:hover{background-color:#f8f8f8;text-decoration:none;color:#4c4c4c}.side-nav-link.is-active{text-indent:-3px;border-left:3px solid #0079c1}html[dir="rtl"] .side-nav-link.is-active{border-left:none;border-right:3px solid #0079c1}body{display:flex;height:100%;flex-direction:column}.wrapper{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.footer{background-color:#f8f8f8;padding-top:3rem;-webkit-box-flex:0;-ms-flex:none;flex:none}.tab-nav:after{content:'';display:table;clear:both}.tab-title{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:0.875rem;line-height:1.5;-webkit-transition:background,150ms linear;transition:background,150ms linear;padding:0.375rem 0.75rem;float:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#f8f8f8;border:1px solid #ccc;margin-right:-1px;cursor:pointer}.tab-title:focus{outline:none}.tab-title:hover,.tab-title:focus{background-color:#fcfcfc;text-decoration:none;-webkit-background-image:linear-gradient(to top,transparent 94%,#0079c1 96%,#0079c1 100%);-moz-background-image:linear-gradient(to top,transparent 94%,#0079c1 96%,#0079c1 100%);-o-background-image:linear-gradient(to top,transparent 94%,#0079c1 96%,#0079c1 100%);background-image:linear-gradient(to top,transparent 94%,#0079c1 96%,#0079c1 100%)}.tab-title.is-active{border-bottom:1px solid #fff;background-color:#fff}.tab-title.is-active:hover{background-color:#fff}html[dir="rtl"] .tab-title{float:right;margin-right:0;margin-left:-1px}.tab-contents{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #ccc;margin-top:-1px}.tab-section{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#fff;display:none;padding:0.75rem}.tab-section.is-active{display:block}.tab-section pre{margin:0}.tabs-gray .tab-title{background-color:#fff}.tabs-gray .tab-title.is-active{background-color:#f8f8f8;border-bottom:1px solid #f8f8f8}.tabs-gray .tab-section{background-color:#f8f8f8}.tabs-gray pre code{padding:0;border:none;background-color:transparent}.tabs-transparent .tab-title{background-color:transparent;border:1px solid transparent;border-bottom:1px solid #ccc}.tabs-transparent .tab-title:hover{border-bottom:1px solid #ccc}.tabs-transparent .tab-title.is-active{-webkit-transition:backround,150ms linear;transition:backround,150ms linear;background-color:transparent;border:1px solid #ccc;border-bottom:1px solid #fff}.tabs-transparent .tab-contents{border-bottom:none;border-left:none;border-right:none}.tabs-transparent .tab-section{background-color:transparent;padding-left:0;padding-right:0}.tabs-translucent .tab-title{background-color:rgba(255,255,255,0.7);background-image:none;border:none;border-top:2px solid rgba(255,255,255,0.7);color:#4c4c4c;margin-right:2px;margin-bottom:3px;transition:none}.tabs-translucent .tab-title:hover,.tabs-translucent .tab-title:focus{background-color:rgba(255,255,255,0.8);border-top-color:#0079c1;background-image:none}.tabs-translucent .tab-title.is-active{background-image:none;background-color:rgba(255,255,255,0.8);border-top-color:#0079c1;border-bottom:2px solid rgba(255,255,255,0.8);margin-bottom:0}.tabs-translucent .tab-contents{border:none}.tabs-translucent .tab-section{background-color:rgba(255,255,255,0.8)}.tabs-dark .tab-title{background-color:rgba(255,255,255,0.7);background-image:none;border:none;border-top:2px solid rgba(255,255,255,0.7);color:#4c4c4c;margin-right:2px;margin-bottom:3px;transition:none}.tabs-dark .tab-title:hover,.tabs-dark .tab-title:focus{background-color:rgba(255,255,255,0.8);border-top-color:#0079c1;background-image:none}.tabs-dark .tab-title.is-active{background-image:none;background-color:rgba(255,255,255,0.8);border-top-color:#0079c1;border-bottom:2px solid rgba(255,255,255,0.8);margin-bottom:0}.tabs-dark .tab-contents{border:none}.tabs-dark .tab-section{background-color:rgba(255,255,255,0.8)}.tabs-dark .tab-title{background-color:rgba(0,0,0,0.75);color:#fff;border-top:2px solid rgba(0,0,0,0.75)}.tabs-dark .tab-title:hover,.tabs-dark .tab-title:focus{background-color:rgba(0,0,0,0.85);border-top-color:#fff}.tabs-dark .tab-title.is-active{background-color:rgba(0,0,0,0.85);border-top-color:#fff;border-bottom:2px solid transparent}.tabs-dark .tab-section{background-color:rgba(0,0,0,0.85);color:#fff}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;overflow-y:hidden;text-align:center;opacity:0;visibility:hidden;background:rgba(0,0,0,0.75);-webkit-transition:visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);transition:visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);z-index:101}.modal-overlay.is-active{visibility:visible;opacity:1;-webkit-transition-delay:0ms;transition-delay:0ms}.modal-overlay.is-active .modal-content{visibility:visible;opacity:1;-webkit-transition-delay:0ms;transition-delay:0ms;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-content{box-sizing:border-box;max-height:80vh;z-index:102;float:none;text-align:left;background:#fff;padding:1.5rem;overflow-y:auto;-webkit-overflow-scrolling:touch;display:inline-block;-ms-flex:0 1 auto;flex:0 1 auto;opacity:0;visibility:hidden;-webkit-transition:-webkit- transform 300ms cubic-bezier(0.215,0.44,0.42,0.88),visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);-moz-transition:-moz- transform 300ms cubic-bezier(0.215,0.44,0.42,0.88),visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);-o-transition:-o- transform 300ms cubic-bezier(0.215,0.44,0.42,0.88),visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);transition:transform 300ms cubic-bezier(0.215,0.44,0.42,0.88),visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);-webkit-transform:translate3d(0,20px,0);-moz-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);-o-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}html[dir="rtl"] .modal-content{text-align:right}html[dir="rtl"] .modal-content{float:none}.search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;overflow-y:hidden;text-align:center;opacity:0;visibility:hidden;background:rgba(0,0,0,0.75);-webkit-transition:visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);transition:visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);z-index:101;z-index:99;background:#fff;padding:4.5rem 0 1.5rem 0;overflow:auto}.search-overlay.is-active{visibility:visible;opacity:1;-webkit-transition-delay:0ms;transition-delay:0ms}.search-overlay.is-active .modal-content{visibility:visible;opacity:1;-webkit-transition-delay:0ms;transition-delay:0ms;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.search-overlay.is-active{opacity:0.98}.search-overlay.is-active .search-content{visibility:visible;opacity:1;-webkit-transition-delay:0ms;transition-delay:0ms;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.search-content{text-align:left;width:1440px;max-width:96vw;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0.5rem;-webkit-transform:translate3d(0,-20px,0);-moz-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);-o-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);display:inline-block;margin-bottom:3rem;opacity:0;visibility:hidden;-webkit-transition:-webkit- transform 300ms cubic-bezier(0.215,0.44,0.42,0.88),visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);-moz-transition:-moz- transform 300ms cubic-bezier(0.215,0.44,0.42,0.88),visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);-o-transition:-o- transform 300ms cubic-bezier(0.215,0.44,0.42,0.88),visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);transition:transform 300ms cubic-bezier(0.215,0.44,0.42,0.88),visibility 0ms linear 300ms,opacity 300ms cubic-bezier(0.215,0.44,0.42,0.88);-webkit-transform:translate3d(0,20px,0);-moz-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);-o-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}.search-top-nav{font-size:0.9375rem;line-height:1.5;color:#4c4c4c;padding:1.1625rem 0 calc(1.1625rem - 4px) 0;border:none;border-bottom:4px solid transparent;line-height:1.5rem;display:inline-block;vertical-align:top;cursor:pointer;font-size:1rem;line-height:1.5;background-color:transparent;border:none}.search-top-nav:hover,.search-top-nav:focus{color:#0079c1;border-bottom-color:#0079c1;text-decoration:none}.search-top-nav:focus{outline:none}.search-top-nav.is-active{border-bottom-color:#0079c1}.search-top-nav:hover{background-color:transparent}.search-icon-open,.search-icon-close{display:none}.search-icon-open .is-active,.search-icon-close .is-active{display:block}.search-input{background-color:transparent;border-top:none;border-right:none;border-left:none;border-bottom-color:#ccc;box-shadow:none;margin-top:.25em;height:auto;padding-left:1em;background-size:.45em;font-size:2.82715rem;line-height:1.25}.search-input:focus{border-bottom-color:#999;box-shadow:none}.accordion{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;border:1px solid #efefef;border-top:none;font-weight:400;font-style:normal;background-color:#fff}.accordion-section.is-active .accordion-icon .svg-icon{-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}.accordion-section.is-active .accordion-content{display:block}.accordion-title{margin:0;padding:0.5rem;font-weight:400;font-style:normal;font-size:0.9375rem;line-height:1.5;background-color:#f8f8f8;border-top:1px solid #efefef;cursor:pointer}.accordion-title:focus,.accordion-title:hover{-webkit-transition:all,150ms linear;transition:all,150ms linear;background-color:#f4f4f4;outline:none}.accordion-content{display:none}.accordion-icon .svg-icon{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}html[dir="rtl"] .accordion-icon .svg-icon{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.drawer{position:fixed;top:0;right:0;bottom:0;left:0;visibility:hidden;overflow:hidden;opacity:0;background:rgba(0,0,0,0.75);-webkit-transition:visibility 0ms linear 200ms,opacity 200ms linear;transition:visibility 0ms linear 200ms,opacity 200ms linear;z-index:1001}.drawer.is-active{visibility:visible;opacity:1;background-color:rgba(0,0,0,0.75);-webkit-transition-delay:0ms;transition-delay:0ms}.drawer.is-active.drawer-left .drawer-nav{-webkit-transform:translate3d(280px,0,0);-moz-transform:translate3d(280px,0,0);-ms-transform:translate3d(280px,0,0);-o-transform:translate3d(280px,0,0);transform:translate3d(280px,0,0)}html[dir="rtl"] .drawer.is-active.drawer-left .drawer-nav{-webkit-transform:translate3d(-280px,0,0);-moz-transform:translate3d(-280px,0,0);-ms-transform:translate3d(-280px,0,0);-o-transform:translate3d(-280px,0,0);transform:translate3d(-280px,0,0)}.drawer.is-active.drawer-right .drawer-nav{-webkit-transform:translate3d(-280px,0,0);-moz-transform:translate3d(-280px,0,0);-ms-transform:translate3d(-280px,0,0);-o-transform:translate3d(-280px,0,0);transform:translate3d(-280px,0,0)}html[dir="rtl"] .drawer.is-active.drawer-right .drawer-nav{-webkit-transform:translate3d(280px,0,0);-moz-transform:translate3d(280px,0,0);-ms-transform:translate3d(280px,0,0);-o-transform:translate3d(280px,0,0);transform:translate3d(280px,0,0)}.drawer-nav{position:absolute;top:0;height:100%;width:280px;margin:0;padding:0;list-style:none;background:#fff;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:-webkit- transform 200ms cubic-bezier(0.215,0.44,0.42,0.88);-moz-transition:-moz- transform 200ms cubic-bezier(0.215,0.44,0.42,0.88);-o-transition:-o- transform 200ms cubic-bezier(0.215,0.44,0.42,0.88);transition:transform 200ms cubic-bezier(0.215,0.44,0.42,0.88)}.drawer-left .drawer-nav{left:-280px}html[dir="rtl"] .drawer-left .drawer-nav{left:100%}.drawer-right .drawer-nav{left:100%}html[dir="rtl"] .drawer-right .drawer-nav{left:-280px}.drawer-no-overflow{overflow:hidden}input.filter-dropdown-input{margin:1%;width:98%}.filter-dropdown-title{display:inline;padding-bottom:0}.filter-dropdown-action{font-size:0.8125rem;line-height:1.5;float:right;color:#959595;display:none}html[dir="rtl"] .filter-dropdown-action{float:left}.filter-dropdown-action.is-active{display:inline-block}.filter-dropdown-container:after{content:'';display:table;clear:both}.filter-dropdown-list{position:absolute;min-width:200px;-webkit-box-shadow:0 0 16px 0 rgba(0,0,0,0.05);-moz-box-shadow:0 0 16px 0 rgba(0,0,0,0.05);box-shadow:0 0 16px 0 rgba(0,0,0,0.05);z-index:1000;display:none;overflow:auto;background-color:#f8f8f8;border-top:1px solid #efefef;max-width:100%;width:100%}.filter-dropdown-list.dropdown-right{right:0;left:auto}html[dir="rtl"] .filter-dropdown-list.dropdown-right{right:auto;left:0}.filter-dropdown-list.is-active{display:block}.filter-dropdown-inner-list{max-height:13.5rem;overflow:auto;border-top:1px solid #efefef;background-color:#fff}.filter-dropdown-link{position:relative;display:block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0.5rem 2.25rem;font-size:0.875rem;line-height:1.5;color:#6e6e6e;border-top:1px solid #efefef}.filter-dropdown-link:first-child{border-top:none}.filter-dropdown-link:hover{text-decoration:none;color:#828282}.filter-dropdown-link:hover .filter-link-check{opacity:1;visibility:visible}.filter-dropdown-link.is-active{color:#4c4c4c}.filter-dropdown-link.is-active .filter-link-close{opacity:1;visibility:visible}.filter-dropdown-link.is-active .filter-link-check{fill:#5a9359;opacity:1;visibility:visible}.filter-dropdown-link.is-active:hover .filter-link-close{fill:#de2900}.filter-link-close{opacity:0;visibility:hidden;margin-top:4px;position:absolute;right:10px;left:auto}html[dir="rtl"] .filter-link-close{right:auto;left:10px}.filter-link-check{opacity:0;visibility:hidden;margin-top:3px;position:absolute;left:10px;right:auto}html[dir="rtl"] .filter-link-check{left:auto;right:10px}.filter-dropdown-active{background-color:#efefef;padding:.25em .5em;border-radius:3px;font-size:.875em;white-space:nowrap;font-size:0.875rem;line-height:1.5;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:inline-block;padding:0.5rem 0.3rem 0.33333rem 0.75rem;margin-right:0.25rem;margin-top:0.25rem;color:#6e6e6e}html[dir="rtl"] .filter-dropdown-active{padding:0.5rem 0.75rem 0.33333rem 0.3rem}.filter-dropdown-remove{display:inline-block;vertical-align:middle;position:relative;top:-1px}.filter-dropdown-remove .svg-icon{display:block;padding:0.3rem 0.375rem;cursor:pointer;position:relative;color:#6e6e6e}.filter-dropdown-remove:hover{text-decoration:none}.filter-dropdown-remove:hover .svg-icon{color:#de2900}.is-hidden{display:none!important}.link-red{color:#de2900}.link-red:hover{color:#ab3c16}.link-green{color:#5a9359}.link-green:hover{color:#338033}.link-light-blue{color:#bcdaed}.link-light-blue:hover{color:#56a5d8}.link-blue{color:#0079c1}.link-blue:hover{color:#005e95}.link-dark-blue{color:#005e95}.link-dark-blue:hover{color:#052942}.link-white{color:#fff}.link-white:hover{color:#efefef}.link-light-gray{color:#a9a9a9}.link-light-gray:hover{color:#959595}.link-dark-gray{color:#828282}.link-dark-gray:hover{color:#6e6e6e}.link-darker-gray{color:#6e6e6e}.link-darker-gray:hover{color:#595959}.link-darkest-gray,.third-nav-link.is-active:hover{color:#595959}.link-darkest-gray:hover,.third-nav-link.is-active:hover{color:#4c4c4c}.link-off-black{color:#4c4c4c}.link-off-black:hover{color:#323232}.text-red{color:#de2900}.text-green{color:#5a9359}.text-blue{color:#0079c1}.text-white{color:#fff}.text-light-gray{color:#a9a9a9}.text-dark-gray{color:#828282}.text-darker-gray{color:#6e6e6e}.text-darkest-gray{color:#595959}.text-off-black{color:#4c4c4c}.text-rule{border-bottom:1px solid #ccc}.text-inline{display:inline}.text-center{text-align:center}.text-left{text-align:left}html[dir="rtl"] .text-left{text-align:right}.text-right{text-align:right}html[dir="rtl"] .text-right{text-align:left}.text-light{opacity:0.66}.text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-numbered{counter-reset:li;list-style:none;position:relative;margin-left:0;margin-right:0;padding:0 0 1em 0}.list-numbered > li{padding:0.3em .25em .25em 2.5em;position:relative;margin-top:0.75em;margin-left:0}html[dir="rtl"] .list-numbered > li{padding:0.3em 2.5em .25em .25em}.list-numbered > li:before{font-weight:300;font-style:normal;content:counter(li);counter-increment:li;position:absolute;top:0;left:0;right:auto;height:100%;height:calc(100% - .3em);width:0.75em;padding:.3em .5em 0 0;color:#959595;font-size:1.2019rem;line-height:1.5;line-height:1;text-align:right;border-right:2px solid #ccc}html[dir="rtl"] .list-numbered > li:before{left:auto;right:0}@media screen and (max-width:859px){.list-numbered > li:before{font-size:1.1305rem}}@media screen and (max-width:479px){.list-numbered > li:before{font-size:1.0625rem}}html[dir="rtl"] .list-numbered > li:before{border-right:none;border-left:2px solid #ccc}html[dir="rtl"] .list-numbered > li:before{padding:0 0 0 .5em;text-align:left}.list-numbered > li:after{content:".";display:block;clear:left;visibility:hidden;line-height:0;height:0}.list-numbered .list-numbered{margin-bottom:0;padding-bottom:0}.list-numbered .list-numbered > li:before{content:counter(li,lower-alpha)}.list-plain{padding:0;margin:0.375rem 0}.list-plain li{list-style-type:none;margin-left:0}.font-size--3{font-size:0.8125rem;line-height:1.5}.font-size--2{font-size:0.875rem;line-height:1.5}.font-size--1{font-size:0.9375rem;line-height:1.5}.font-size-0{font-size:1rem;line-height:1.5}.font-size-1{font-size:1.2019rem;line-height:1.5}@media screen and (max-width:859px){.font-size-1{font-size:1.1305rem}}@media screen and (max-width:479px){.font-size-1{font-size:1.0625rem}}.font-size-2{font-size:1.414rem;line-height:1.5}@media screen and (max-width:859px){.font-size-2{font-size:1.33rem}}@media screen and (max-width:479px){.font-size-2{font-size:1.25rem}}.font-size-3{font-size:1.69949rem;line-height:1.3875}@media screen and (max-width:859px){.font-size-3{font-size:1.50357rem}}@media screen and (max-width:479px){.font-size-3{font-size:1.32812rem}}.font-size-4{font-size:1.9994rem;line-height:1.35}@media screen and (max-width:859px){.font-size-4{font-size:1.7689rem}}@media screen and (max-width:479px){.font-size-4{font-size:1.5625rem}}.font-size-5{font-size:2.40307rem;line-height:1.35}@media screen and (max-width:859px){.font-size-5{font-size:1.99974rem}}@media screen and (max-width:479px){.font-size-5{font-size:1.66016rem}}.font-size-6{font-size:2.82715rem;line-height:1.3125}@media screen and (max-width:859px){.font-size-6{font-size:2.35264rem}}@media screen and (max-width:479px){.font-size-6{font-size:1.95312rem}}.font-size-7{font-size:3.39795rem;line-height:1.3125}@media screen and (max-width:859px){.font-size-7{font-size:2.65966rem}}@media screen and (max-width:479px){.font-size-7{font-size:2.0752rem}}.font-size-8{font-size:3.99758rem;line-height:1.275}@media screen and (max-width:859px){.font-size-8{font-size:3.12901rem}}@media screen and (max-width:479px){.font-size-8{font-size:2.44141rem}}.leader-half{margin-top:0.75rem}.leader-quarter{margin-top:0.375rem}.trailer-half{margin-bottom:0.75rem}.trailer-quarter{margin-bottom:0.375rem}.padding-leader-half{padding-top:0.75rem}.padding-leader-quarter{padding-top:0.375rem}.padding-trailer-half{padding-bottom:0.75rem}.padding-trailer-quarter{padding-bottom:0.375rem}.leader-0{margin-top:0rem}.trailer-0{margin-bottom:0rem}.padding-leader-0{padding-top:0rem}.padding-trailer-0{padding-bottom:0rem}.leader-1{margin-top:1.5rem}.trailer-1{margin-bottom:1.5rem}.padding-leader-1{padding-top:1.5rem}.padding-trailer-1{padding-bottom:1.5rem}.leader-2{margin-top:3rem}.trailer-2{margin-bottom:3rem}.padding-leader-2{padding-top:3rem}.padding-trailer-2{padding-bottom:3rem}.leader-3{margin-top:4.5rem}.trailer-3{margin-bottom:4.5rem}.padding-leader-3{padding-top:4.5rem}.padding-trailer-3{padding-bottom:4.5rem}.leader-4{margin-top:6rem}.trailer-4{margin-bottom:6rem}.padding-leader-4{padding-top:6rem}.padding-trailer-4{padding-bottom:6rem}.leader-5{margin-top:7.5rem}.trailer-5{margin-bottom:7.5rem}.padding-leader-5{padding-top:7.5rem}.padding-trailer-5{padding-bottom:7.5rem}.leader-6{margin-top:9rem}.trailer-6{margin-bottom:9rem}.padding-leader-6{padding-top:9rem}.padding-trailer-6{padding-bottom:9rem}@media screen and (min-width:1440px){.large-leader-half{margin-top:0.75rem}.large-leader-quarter{margin-top:0.375rem}.large-trailer-half{margin-bottom:0.75rem}.large-trailer-quarter{margin-bottom:0.375rem}.large-padding-leader-half{padding-top:0.75rem}.large-padding-leader-quarter{padding-top:0.375rem}.large-padding-trailer-half{padding-bottom:0.75rem}.large-padding-trailer-quarter{padding-bottom:0.375rem}.large-leader-0{margin-top:0rem}.large-trailer-0{margin-bottom:0rem}.large-padding-leader-0{padding-top:0rem}.large-padding-trailer-0{padding-bottom:0rem}.large-leader-1{margin-top:1.5rem}.large-trailer-1{margin-bottom:1.5rem}.large-padding-leader-1{padding-top:1.5rem}.large-padding-trailer-1{padding-bottom:1.5rem}.large-leader-2{margin-top:3rem}.large-trailer-2{margin-bottom:3rem}.large-padding-leader-2{padding-top:3rem}.large-padding-trailer-2{padding-bottom:3rem}.large-leader-3{margin-top:4.5rem}.large-trailer-3{margin-bottom:4.5rem}.large-padding-leader-3{padding-top:4.5rem}.large-padding-trailer-3{padding-bottom:4.5rem}.large-leader-4{margin-top:6rem}.large-trailer-4{margin-bottom:6rem}.large-padding-leader-4{padding-top:6rem}.large-padding-trailer-4{padding-bottom:6rem}.large-leader-5{margin-top:7.5rem}.large-trailer-5{margin-bottom:7.5rem}.large-padding-leader-5{padding-top:7.5rem}.large-padding-trailer-5{padding-bottom:7.5rem}.large-leader-6{margin-top:9rem}.large-trailer-6{margin-bottom:9rem}.large-padding-leader-6{padding-top:9rem}.large-padding-trailer-6{padding-bottom:9rem}}@media screen and (max-width:859px){.tablet-leader-half{margin-top:0.75rem}.tablet-leader-quarter{margin-top:0.375rem}.tablet-trailer-half{margin-bottom:0.75rem}.tablet-trailer-quarter{margin-bottom:0.375rem}.tablet-padding-leader-half{padding-top:0.75rem}.tablet-padding-leader-quarter{padding-top:0.375rem}.tablet-padding-trailer-half{padding-bottom:0.75rem}.tablet-padding-trailer-quarter{padding-bottom:0.375rem}.tablet-leader-0{margin-top:0rem}.tablet-trailer-0{margin-bottom:0rem}.tablet-padding-leader-0{padding-top:0rem}.tablet-padding-trailer-0{padding-bottom:0rem}.tablet-leader-1{margin-top:1.5rem}.tablet-trailer-1{margin-bottom:1.5rem}.tablet-padding-leader-1{padding-top:1.5rem}.tablet-padding-trailer-1{padding-bottom:1.5rem}.tablet-leader-2{margin-top:3rem}.tablet-trailer-2{margin-bottom:3rem}.tablet-padding-leader-2{padding-top:3rem}.tablet-padding-trailer-2{padding-bottom:3rem}.tablet-leader-3{margin-top:4.5rem}.tablet-trailer-3{margin-bottom:4.5rem}.tablet-padding-leader-3{padding-top:4.5rem}.tablet-padding-trailer-3{padding-bottom:4.5rem}.tablet-leader-4{margin-top:6rem}.tablet-trailer-4{margin-bottom:6rem}.tablet-padding-leader-4{padding-top:6rem}.tablet-padding-trailer-4{padding-bottom:6rem}.tablet-leader-5{margin-top:7.5rem}.tablet-trailer-5{margin-bottom:7.5rem}.tablet-padding-leader-5{padding-top:7.5rem}.tablet-padding-trailer-5{padding-bottom:7.5rem}.tablet-leader-6{margin-top:9rem}.tablet-trailer-6{margin-bottom:9rem}.tablet-padding-leader-6{padding-top:9rem}.tablet-padding-trailer-6{padding-bottom:9rem}}@media screen and (max-width:479px){.phone-leader-half{margin-top:0.75rem}.phone-leader-quarter{margin-top:0.375rem}.phone-trailer-half{margin-bottom:0.75rem}.phone-trailer-quarter{margin-bottom:0.375rem}.phone-padding-leader-half{padding-top:0.75rem}.phone-padding-leader-quarter{padding-top:0.375rem}.phone-padding-trailer-half{padding-bottom:0.75rem}.phone-padding-trailer-quarter{padding-bottom:0.375rem}.phone-leader-0{margin-top:0rem}.phone-trailer-0{margin-bottom:0rem}.phone-padding-leader-0{padding-top:0rem}.phone-padding-trailer-0{padding-bottom:0rem}.phone-leader-1{margin-top:1.5rem}.phone-trailer-1{margin-bottom:1.5rem}.phone-padding-leader-1{padding-top:1.5rem}.phone-padding-trailer-1{padding-bottom:1.5rem}.phone-leader-2{margin-top:3rem}.phone-trailer-2{margin-bottom:3rem}.phone-padding-leader-2{padding-top:3rem}.phone-padding-trailer-2{padding-bottom:3rem}.phone-leader-3{margin-top:4.5rem}.phone-trailer-3{margin-bottom:4.5rem}.phone-padding-leader-3{padding-top:4.5rem}.phone-padding-trailer-3{padding-bottom:4.5rem}.phone-leader-4{margin-top:6rem}.phone-trailer-4{margin-bottom:6rem}.phone-padding-leader-4{padding-top:6rem}.phone-padding-trailer-4{padding-bottom:6rem}.phone-leader-5{margin-top:7.5rem}.phone-trailer-5{margin-bottom:7.5rem}.phone-padding-leader-5{padding-top:7.5rem}.phone-padding-trailer-5{padding-bottom:7.5rem}.phone-leader-6{margin-top:9rem}.phone-trailer-6{margin-bottom:9rem}.phone-padding-leader-6{padding-top:9rem}.phone-padding-trailer-6{padding-bottom:9rem}}html:not([dir="rtl"]) .padding-left-quarter{padding-left:0.25rem}html[dir="rtl"] .padding-left-quarter{padding-right:0.25rem}html:not([dir="rtl"]) .padding-right-quarter{padding-right:0.25rem}html[dir="rtl"] .padding-right-quarter{padding-left:0.25rem}html:not([dir="rtl"]) .padding-left-third{padding-left:0.33333rem}html[dir="rtl"] .padding-left-third{padding-right:0.33333rem}html:not([dir="rtl"]) .padding-right-third{padding-right:0.33333rem}html[dir="rtl"] .padding-right-third{padding-left:0.33333rem}html:not([dir="rtl"]) .padding-left-half{padding-left:0.5rem}html[dir="rtl"] .padding-left-half{padding-right:0.5rem}html:not([dir="rtl"]) .padding-right-half{padding-right:0.5rem}html[dir="rtl"] .padding-right-half{padding-left:0.5rem}html:not([dir="rtl"]) .padding-left-0{padding-left:0rem}html[dir="rtl"] .padding-left-0{padding-right:0rem}html:not([dir="rtl"]) .padding-right-0{padding-right:0rem}html[dir="rtl"] .padding-right-0{padding-left:0rem}html:not([dir="rtl"]) .padding-left-1{padding-left:1rem}html[dir="rtl"] .padding-left-1{padding-right:1rem}html:not([dir="rtl"]) .padding-right-1{padding-right:1rem}html[dir="rtl"] .padding-right-1{padding-left:1rem}html:not([dir="rtl"]) .padding-left-2{padding-left:2rem}html[dir="rtl"] .padding-left-2{padding-right:2rem}html:not([dir="rtl"]) .padding-right-2{padding-right:2rem}html[dir="rtl"] .padding-right-2{padding-left:2rem}html:not([dir="rtl"]) .padding-left-3{padding-left:3rem}html[dir="rtl"] .padding-left-3{padding-right:3rem}html:not([dir="rtl"]) .padding-right-3{padding-right:3rem}html[dir="rtl"] .padding-right-3{padding-left:3rem}html:not([dir="rtl"]) .padding-left-4{padding-left:4rem}html[dir="rtl"] .padding-left-4{padding-right:4rem}html:not([dir="rtl"]) .padding-right-4{padding-right:4rem}html[dir="rtl"] .padding-right-4{padding-left:4rem}html:not([dir="rtl"]) .margin-left-quarter{margin-left:0.25rem}html[dir="rtl"] .margin-left-quarter{margin-right:0.25rem}html:not([dir="rtl"]) .margin-right-quarter{margin-right:0.25rem}html[dir="rtl"] .margin-right-quarter{margin-left:0.25rem}html:not([dir="rtl"]) .margin-left-third{margin-left:0.33333rem}html[dir="rtl"] .margin-left-third{margin-right:0.33333rem}html:not([dir="rtl"]) .margin-right-third{margin-right:0.33333rem}html[dir="rtl"] .margin-right-third{margin-left:0.33333rem}html:not([dir="rtl"]) .margin-left-half{margin-left:0.5rem}html[dir="rtl"] .margin-left-half{margin-right:0.5rem}html:not([dir="rtl"]) .margin-right-half{margin-right:0.5rem}html[dir="rtl"] .margin-right-half{margin-left:0.5rem}html:not([dir="rtl"]) .margin-left-0{margin-left:0rem}html[dir="rtl"] .margin-left-0{margin-right:0rem}html:not([dir="rtl"]) .margin-right-0{margin-right:0rem}html[dir="rtl"] .margin-right-0{margin-left:0rem}html:not([dir="rtl"]) .margin-left-1{margin-left:1rem}html[dir="rtl"] .margin-left-1{margin-right:1rem}html:not([dir="rtl"]) .margin-right-1{margin-right:1rem}html[dir="rtl"] .margin-right-1{margin-left:1rem}html:not([dir="rtl"]) .margin-left-2{margin-left:2rem}html[dir="rtl"] .margin-left-2{margin-right:2rem}html:not([dir="rtl"]) .margin-right-2{margin-right:2rem}html[dir="rtl"] .margin-right-2{margin-left:2rem}html:not([dir="rtl"]) .margin-left-3{margin-left:3rem}html[dir="rtl"] .margin-left-3{margin-right:3rem}html:not([dir="rtl"]) .margin-right-3{margin-right:3rem}html[dir="rtl"] .margin-right-3{margin-left:3rem}html:not([dir="rtl"]) .margin-left-4{margin-left:4rem}html[dir="rtl"] .margin-left-4{margin-right:4rem}html:not([dir="rtl"]) .margin-right-4{margin-right:4rem}html[dir="rtl"] .margin-right-4{margin-left:4rem}@media screen and (max-width:859px){html:not([dir="rtl"]) .tablet-gutter-left-0{padding-left:0rem}html[dir="rtl"] .tablet-gutter-left-0{padding-right:0rem}html:not([dir="rtl"]) .tablet-gutter-right-0{padding-right:0rem}html[dir="rtl"] .tablet-gutter-right-0{padding-left:0rem}html:not([dir="rtl"]) .tablet-gutter-left-1{padding-left:1rem}html[dir="rtl"] .tablet-gutter-left-1{padding-right:1rem}html:not([dir="rtl"]) .tablet-gutter-right-1{padding-right:1rem}html[dir="rtl"] .tablet-gutter-right-1{padding-left:1rem}html:not([dir="rtl"]) .tablet-gutter-left-2{padding-left:2rem}html[dir="rtl"] .tablet-gutter-left-2{padding-right:2rem}html:not([dir="rtl"]) .tablet-gutter-right-2{padding-right:2rem}html[dir="rtl"] .tablet-gutter-right-2{padding-left:2rem}html:not([dir="rtl"]) .tablet-gutter-left-3{padding-left:3rem}html[dir="rtl"] .tablet-gutter-left-3{padding-right:3rem}html:not([dir="rtl"]) .tablet-gutter-right-3{padding-right:3rem}html[dir="rtl"] .tablet-gutter-right-3{padding-left:3rem}html:not([dir="rtl"]) .tablet-gutter-left-4{padding-left:4rem}html[dir="rtl"] .tablet-gutter-left-4{padding-right:4rem}html:not([dir="rtl"]) .tablet-gutter-right-4{padding-right:4rem}html[dir="rtl"] .tablet-gutter-right-4{padding-left:4rem}}@media screen and (max-width:479px){html:not([dir="rtl"]) .phone-gutter-left-0{padding-left:0rem}html[dir="rtl"] .phone-gutter-left-0{padding-right:0rem}html:not([dir="rtl"]) .phone-gutter-right-0{padding-right:0rem}html[dir="rtl"] .phone-gutter-right-0{padding-left:0rem}html:not([dir="rtl"]) .phone-gutter-left-1{padding-left:1rem}html[dir="rtl"] .phone-gutter-left-1{padding-right:1rem}html:not([dir="rtl"]) .phone-gutter-right-1{padding-right:1rem}html[dir="rtl"] .phone-gutter-right-1{padding-left:1rem}html:not([dir="rtl"]) .phone-gutter-left-2{padding-left:2rem}html[dir="rtl"] .phone-gutter-left-2{padding-right:2rem}html:not([dir="rtl"]) .phone-gutter-right-2{padding-right:2rem}html[dir="rtl"] .phone-gutter-right-2{padding-left:2rem}html:not([dir="rtl"]) .phone-gutter-left-3{padding-left:3rem}html[dir="rtl"] .phone-gutter-left-3{padding-right:3rem}html:not([dir="rtl"]) .phone-gutter-right-3{padding-right:3rem}html[dir="rtl"] .phone-gutter-right-3{padding-left:3rem}html:not([dir="rtl"]) .phone-gutter-left-4{padding-left:4rem}html[dir="rtl"] .phone-gutter-left-4{padding-right:4rem}html:not([dir="rtl"]) .phone-gutter-right-4{padding-right:4rem}html[dir="rtl"] .phone-gutter-right-4{padding-left:4rem}}
\ No newline at end of file
diff --git a/src/style/calcite-web/fonts/calcite-ui.eot b/src/style/calcite-web/fonts/calcite-ui.eot
deleted file mode 100644
index 91095cc..0000000
Binary files a/src/style/calcite-web/fonts/calcite-ui.eot and /dev/null differ
diff --git a/src/style/calcite-web/fonts/calcite-ui.ttf b/src/style/calcite-web/fonts/calcite-ui.ttf
deleted file mode 100644
index 6381e8d..0000000
Binary files a/src/style/calcite-web/fonts/calcite-ui.ttf and /dev/null differ
diff --git a/src/style/calcite-web/fonts/calcite-ui.woff b/src/style/calcite-web/fonts/calcite-ui.woff
deleted file mode 100644
index 2f2b961..0000000
Binary files a/src/style/calcite-web/fonts/calcite-ui.woff and /dev/null differ
diff --git a/src/style/calcite-web/img/favicon.ico b/src/style/calcite-web/img/favicon.ico
deleted file mode 100644
index 9cc0f87..0000000
Binary files a/src/style/calcite-web/img/favicon.ico and /dev/null differ
diff --git a/src/style/calcite-web/img/icons/social/contact.svg b/src/style/calcite-web/img/icons/social/contact.svg
deleted file mode 100644
index 9f91546..0000000
--- a/src/style/calcite-web/img/icons/social/contact.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/facebook.svg b/src/style/calcite-web/img/icons/social/facebook.svg
deleted file mode 100644
index 8180c0d..0000000
--- a/src/style/calcite-web/img/icons/social/facebook.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/geonet.svg b/src/style/calcite-web/img/icons/social/geonet.svg
deleted file mode 100644
index fbcbfe7..0000000
--- a/src/style/calcite-web/img/icons/social/geonet.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/github.svg b/src/style/calcite-web/img/icons/social/github.svg
deleted file mode 100644
index cce7625..0000000
--- a/src/style/calcite-web/img/icons/social/github.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/google-plus.svg b/src/style/calcite-web/img/icons/social/google-plus.svg
deleted file mode 100644
index 624d970..0000000
--- a/src/style/calcite-web/img/icons/social/google-plus.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/instagram.svg b/src/style/calcite-web/img/icons/social/instagram.svg
deleted file mode 100644
index f060b13..0000000
--- a/src/style/calcite-web/img/icons/social/instagram.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/linkedin.svg b/src/style/calcite-web/img/icons/social/linkedin.svg
deleted file mode 100644
index c670517..0000000
--- a/src/style/calcite-web/img/icons/social/linkedin.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/pinterest.svg b/src/style/calcite-web/img/icons/social/pinterest.svg
deleted file mode 100644
index ec597d4..0000000
--- a/src/style/calcite-web/img/icons/social/pinterest.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/rss.svg b/src/style/calcite-web/img/icons/social/rss.svg
deleted file mode 100644
index 2194aa9..0000000
--- a/src/style/calcite-web/img/icons/social/rss.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/share.svg b/src/style/calcite-web/img/icons/social/share.svg
deleted file mode 100644
index 959483b..0000000
--- a/src/style/calcite-web/img/icons/social/share.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/twitter.svg b/src/style/calcite-web/img/icons/social/twitter.svg
deleted file mode 100644
index 2cea55a..0000000
--- a/src/style/calcite-web/img/icons/social/twitter.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/social/youtube.svg b/src/style/calcite-web/img/icons/social/youtube.svg
deleted file mode 100644
index b63d48d..0000000
--- a/src/style/calcite-web/img/icons/social/youtube.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/add-attachment.svg b/src/style/calcite-web/img/icons/ui/add-attachment.svg
deleted file mode 100644
index 4f63b6b..0000000
--- a/src/style/calcite-web/img/icons/ui/add-attachment.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/announcement.svg b/src/style/calcite-web/img/icons/ui/announcement.svg
deleted file mode 100644
index 738d539..0000000
--- a/src/style/calcite-web/img/icons/ui/announcement.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/applications.svg b/src/style/calcite-web/img/icons/ui/applications.svg
deleted file mode 100644
index c7fda6e..0000000
--- a/src/style/calcite-web/img/icons/ui/applications.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/arrow-down-circled.svg b/src/style/calcite-web/img/icons/ui/arrow-down-circled.svg
deleted file mode 100644
index 35bccd5..0000000
--- a/src/style/calcite-web/img/icons/ui/arrow-down-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/arrow-left-circled.svg b/src/style/calcite-web/img/icons/ui/arrow-left-circled.svg
deleted file mode 100644
index 69ba0e6..0000000
--- a/src/style/calcite-web/img/icons/ui/arrow-left-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/arrow-right-circled.svg b/src/style/calcite-web/img/icons/ui/arrow-right-circled.svg
deleted file mode 100644
index 3f90207..0000000
--- a/src/style/calcite-web/img/icons/ui/arrow-right-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/arrow-up-circled.svg b/src/style/calcite-web/img/icons/ui/arrow-up-circled.svg
deleted file mode 100644
index 292da8c..0000000
--- a/src/style/calcite-web/img/icons/ui/arrow-up-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/attachment.svg b/src/style/calcite-web/img/icons/ui/attachment.svg
deleted file mode 100644
index 742f85d..0000000
--- a/src/style/calcite-web/img/icons/ui/attachment.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/authorize.svg b/src/style/calcite-web/img/icons/ui/authorize.svg
deleted file mode 100644
index 19feeb4..0000000
--- a/src/style/calcite-web/img/icons/ui/authorize.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/basemap.svg b/src/style/calcite-web/img/icons/ui/basemap.svg
deleted file mode 100644
index 919fa6e..0000000
--- a/src/style/calcite-web/img/icons/ui/basemap.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/beginning.svg b/src/style/calcite-web/img/icons/ui/beginning.svg
deleted file mode 100644
index 2acee8c..0000000
--- a/src/style/calcite-web/img/icons/ui/beginning.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/blank-map-pin.svg b/src/style/calcite-web/img/icons/ui/blank-map-pin.svg
deleted file mode 100644
index aace4e9..0000000
--- a/src/style/calcite-web/img/icons/ui/blank-map-pin.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/browser.svg b/src/style/calcite-web/img/icons/ui/browser.svg
deleted file mode 100644
index 84fb9be..0000000
--- a/src/style/calcite-web/img/icons/ui/browser.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/calculator.svg b/src/style/calcite-web/img/icons/ui/calculator.svg
deleted file mode 100644
index b6dc852..0000000
--- a/src/style/calcite-web/img/icons/ui/calculator.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/calendar.svg b/src/style/calcite-web/img/icons/ui/calendar.svg
deleted file mode 100644
index f37afb6..0000000
--- a/src/style/calcite-web/img/icons/ui/calendar.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/chart.svg b/src/style/calcite-web/img/icons/ui/chart.svg
deleted file mode 100644
index c1cf62c..0000000
--- a/src/style/calcite-web/img/icons/ui/chart.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/chat.svg b/src/style/calcite-web/img/icons/ui/chat.svg
deleted file mode 100644
index 0ad9122..0000000
--- a/src/style/calcite-web/img/icons/ui/chat.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/check-mark.svg b/src/style/calcite-web/img/icons/ui/check-mark.svg
deleted file mode 100644
index 55b3fcb..0000000
--- a/src/style/calcite-web/img/icons/ui/check-mark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/checkbox-checked.svg b/src/style/calcite-web/img/icons/ui/checkbox-checked.svg
deleted file mode 100644
index 4d65366..0000000
--- a/src/style/calcite-web/img/icons/ui/checkbox-checked.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/checkbox-unchecked.svg b/src/style/calcite-web/img/icons/ui/checkbox-unchecked.svg
deleted file mode 100644
index 0623d9a..0000000
--- a/src/style/calcite-web/img/icons/ui/checkbox-unchecked.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/close-circled.svg b/src/style/calcite-web/img/icons/ui/close-circled.svg
deleted file mode 100644
index 08f629a..0000000
--- a/src/style/calcite-web/img/icons/ui/close-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/close.svg b/src/style/calcite-web/img/icons/ui/close.svg
deleted file mode 100644
index 49e5960..0000000
--- a/src/style/calcite-web/img/icons/ui/close.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/collapse.svg b/src/style/calcite-web/img/icons/ui/collapse.svg
deleted file mode 100644
index 5c4e903..0000000
--- a/src/style/calcite-web/img/icons/ui/collapse.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/collection.svg b/src/style/calcite-web/img/icons/ui/collection.svg
deleted file mode 100644
index d8101ae..0000000
--- a/src/style/calcite-web/img/icons/ui/collection.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/comment.svg b/src/style/calcite-web/img/icons/ui/comment.svg
deleted file mode 100644
index fbc811c..0000000
--- a/src/style/calcite-web/img/icons/ui/comment.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/compass.svg b/src/style/calcite-web/img/icons/ui/compass.svg
deleted file mode 100644
index 0379154..0000000
--- a/src/style/calcite-web/img/icons/ui/compass.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/configure-popup.svg b/src/style/calcite-web/img/icons/ui/configure-popup.svg
deleted file mode 100644
index 5a4e453..0000000
--- a/src/style/calcite-web/img/icons/ui/configure-popup.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/contact.svg b/src/style/calcite-web/img/icons/ui/contact.svg
deleted file mode 100644
index 68ffbd0..0000000
--- a/src/style/calcite-web/img/icons/ui/contact.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/dashboard.svg b/src/style/calcite-web/img/icons/ui/dashboard.svg
deleted file mode 100644
index 0ffb756..0000000
--- a/src/style/calcite-web/img/icons/ui/dashboard.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/deny.svg b/src/style/calcite-web/img/icons/ui/deny.svg
deleted file mode 100644
index 60120bb..0000000
--- a/src/style/calcite-web/img/icons/ui/deny.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/description.svg b/src/style/calcite-web/img/icons/ui/description.svg
deleted file mode 100644
index 8ac5e9e..0000000
--- a/src/style/calcite-web/img/icons/ui/description.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/directions.svg b/src/style/calcite-web/img/icons/ui/directions.svg
deleted file mode 100644
index 95ecde9..0000000
--- a/src/style/calcite-web/img/icons/ui/directions.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/directions2.svg b/src/style/calcite-web/img/icons/ui/directions2.svg
deleted file mode 100644
index 1aedee5..0000000
--- a/src/style/calcite-web/img/icons/ui/directions2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/dock-bottom.svg b/src/style/calcite-web/img/icons/ui/dock-bottom.svg
deleted file mode 100644
index 29635e4..0000000
--- a/src/style/calcite-web/img/icons/ui/dock-bottom.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/dock-left.svg b/src/style/calcite-web/img/icons/ui/dock-left.svg
deleted file mode 100644
index 410d0af..0000000
--- a/src/style/calcite-web/img/icons/ui/dock-left.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/dock-right.svg b/src/style/calcite-web/img/icons/ui/dock-right.svg
deleted file mode 100644
index 71892f1..0000000
--- a/src/style/calcite-web/img/icons/ui/dock-right.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/documentation.svg b/src/style/calcite-web/img/icons/ui/documentation.svg
deleted file mode 100644
index 5fd65e7..0000000
--- a/src/style/calcite-web/img/icons/ui/documentation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/down-arrow-circled.svg b/src/style/calcite-web/img/icons/ui/down-arrow-circled.svg
deleted file mode 100644
index 8de21c3..0000000
--- a/src/style/calcite-web/img/icons/ui/down-arrow-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/down-arrow.svg b/src/style/calcite-web/img/icons/ui/down-arrow.svg
deleted file mode 100644
index afe34ba..0000000
--- a/src/style/calcite-web/img/icons/ui/down-arrow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/down.svg b/src/style/calcite-web/img/icons/ui/down.svg
deleted file mode 100644
index 48b2327..0000000
--- a/src/style/calcite-web/img/icons/ui/down.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/download.svg b/src/style/calcite-web/img/icons/ui/download.svg
deleted file mode 100644
index 6346155..0000000
--- a/src/style/calcite-web/img/icons/ui/download.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/drag-horizontal.svg b/src/style/calcite-web/img/icons/ui/drag-horizontal.svg
deleted file mode 100644
index 8bb07a1..0000000
--- a/src/style/calcite-web/img/icons/ui/drag-horizontal.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/drag-vertical.svg b/src/style/calcite-web/img/icons/ui/drag-vertical.svg
deleted file mode 100644
index cf5cd3a..0000000
--- a/src/style/calcite-web/img/icons/ui/drag-vertical.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/duplicate.svg b/src/style/calcite-web/img/icons/ui/duplicate.svg
deleted file mode 100644
index fe78b5e..0000000
--- a/src/style/calcite-web/img/icons/ui/duplicate.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/edit.svg b/src/style/calcite-web/img/icons/ui/edit.svg
deleted file mode 100644
index 7629582..0000000
--- a/src/style/calcite-web/img/icons/ui/edit.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/end.svg b/src/style/calcite-web/img/icons/ui/end.svg
deleted file mode 100644
index 129e30b..0000000
--- a/src/style/calcite-web/img/icons/ui/end.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/environment-settings.svg b/src/style/calcite-web/img/icons/ui/environment-settings.svg
deleted file mode 100644
index 744d4bf..0000000
--- a/src/style/calcite-web/img/icons/ui/environment-settings.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/erase.svg b/src/style/calcite-web/img/icons/ui/erase.svg
deleted file mode 100644
index a9cc17a..0000000
--- a/src/style/calcite-web/img/icons/ui/erase.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/error.svg b/src/style/calcite-web/img/icons/ui/error.svg
deleted file mode 100644
index 9d872c5..0000000
--- a/src/style/calcite-web/img/icons/ui/error.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/error2.svg b/src/style/calcite-web/img/icons/ui/error2.svg
deleted file mode 100644
index 48a961b..0000000
--- a/src/style/calcite-web/img/icons/ui/error2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/expand.svg b/src/style/calcite-web/img/icons/ui/expand.svg
deleted file mode 100644
index efc05d4..0000000
--- a/src/style/calcite-web/img/icons/ui/expand.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/experimental.svg b/src/style/calcite-web/img/icons/ui/experimental.svg
deleted file mode 100644
index 4a811bb..0000000
--- a/src/style/calcite-web/img/icons/ui/experimental.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/favorites.svg b/src/style/calcite-web/img/icons/ui/favorites.svg
deleted file mode 100644
index 2758821..0000000
--- a/src/style/calcite-web/img/icons/ui/favorites.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/feature-layer.svg b/src/style/calcite-web/img/icons/ui/feature-layer.svg
deleted file mode 100644
index 6c6eae7..0000000
--- a/src/style/calcite-web/img/icons/ui/feature-layer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/filter.svg b/src/style/calcite-web/img/icons/ui/filter.svg
deleted file mode 100644
index b80ddfc..0000000
--- a/src/style/calcite-web/img/icons/ui/filter.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/forward.svg b/src/style/calcite-web/img/icons/ui/forward.svg
deleted file mode 100644
index 78977b0..0000000
--- a/src/style/calcite-web/img/icons/ui/forward.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/globe.svg b/src/style/calcite-web/img/icons/ui/globe.svg
deleted file mode 100644
index 4de5338..0000000
--- a/src/style/calcite-web/img/icons/ui/globe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/grant.svg b/src/style/calcite-web/img/icons/ui/grant.svg
deleted file mode 100644
index e17b478..0000000
--- a/src/style/calcite-web/img/icons/ui/grant.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/grid.svg b/src/style/calcite-web/img/icons/ui/grid.svg
deleted file mode 100644
index 9908d4d..0000000
--- a/src/style/calcite-web/img/icons/ui/grid.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/group.svg b/src/style/calcite-web/img/icons/ui/group.svg
deleted file mode 100644
index 012c287..0000000
--- a/src/style/calcite-web/img/icons/ui/group.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/handle-horizontal.svg b/src/style/calcite-web/img/icons/ui/handle-horizontal.svg
deleted file mode 100644
index 4883c41..0000000
--- a/src/style/calcite-web/img/icons/ui/handle-horizontal.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/handle-vertical.svg b/src/style/calcite-web/img/icons/ui/handle-vertical.svg
deleted file mode 100644
index 811ec09..0000000
--- a/src/style/calcite-web/img/icons/ui/handle-vertical.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/home.svg b/src/style/calcite-web/img/icons/ui/home.svg
deleted file mode 100644
index 2b03630..0000000
--- a/src/style/calcite-web/img/icons/ui/home.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/key.svg b/src/style/calcite-web/img/icons/ui/key.svg
deleted file mode 100644
index 7c8d524..0000000
--- a/src/style/calcite-web/img/icons/ui/key.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/labels.svg b/src/style/calcite-web/img/icons/ui/labels.svg
deleted file mode 100644
index 67307f5..0000000
--- a/src/style/calcite-web/img/icons/ui/labels.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/layer-list.svg b/src/style/calcite-web/img/icons/ui/layer-list.svg
deleted file mode 100644
index 66133c8..0000000
--- a/src/style/calcite-web/img/icons/ui/layer-list.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/layers.svg b/src/style/calcite-web/img/icons/ui/layers.svg
deleted file mode 100644
index ff9de57..0000000
--- a/src/style/calcite-web/img/icons/ui/layers.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/left-arrow-circled.svg b/src/style/calcite-web/img/icons/ui/left-arrow-circled.svg
deleted file mode 100644
index 11af879..0000000
--- a/src/style/calcite-web/img/icons/ui/left-arrow-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/left-arrow.svg b/src/style/calcite-web/img/icons/ui/left-arrow.svg
deleted file mode 100644
index 85e8917..0000000
--- a/src/style/calcite-web/img/icons/ui/left-arrow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/left-triangle-arrow.svg b/src/style/calcite-web/img/icons/ui/left-triangle-arrow.svg
deleted file mode 100644
index e2884d0..0000000
--- a/src/style/calcite-web/img/icons/ui/left-triangle-arrow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/left.svg b/src/style/calcite-web/img/icons/ui/left.svg
deleted file mode 100644
index 8d184f8..0000000
--- a/src/style/calcite-web/img/icons/ui/left.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/line-chart.svg b/src/style/calcite-web/img/icons/ui/line-chart.svg
deleted file mode 100644
index 51b2bf2..0000000
--- a/src/style/calcite-web/img/icons/ui/line-chart.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/link-external.svg b/src/style/calcite-web/img/icons/ui/link-external.svg
deleted file mode 100644
index 279a62b..0000000
--- a/src/style/calcite-web/img/icons/ui/link-external.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/link.svg b/src/style/calcite-web/img/icons/ui/link.svg
deleted file mode 100644
index 1b78855..0000000
--- a/src/style/calcite-web/img/icons/ui/link.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/loading-indicator.svg b/src/style/calcite-web/img/icons/ui/loading-indicator.svg
deleted file mode 100644
index 3aa729c..0000000
--- a/src/style/calcite-web/img/icons/ui/loading-indicator.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/locate.svg b/src/style/calcite-web/img/icons/ui/locate.svg
deleted file mode 100644
index 187c7fc..0000000
--- a/src/style/calcite-web/img/icons/ui/locate.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/locked.svg b/src/style/calcite-web/img/icons/ui/locked.svg
deleted file mode 100644
index 9bf540a..0000000
--- a/src/style/calcite-web/img/icons/ui/locked.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/map-pin.svg b/src/style/calcite-web/img/icons/ui/map-pin.svg
deleted file mode 100644
index 818cd99..0000000
--- a/src/style/calcite-web/img/icons/ui/map-pin.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/maps.svg b/src/style/calcite-web/img/icons/ui/maps.svg
deleted file mode 100644
index 9d31053..0000000
--- a/src/style/calcite-web/img/icons/ui/maps.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/marketplace.svg b/src/style/calcite-web/img/icons/ui/marketplace.svg
deleted file mode 100644
index 07689cb..0000000
--- a/src/style/calcite-web/img/icons/ui/marketplace.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/maximize.svg b/src/style/calcite-web/img/icons/ui/maximize.svg
deleted file mode 100644
index 2193a3c..0000000
--- a/src/style/calcite-web/img/icons/ui/maximize.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/media.svg b/src/style/calcite-web/img/icons/ui/media.svg
deleted file mode 100644
index 0706a78..0000000
--- a/src/style/calcite-web/img/icons/ui/media.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/media2.svg b/src/style/calcite-web/img/icons/ui/media2.svg
deleted file mode 100644
index 5d0c7d5..0000000
--- a/src/style/calcite-web/img/icons/ui/media2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/menu.svg b/src/style/calcite-web/img/icons/ui/menu.svg
deleted file mode 100644
index b291740..0000000
--- a/src/style/calcite-web/img/icons/ui/menu.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/minimize.svg b/src/style/calcite-web/img/icons/ui/minimize.svg
deleted file mode 100644
index 605e108..0000000
--- a/src/style/calcite-web/img/icons/ui/minimize.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/minus-circled.svg b/src/style/calcite-web/img/icons/ui/minus-circled.svg
deleted file mode 100644
index fa21fda..0000000
--- a/src/style/calcite-web/img/icons/ui/minus-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/minus.svg b/src/style/calcite-web/img/icons/ui/minus.svg
deleted file mode 100644
index 9816c27..0000000
--- a/src/style/calcite-web/img/icons/ui/minus.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/mobile.svg b/src/style/calcite-web/img/icons/ui/mobile.svg
deleted file mode 100644
index c197baf..0000000
--- a/src/style/calcite-web/img/icons/ui/mobile.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/navigation.svg b/src/style/calcite-web/img/icons/ui/navigation.svg
deleted file mode 100644
index c7740eb..0000000
--- a/src/style/calcite-web/img/icons/ui/navigation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/notice-round.svg b/src/style/calcite-web/img/icons/ui/notice-round.svg
deleted file mode 100644
index 31b171a..0000000
--- a/src/style/calcite-web/img/icons/ui/notice-round.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/notice-triangle.svg b/src/style/calcite-web/img/icons/ui/notice-triangle.svg
deleted file mode 100644
index 3fb7364..0000000
--- a/src/style/calcite-web/img/icons/ui/notice-triangle.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/organization.svg b/src/style/calcite-web/img/icons/ui/organization.svg
deleted file mode 100644
index 2fe94da..0000000
--- a/src/style/calcite-web/img/icons/ui/organization.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/overview-arrow-bottom-left.svg b/src/style/calcite-web/img/icons/ui/overview-arrow-bottom-left.svg
deleted file mode 100644
index c51d07b..0000000
--- a/src/style/calcite-web/img/icons/ui/overview-arrow-bottom-left.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/overview-arrow-bottom-right.svg b/src/style/calcite-web/img/icons/ui/overview-arrow-bottom-right.svg
deleted file mode 100644
index e36aa63..0000000
--- a/src/style/calcite-web/img/icons/ui/overview-arrow-bottom-right.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/overview-arrow-top-left.svg b/src/style/calcite-web/img/icons/ui/overview-arrow-top-left.svg
deleted file mode 100644
index 33d4721..0000000
--- a/src/style/calcite-web/img/icons/ui/overview-arrow-top-left.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/overview-arrow-top-right.svg b/src/style/calcite-web/img/icons/ui/overview-arrow-top-right.svg
deleted file mode 100644
index 5be520a..0000000
--- a/src/style/calcite-web/img/icons/ui/overview-arrow-top-right.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/pan.svg b/src/style/calcite-web/img/icons/ui/pan.svg
deleted file mode 100644
index 835da43..0000000
--- a/src/style/calcite-web/img/icons/ui/pan.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/pause.svg b/src/style/calcite-web/img/icons/ui/pause.svg
deleted file mode 100644
index f85cbe1..0000000
--- a/src/style/calcite-web/img/icons/ui/pause.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/phone.svg b/src/style/calcite-web/img/icons/ui/phone.svg
deleted file mode 100644
index b285811..0000000
--- a/src/style/calcite-web/img/icons/ui/phone.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/pie-chart.svg b/src/style/calcite-web/img/icons/ui/pie-chart.svg
deleted file mode 100644
index f5dab10..0000000
--- a/src/style/calcite-web/img/icons/ui/pie-chart.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/play.svg b/src/style/calcite-web/img/icons/ui/play.svg
deleted file mode 100644
index 6618416..0000000
--- a/src/style/calcite-web/img/icons/ui/play.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/plus-circled.svg b/src/style/calcite-web/img/icons/ui/plus-circled.svg
deleted file mode 100644
index 376fba0..0000000
--- a/src/style/calcite-web/img/icons/ui/plus-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/plus.svg b/src/style/calcite-web/img/icons/ui/plus.svg
deleted file mode 100644
index 2dd81d2..0000000
--- a/src/style/calcite-web/img/icons/ui/plus.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/printer.svg b/src/style/calcite-web/img/icons/ui/printer.svg
deleted file mode 100644
index 8c775d6..0000000
--- a/src/style/calcite-web/img/icons/ui/printer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/question.svg b/src/style/calcite-web/img/icons/ui/question.svg
deleted file mode 100644
index f28df3f..0000000
--- a/src/style/calcite-web/img/icons/ui/question.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/radio-checked.svg b/src/style/calcite-web/img/icons/ui/radio-checked.svg
deleted file mode 100644
index bdb6bf4..0000000
--- a/src/style/calcite-web/img/icons/ui/radio-checked.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/radio-unchecked.svg b/src/style/calcite-web/img/icons/ui/radio-unchecked.svg
deleted file mode 100644
index 5c68969..0000000
--- a/src/style/calcite-web/img/icons/ui/radio-unchecked.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/refresh.svg b/src/style/calcite-web/img/icons/ui/refresh.svg
deleted file mode 100644
index e8efbf2..0000000
--- a/src/style/calcite-web/img/icons/ui/refresh.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/resend-invitation.svg b/src/style/calcite-web/img/icons/ui/resend-invitation.svg
deleted file mode 100644
index 6f79ee1..0000000
--- a/src/style/calcite-web/img/icons/ui/resend-invitation.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/reverse.svg b/src/style/calcite-web/img/icons/ui/reverse.svg
deleted file mode 100644
index 429da57..0000000
--- a/src/style/calcite-web/img/icons/ui/reverse.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/review.svg b/src/style/calcite-web/img/icons/ui/review.svg
deleted file mode 100644
index 8ec5c40..0000000
--- a/src/style/calcite-web/img/icons/ui/review.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/right-arrow-circled.svg b/src/style/calcite-web/img/icons/ui/right-arrow-circled.svg
deleted file mode 100644
index 87494de..0000000
--- a/src/style/calcite-web/img/icons/ui/right-arrow-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/right-arrow.svg b/src/style/calcite-web/img/icons/ui/right-arrow.svg
deleted file mode 100644
index 30ff3c2..0000000
--- a/src/style/calcite-web/img/icons/ui/right-arrow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/right-triangle-arrow.svg b/src/style/calcite-web/img/icons/ui/right-triangle-arrow.svg
deleted file mode 100644
index 281586a..0000000
--- a/src/style/calcite-web/img/icons/ui/right-triangle-arrow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/right.svg b/src/style/calcite-web/img/icons/ui/right.svg
deleted file mode 100644
index ba1fa02..0000000
--- a/src/style/calcite-web/img/icons/ui/right.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/rotate.svg b/src/style/calcite-web/img/icons/ui/rotate.svg
deleted file mode 100644
index 8ba09aa..0000000
--- a/src/style/calcite-web/img/icons/ui/rotate.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/save.svg b/src/style/calcite-web/img/icons/ui/save.svg
deleted file mode 100644
index 02088e4..0000000
--- a/src/style/calcite-web/img/icons/ui/save.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/search.svg b/src/style/calcite-web/img/icons/ui/search.svg
deleted file mode 100644
index 482a55c..0000000
--- a/src/style/calcite-web/img/icons/ui/search.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/settings.svg b/src/style/calcite-web/img/icons/ui/settings.svg
deleted file mode 100644
index f338e02..0000000
--- a/src/style/calcite-web/img/icons/ui/settings.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/settings2.svg b/src/style/calcite-web/img/icons/ui/settings2.svg
deleted file mode 100644
index 4c0b2b1..0000000
--- a/src/style/calcite-web/img/icons/ui/settings2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/share.svg b/src/style/calcite-web/img/icons/ui/share.svg
deleted file mode 100644
index 029411b..0000000
--- a/src/style/calcite-web/img/icons/ui/share.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/sign-out.svg b/src/style/calcite-web/img/icons/ui/sign-out.svg
deleted file mode 100644
index c48a95c..0000000
--- a/src/style/calcite-web/img/icons/ui/sign-out.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/sort-ascending.svg b/src/style/calcite-web/img/icons/ui/sort-ascending.svg
deleted file mode 100644
index 39bd585..0000000
--- a/src/style/calcite-web/img/icons/ui/sort-ascending.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/sort-descending.svg b/src/style/calcite-web/img/icons/ui/sort-descending.svg
deleted file mode 100644
index f8d85f4..0000000
--- a/src/style/calcite-web/img/icons/ui/sort-descending.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/support.svg b/src/style/calcite-web/img/icons/ui/support.svg
deleted file mode 100644
index 437a973..0000000
--- a/src/style/calcite-web/img/icons/ui/support.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/table.svg b/src/style/calcite-web/img/icons/ui/table.svg
deleted file mode 100644
index daaaf10..0000000
--- a/src/style/calcite-web/img/icons/ui/table.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/tag.svg b/src/style/calcite-web/img/icons/ui/tag.svg
deleted file mode 100644
index 112addd..0000000
--- a/src/style/calcite-web/img/icons/ui/tag.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/time-clock.svg b/src/style/calcite-web/img/icons/ui/time-clock.svg
deleted file mode 100644
index 649ac80..0000000
--- a/src/style/calcite-web/img/icons/ui/time-clock.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/trash.svg b/src/style/calcite-web/img/icons/ui/trash.svg
deleted file mode 100644
index 990ec68..0000000
--- a/src/style/calcite-web/img/icons/ui/trash.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/unlocked.svg b/src/style/calcite-web/img/icons/ui/unlocked.svg
deleted file mode 100644
index 9aa814c..0000000
--- a/src/style/calcite-web/img/icons/ui/unlocked.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/up-arrow-circled.svg b/src/style/calcite-web/img/icons/ui/up-arrow-circled.svg
deleted file mode 100644
index 067aae2..0000000
--- a/src/style/calcite-web/img/icons/ui/up-arrow-circled.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/up-arrow.svg b/src/style/calcite-web/img/icons/ui/up-arrow.svg
deleted file mode 100644
index a9f40bc..0000000
--- a/src/style/calcite-web/img/icons/ui/up-arrow.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/up-down-arrows.svg b/src/style/calcite-web/img/icons/ui/up-down-arrows.svg
deleted file mode 100644
index 859023e..0000000
--- a/src/style/calcite-web/img/icons/ui/up-down-arrows.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/up.svg b/src/style/calcite-web/img/icons/ui/up.svg
deleted file mode 100644
index 1bc7d32..0000000
--- a/src/style/calcite-web/img/icons/ui/up.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/upload.svg b/src/style/calcite-web/img/icons/ui/upload.svg
deleted file mode 100644
index 49955ac..0000000
--- a/src/style/calcite-web/img/icons/ui/upload.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/user.svg b/src/style/calcite-web/img/icons/ui/user.svg
deleted file mode 100644
index bc14d95..0000000
--- a/src/style/calcite-web/img/icons/ui/user.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/zoom-in-fixed.svg b/src/style/calcite-web/img/icons/ui/zoom-in-fixed.svg
deleted file mode 100644
index ed1c83d..0000000
--- a/src/style/calcite-web/img/icons/ui/zoom-in-fixed.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/zoom-in-magnifying-glass.svg b/src/style/calcite-web/img/icons/ui/zoom-in-magnifying-glass.svg
deleted file mode 100644
index 698a2bf..0000000
--- a/src/style/calcite-web/img/icons/ui/zoom-in-magnifying-glass.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/zoom-out-fixed.svg b/src/style/calcite-web/img/icons/ui/zoom-out-fixed.svg
deleted file mode 100644
index 229fbc7..0000000
--- a/src/style/calcite-web/img/icons/ui/zoom-out-fixed.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/icons/ui/zoom-out-magnifying-glass.svg b/src/style/calcite-web/img/icons/ui/zoom-out-magnifying-glass.svg
deleted file mode 100644
index 706f512..0000000
--- a/src/style/calcite-web/img/icons/ui/zoom-out-magnifying-glass.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/style/calcite-web/img/loader-ie9.gif b/src/style/calcite-web/img/loader-ie9.gif
deleted file mode 100644
index e803275..0000000
Binary files a/src/style/calcite-web/img/loader-ie9.gif and /dev/null differ
diff --git a/src/style/calcite-web/img/logo/esri-logo-reversed.svg b/src/style/calcite-web/img/logo/esri-logo-reversed.svg
deleted file mode 100644
index efc5826..0000000
--- a/src/style/calcite-web/img/logo/esri-logo-reversed.svg
+++ /dev/null
@@ -1,255 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/style/calcite-web/img/logo/esri-logo.svg b/src/style/calcite-web/img/logo/esri-logo.svg
deleted file mode 100644
index fcd67d9..0000000
--- a/src/style/calcite-web/img/logo/esri-logo.svg
+++ /dev/null
@@ -1,255 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/style/index.css b/src/style/index.css
index d924691..48b29f7 100644
--- a/src/style/index.css
+++ b/src/style/index.css
@@ -2,7 +2,7 @@
@tailwind components;
@tailwind utilities;
-@import './calcite-web/css/calcite-web.min.css';
+/* @import './calcite-web/css/calcite-web.min.css'; */
@import './variables.css';
@import './customized-modal.css';
@import './customized-tooltip.css';
@@ -48,4 +48,12 @@ a {
input, textarea {
@apply text-gray-600 text-sm px-1;
+}
+
+svg.with-drop-shadow {
+ filter: drop-shadow(0px 0px 8px #000000);
+}
+
+.disabled {
+ @apply pointer-events-none opacity-50;
}
\ No newline at end of file
diff --git a/src/types/calcite-components.d.ts b/src/types/calcite-components.d.ts
index 68f4182..fab936c 100644
--- a/src/types/calcite-components.d.ts
+++ b/src/types/calcite-components.d.ts
@@ -24,5 +24,6 @@ declare namespace React.JSX {
'calcite-icon': any;
'calcite-button': any;
'calcite-slider': any;
+ 'calcite-switch': any;
}
}
diff --git a/src/types/index.d.ts b/src/types/index.d.ts
index 7fb67ed..45f3c01 100644
--- a/src/types/index.d.ts
+++ b/src/types/index.d.ts
@@ -83,6 +83,10 @@ interface IWaybackMetadataQueryResult {
resolution: number;
accuracy: number;
releaseDate?: string;
+ queryLocation: {
+ longitude: number;
+ latitude: number;
+ };
}
interface IScreenPoint {
diff --git a/src/utils/UrlSearchParam/index.ts b/src/utils/UrlSearchParam/index.ts
index 815da8d..424bf69 100644
--- a/src/utils/UrlSearchParam/index.ts
+++ b/src/utils/UrlSearchParam/index.ts
@@ -132,12 +132,9 @@ const saveSwipeWidgetInfoInURLQueryParam: SaveSwipeWidgetInfoInURLQueryParam =
updateHashParams(key, value);
};
-const saveAnimationSpeedInURLQueryParam = (
- isAnimationOn: boolean,
- speed: number
-): void => {
+const saveAnimationSpeedInURLQueryParam = (speed?: number): void => {
const key: ParamKey = 'animationSpeed';
- const value = isAnimationOn ? speed.toString() : null;
+ const value = speed !== undefined ? speed.toString() : null;
updateHashParams(key, value);
};
diff --git a/src/components/ShareDialog/config.ts b/src/utils/snippets/delay.ts
similarity index 66%
rename from src/components/ShareDialog/config.ts
rename to src/utils/snippets/delay.ts
index 1629a4c..a2b3a45 100644
--- a/src/components/ShareDialog/config.ts
+++ b/src/utils/snippets/delay.ts
@@ -13,10 +13,8 @@
* limitations under the License.
*/
-export default {
- 'modal-id': 'share',
- 'github-repo-url': 'https://github.com/vannizhang/wayback',
- title: 'World Imagery Wayback',
- description:
- 'Wayback is a digital archive, providing users with access to the different versions of World Imagery created over time.',
+export const delay = (milliseconds: number): Promise => {
+ return new Promise((resolve) => {
+ setTimeout(resolve, milliseconds);
+ });
};
diff --git a/src/utils/snippets/downloadBlob.ts b/src/utils/snippets/downloadBlob.ts
new file mode 100644
index 0000000..ea821d9
--- /dev/null
+++ b/src/utils/snippets/downloadBlob.ts
@@ -0,0 +1,29 @@
+/* Copyright 2024 Esri
+ *
+ * Licensed under the Apache License Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export const downloadBlob = (blob: Blob, outputFileName: string): void => {
+ // const blob = new Blob(chunks, { type: 'video/webm' });
+ const url = window.URL.createObjectURL(blob);
+ const a = document.createElement('a');
+ a.style.display = 'none';
+ a.href = url;
+ a.download = outputFileName; //'test.webm';
+ document.body.appendChild(a);
+ a.click();
+ setTimeout(() => {
+ document.body.removeChild(a);
+ window.URL.revokeObjectURL(url);
+ }, 100);
+};
diff --git a/src/utils/snippets/getNormalizedExtent.ts b/src/utils/snippets/getNormalizedExtent.ts
new file mode 100644
index 0000000..c64ae46
--- /dev/null
+++ b/src/utils/snippets/getNormalizedExtent.ts
@@ -0,0 +1,32 @@
+/* Copyright 2024 Esri
+ *
+ * Licensed under the Apache License Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { Extent } from '@arcgis/core/geometry';
+
+/**
+ * Returns an Extent that's been shifted to within +/- 180.
+ * The map view's extent can go out of range after the user drags the map
+ * across the international date line.
+ *
+ * Therefore, normalizing the Extent is essential to ensure the coordinates are within the
+ * correct range. This function takes an Extent object as input and shifts it to ensure
+ * corrdinate values are within the range of -180 to +180 degrees (or equivelant projected values).
+ *
+ * @param extent - The Extent object representing the geographic area.
+ * @returns {Extent} - The normalized Extent object with longitude values within the range of +/- 180 degrees.
+ */
+export const getNormalizedExtent = (extent: Extent): Extent => {
+ return extent.clone().normalize()[0];
+};
diff --git a/src/components/ShareDialog/ShareDialogContainer.tsx b/src/utils/snippets/loadImage.ts
similarity index 50%
rename from src/components/ShareDialog/ShareDialogContainer.tsx
rename to src/utils/snippets/loadImage.ts
index 374c451..537aa45 100644
--- a/src/components/ShareDialog/ShareDialogContainer.tsx
+++ b/src/utils/snippets/loadImage.ts
@@ -13,29 +13,15 @@
* limitations under the License.
*/
-import React from 'react';
-
-import { useSelector, useDispatch } from 'react-redux';
-
-import {
- isShareModalOpenSelector,
- isShareModalOpenToggled,
-} from '@store/UI/reducer';
-
-import ShareDialog from './index';
-
-const ShareDialogContainer = () => {
- const isOpen = useSelector(isShareModalOpenSelector);
-
- const dispatch = useDispatch();
-
- const onCloseHandler = () => {
- dispatch(isShareModalOpenToggled());
- };
-
- return isOpen ? (
-
- ) : null;
+export const loadImageAsHTMLIMageElement = async (
+ imageURL: string
+): Promise => {
+ const image = new Image();
+ image.src = imageURL;
+
+ return new Promise((resolve) => {
+ image.onload = () => {
+ resolve(image);
+ };
+ });
};
-
-export default ShareDialogContainer;
diff --git a/tailwind.config.js b/tailwind.config.js
index 5682f5f..53113ba 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -17,9 +17,16 @@ module.exports = {
'theme': {
'blue': {
DEFAULT: '#2267AE',
+ 'brand': '#0079c1',
'light': '#56a5d8',
'dark': '#1A3D60'
}
+ },
+ 'background': {
+ DEFAULT: '#121212'
+ },
+ 'foreground': {
+ DEFAULT: '#ccc'
}
}
},